2017-03-27 8 views
3

私たちはspark(spark 2.1.0スタンドアロン 2人で作業している人のグループで、プログラミングはscalaすべては で、いくつかのドッカーの中を走っています)。収集されたデータがある程度のサイズのキャップ に達すると、 "collect"または "take(n)"が非常に遅くなる問題が発生しました。sparkのMBサイズのデータ​​で "collect()"または "take(n)"に関する問題

我々はいくつかの場面で問題が発生したが、我々は単純な例に問題がダウン を煮ている:それは、ファイルを読み込む( ローカルファイルシステムからか、HDFSのいずれかから、我々は両方をテストした)、その後 結果を収集します。それは、ファイルの特定のサイズ(約2 MB)と までそれは非常に遅く(そして約3 MBそれが完全に壊れている)までうまく動作します。 が収集されない場合(たとえば、saveAsTextFileなど)、 は最大200 GBのファイルを処理できます。 ドライバメモリを10倍(2GBのRAMから20GBのRAMまで)増やしてテストしましたが、 は問題を解決していません。実際に私たちのテストでは、私たちの小さな実験である は、ドライバまたは作業者にどれくらいのRAMを割り当てても、同じサイズのファイルで遅くなることがわかりました。

私はここに私の実験にまとめています。プログラムは「N」 が徐々に増加すると、ファイル「S」と「取る(N)」を読み、この実験ではhttps://pastebin.com/raw/6yXztq0H

を。 timestamped出力が示すように、それはほぼ ""(これは実際にはセットアップの大きな変更にもかかわらず少しだけ変化します)の "n≦104145"で動作し、それはかなり遅いです。大きな "n"( セカンド実行を参照)の場合、ドライバは "TaskResultLost"エラーでクラッシュします。最後の 実験(3回目の実行)は、これがメモリ の問題ではないことを示しています(ファイルが比較的小さいため、論理的に見える、 約2 MB)。

(これは実験で示されたが、我々はまた、 SPARK_DAEMON_MEMと遊んだが、何も変更していないようですされていません。)

は、誰もがこれまでと同じ問題を抱えていますか?誰かに私たちがさらに検索するのを助けるアイデアはありますか?

答えて

0

は、[OK]を増やしてみてください、私たちは何が起こっているのホールドを得ることができました。ここでは、将来の参照のための問題の説明は次のとおりです。

  1. 収集したデータのサイズが十分に大きい場合には、ドライバが代わりにマスターを通過するの執行と直接対話します。だから私たちの問題は特定のサイズの後にしか現れません。

  2. 一部のエグゼキュータとドライバの間で、一部の接続が失敗するというネットワーク上の問題がありました。

0

すでにspark.driver.memory増加しようとしている場合は、spark.driver.maxResultSize

+0

ありがとうございます。私はこのパラメータを変更してテストしましたが、何も変更されていないようです:■https://pastebin.com/raw/qHVK0E1S – Louis

関連する問題