私はスパークするのが初めてです。これで、yarn(2.0.0-cdh4.2.1)でspark 0.9.1を実行できます。しかし、実行後のログはありません。
次のコマンドを使用してspark=の例を実行します。ただし、通常のMapReduceジョブのようにログは履歴サーバーに見つかりません。
SPARK_JAR=./Assembly/target/scala-2.10/spark-Assembly-0.9.1-hadoop2.0.0-cdh4.2.1.jar \
./bin/spark-class org.Apache.spark.deploy.yarn.Client --jar ./spark-example-1.0.0.jar \
--class SimpleApp --args yarn-standalone --num-workers 3 --master-memory 1g \
--worker-memory 1g --worker-cores 1
logs/stderr/stdoutはどこにありますか?
構成を設定する場所はありますか?コンソールからの出力を見つけました:
14/04/14 18:51:52 INFOクライアント:ApplicationMasterのコマンド:$ Java_HOME/bin/Java -server -Xmx640m -Djava.io.tmpdir = $ PWD/tmp org.Apache.spark.deploy.yarn.ApplicationMaster --class SimpleApp --jar ./spark-example-1.0.0.jar --args 'yarn-standalone' --worker-memory 1024 --worker-cores 1 --num-workers 3 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr
この行では、1> $LOG_DIR/stdout 2> $LOG_DIR/stderr
LOG_DIRはどこに設定できますか?
この質問のかなりの記事:
Running Spark on YARN -「アプリケーションのデバッグ」のセクションを参照してください。必要なすべての例についてのきちんとした説明。
Sparkで正常に動作する履歴サーバーを取得するために従う必要があるのは、アプリケーションのSparkコンテキストを閉じることです。それ以外の場合、アプリケーション履歴サーバーは完全に表示され、何も表示されません(履歴UIにはアクセスできますが、表示されません)。
コマンドを介してログにアクセスできます
yarn logs -applicationId <application ID> [OPTIONS]
一般的なオプションは次のとおりです。
appOwner <Application Owner>
-AppOwner(指定されていない場合は現在のユーザーと見なされます)containerId <Container ID>
-ContainerId(ノードアドレスを指定する場合は指定する必要があります)nodeAddress <Node Address>
-nodename:port
形式のNodeAddress(コンテナIDを指定する場合は指定する必要があります)例:
yarn logs -applicationId application_1414530900704_0003
yarn logs -applicationId application_1414530900704_0003 myuserid
// the user ids are different
yarn logs -applicationId <appid> --appOwner <userid>
答えはどれもログをどこで探すべきかを明確にするものではありません(それらはバラバラになります)ので、私はそれをまとめています。
ログの集計がオンになっている場合(yarn.log-aggregation-enable yarn-site.xmlを使用)、これを行います
yarn logs -applicationId <app ID>
ただし、これがオンになっていない場合は、Data-Nodeマシンにアクセスして、
$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/
application_1474886780074_XXXXはアプリケーションIDです
次のログに記録します。
/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout
ログは、Spark=ジョブが実行されるすべてのノードにあります。