web-dev-qa-db-ja.com

Spark YARNクライアントモードを使用しているときにエグゼキューターが失われるのを防ぐ方法は?

こんにちは私は1つを持っていますSpark少ないデータでローカルで実行するジョブですが、YARNで実行するようにスケジュールすると、次のエラーが発生し続け、ゆっくりとすべてのエグゼキューターがUIから削除され、ジョブが失敗します

15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 8 on myhost1.com: remote Rpc client disassociated
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 6 on myhost2.com: remote Rpc client disassociated

次のコマンドを使用して、spark yarn-clientモードのジョブをスケジュールします

 ./spark-submit --class com.xyz.MySpark --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-Java-options -XX:MaxPermSize=512m --driver-memory 3g --master yarn-client --executor-memory 2G --executor-cores 8 --num-executors 12  /home/myuser/myspark-1.0.jar

何が問題なのかわかりませんが、ご案内ください。 Sparkは初めてです。前もって感謝します。

42
u449355

私は非常に似た問題を抱えていました。どれだけのメモリを割り当てても、多くのエグゼキュータが失われました。

糸を使用している場合の解決策は、--conf spark.yarn.executor.memoryOverhead=600、またはクラスターがmesosを使用している場合は、--conf spark.mesos.executor.memoryOverhead=600代わりに。

spark 2.3.1+では、構成オプションは--conf spark.yarn.executor.memoryOverhead=600

YARN自体に十分なメモリを残しておらず、そのためにコンテナが殺されているようです。設定した後、メモリ不足エラーが発生しましたが、エグゼキューターの問題は失われていません。

31
whaleberg