2017-02-23 15 views
1

spark-submitコマンドを使用して、32コア、64 GBサーバでpysparkアプリケーションを実行しています。アプリケーションでjava.lang.OutOfMemoryErrorの取得:pysparkアプリケーションの送信時

ステップ:=負荷

  1. DF1 CSVファイルから500百万のデータセット(FIELD1、FIELD2、FIELD3、FIELD4)。

  2. df2 =(spark mongoアダプターを使用して)mongodbから500万エントリをロードします(field1、field2、field3)。

  3. 左(:Javaヒープスペースステップスロー例外java.lang.OutOfMemoryErrorをを):オペレーションに参加

    df_output = df1.join(DF2、 [ "フィールド1"、 "フィールド2"、 "FIELD3"]、 "left_outer")。select( "*")

  4. 追加モードでdf_outputを使用してmongoコレクションを更新しています。/spark-env.sh CONFに

構成:

  • SPARK_EXECUTOR_INSTANCES = 10
  • SPARK_EXECUTOR_CORES = 3
  • SPARK_EXECUTOR_MEMORY = 5ギガバイト
  • SPARK_WORKER_CORES = 30
  • SPARK_WORKER_MEMORY = 50ギガバイト

があり、さらにデフォルト値に設定されているパラメータがあります。

コマンドでマスターと1人のワーカーを設定します。最適なこのデータセットのパフォーマンスに加えて、どのように我々べきためのチューニング設定パラメータのための最善のアプローチがどうあるべきか

  • sbin/start-master.sh
  • /sbin/start-slave.sh master_ip

コマンドを使用してスクリプトを実行している

nohup bin/spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:2.0.0 --master master_ip ../test_scripts/test1.py > /logs/logs.out &

任意のデータセットに対して上記のパラメータを設定しますか?

答えて

0

メモリに問題が発生した場合は、考慮すべき点はほとんどありません。それに応じて以下のパラメータを設定してください。

spark.executor.memory = yarn.nodemanager.resource.memory-MB *(spark.executor.cores/yarn.nodemanager.resource.cpu-vcores)

spark.yarn.executor.memoryOverhead = 15 spark.executor.memoryの-20%

spark.sql.shuffle.output.partitionsパラメータを2000(デフォルトは200)以上に増やしてください。希望により、

関連する問題