0

8コアと50GBのメモリ(シングルワーカー)を持つ単一ノード上で動作するスタンドアロン・クラスタ2.1.0を起動します。スパーク・スタンドアロン・クラスタ・チューニング

私たちは、以下のメモリ設定とクラスタモードでスパークアプリケーションを実行 -

--driver-memory = 7GB (default - 1core is used) 
--worker-memory = 43GB (all remaining cores - 7 cores) 

は最近、我々は頻繁に運転/マスターによって殺害され、再起動ばかりエグゼキュータを観察しました。私はドライバのログの下に見つかりました -

17/12/14 03:29:39 WARN HeartbeatReceiver: Removing executor 2 with no recent heartbeats: 3658237 ms exceeds timeout 3600000 ms 
17/12/14 03:29:39 ERROR TaskSchedulerImpl: Lost executor 2 on 10.150.143.81: Executor heartbeat timed out after 3658237 ms 
17/12/14 03:29:39 WARN TaskSetManager: Lost task 23.0 in stage 316.0 (TID 9449, 10.150.143.81, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 3658237 ms 
17/12/14 03:29:39 WARN TaskSetManager: Lost task 9.0 in stage 318.0 (TID 9459, 10.150.143.81, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 3658237 ms 
17/12/14 03:29:39 WARN TaskSetManager: Lost task 8.0 in stage 318.0 (TID 9458, 10.150.143.81, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 3658237 ms 
17/12/14 03:29:39 WARN TaskSetManager: Lost task 5.0 in stage 318.0 (TID 9455, 10.150.143.81, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 3658237 ms 
17/12/14 03:29:39 WARN TaskSetManager: Lost task 7.0 in stage 318.0 (TID 9457, 10.150.143.81, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Executor heartbeat timed out after 3658237 ms 

アプリケーションはそれほどメモリ集約ではなく、いくつかの結合と書き込みデータセットがディレクトリにあります。同じコードがspark-shellで実行されますが、エラーは発生しません。

エグゼキュータが終了するのを減らすクラスタチューニングまたは構成設定を探します。

答えて

0

実行者にメモリの問題がある可能性があります。だから、spark-env.shファイルにエグゼキュータのメモリでコアを設定する必要があります。パス~/spark/conf/spark-env.shにあります: - あなたのメモリは合計50 GBです。

export SPARK_WORKER_CORES=8 
export SPARK_WORKER_INSTANCES=5 
export SPARK_WORKER_MEMORY=8G 
export SPARK_EXECUTOR_INSTANCES=2 

そして、あなたのデータを処理するにはあまりにも大きくない場合、uがspark-default.confで、ドライバメモリを設定することができます。 〜/ spark/conf/spark-default.conf`ファイルのexecutorにオーバーヘッドメモリをいくつか与えてください: -

spark.executor.memoryOverhead 1G 
spark.driver.memory 1G 
+0

私はあなたのクラスタ設定を取得しませんでした。単一のノードクラスタとして、SPARK_WORKER_INSTANCESは、私の場合ではないメモリリッチノードでなければ、1つの/ノードにすることができます。私はあなたの設定要求 - SPARK_WORKER_CORES * SPARK_WORKER_INSTANCES = 8 * 5 = 40コアが利用できないと思います。同様に私はここで助けていないと思ういくつかがあります。返信いただきありがとうございます。 – veerat

+0

Uには、エグゼキュータのメモリの問題があります。だから、実行者にオーバーヘッドメモリを与えてみてください。 –