私はスパーク/糸の初心者です。糸クラスターでsparkジョブを送信すると、exitCode = 13が実行されます。sparkジョブがローカルモードで実行されている場合、 すべて順調。
私が使用したコマンドは次のとおりです。
/usr/hdp/current/spark-client/bin/spark-submit --class com.test.sparkTest --master yarn --deploy-mode cluster --num-executors 40 --executor-cores 4 --driver-memory 17g --executor-memory 22g --files /usr/hdp/current/spark-client/conf/Hive-site.xml /home/user/sparkTest.jar*
スパークエラーログ:
16/04/12 17:59:30 INFO Client:
client token: N/A
diagnostics: Application application_1459460037715_23007 failed 2 times due to AM Container for appattempt_1459460037715_23007_000002 exited with exitCode: 13
For more detailed output, check application tracking page:http://b-r06f2-prod.phx2.cpe.net:8088/cluster/app/application_1459460037715_23007Then, click on links to logs of each attempt.
Diagnostics: Exception from container-launch.
Container id: container_e40_1459460037715_23007_02_000001
Exit code: 13
Stack trace: ExitCodeException exitCode=13:
at org.Apache.hadoop.util.Shell.runCommand(Shell.Java:576)
at org.Apache.hadoop.util.Shell.run(Shell.Java:487)
at org.Apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.Java:753)
at org.Apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.Java:211)
at org.Apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.Java:302)
at org.Apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.Java:82)
**Yarn logs**
16/04/12 23:55:35 INFO mapreduce.TableInputFormatBase: Input split length: 977 M bytes.
16/04/12 23:55:41 INFO yarn.ApplicationMaster: Waiting for spark context initialization ...
16/04/12 23:55:51 INFO yarn.ApplicationMaster: Waiting for spark context initialization ...
16/04/12 23:56:01 INFO yarn.ApplicationMaster: Waiting for spark context initialization ...
16/04/12 23:56:11 INFO yarn.ApplicationMaster: Waiting for spark context initialization ...
16/04/12 23:56:11 INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x152f0b4fc0e7488
16/04/12 23:56:11 INFO zookeeper.ZooKeeper: Session: 0x152f0b4fc0e7488 closed
16/04/12 23:56:11 INFO zookeeper.ClientCnxn: EventThread shut down
16/04/12 23:56:11 INFO executor.Executor: Finished task 0.0 in stage 1.0 (TID 2). 2003 bytes result sent to driver
16/04/12 23:56:11 INFO scheduler.TaskSetManager: Finished task 0.0 in stage 1.0 (TID 2) in 82134 ms on localhost (2/3)
16/04/12 23:56:17 INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x4508c270df0980316/04/12 23:56:17 INFO zookeeper.ZooKeeper: Session: 0x4508c270df09803 closed *
...
16/04/12 23:56:21 ERROR yarn.ApplicationMaster: SparkContext did not initialize after waiting for 100000 ms. Please check earlier log output for errors. Failing the application.
16/04/12 23:56:21 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 13, (reason: Timed out waiting for SparkContext.)
16/04/12 23:56:21 INFO spark.SparkContext: Invoking stop() from shutdown hook *
コードのマスターをローカルに設定しているようです
SparkConf.setMaster("local[*]")
マスターをコードで設定解除し、後でspark-submit
を発行するときに設定する必要があります
spark-submit --master yarn-client ...
それが誰かを助けるなら
このエラーの別の可能性は、誤って-class paramを入力した場合です
私はまったく同じ問題を抱えていましたが、上記の答えはうまくいきませんでした。または、これをspark-submit --deploy-mode client
で実行すると、すべてが正常に機能しました。
クラスターモードでSparkSQLジョブを実行すると、同じエラーが発生しました。他の解決策はどれもうまくいきませんでしたが、Hadoopのジョブ履歴サーバーログを調べたところ、このスタックトレースが見つかりました。
20/02/05 23:01:24 INFO Hive.metastore: Connected to metastore.
20/02/05 23:03:03 ERROR yarn.ApplicationMaster: Uncaught exception:
Java.util.concurrent.TimeoutException: Futures timed out after [100000 milliseconds]
at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:223)
at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:227)
at org.Apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:220)
at org.Apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:468)
at org.Apache.spark.deploy.yarn.ApplicationMaster.org$Apache$spark$deploy$yarn$ApplicationMaster$$runImpl(ApplicationMaster.scala:305)
at org.Apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$1.apply$mcV$sp(ApplicationMaster.scala:245)
at org.Apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$1.apply(ApplicationMaster.scala:245)
at org.Apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$1.apply(ApplicationMaster.scala:245)
...
そして Sparkソースコード を見ると、基本的にAMは、ユーザークラスを実行するスレッドによってspark.driver.port
プロパティが設定されるのを待ってタイムアウトになっていることがわかります。
そのため、一時的な問題であるか、タイムアウトの理由についてコードを調査する必要があります。