2014-04-14 100 views
29

我是新來的火花。現在我可以在紗線上運行0.9.1(2.0.0-cdh4.2.1)。但執行後沒有日誌。YARN上的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 /斌/ 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 - 工人芯1 --num工人3 1> <LOG_DIR> /標準輸出2> < LOG_DIR>/stderr的

在這一行,通知1> $LOG_DIR/stdout 2> $LOG_DIR/stderr

哪裏可以設置LOG_DIR?

回答

18

對於這個問題,漂亮的文章:

Running Spark on YARN - 參見 「調試應用程序」。所有必需的例子的體面的解釋。

您需要遵循才能正確使用Spark工作歷史記錄服務器的方法是在應用程序中關閉Spark上下文。否則,應用程序歷史記錄服務器不會將您視爲COMPLETE,並且不會顯示任何內容(儘管歷史UI可訪問但不可見)。

25

您可以通過命令來訪問日誌

yarn logs -applicationId <application ID> [OPTIONS]

常規選項爲: -appOwner AppOwner(假設如果沒有指定 當前用戶) -containerId數據筒(必須指定,如果節點 地址指定) -nodeAddress NodeAddress格式nodename:端口 (必須指定容器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> 
+8

這是隻有在'yarn-site.xml'中'yarn.log-aggregation-enable'爲'true'並且應用程序已經完成時才爲true。 – thSoft

+0

如何在代碼中獲取紗線上的applicationId? – nish1013

+0

集羣安全時,這不起作用。 – Sohaib

11

它記錄到:

/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout 

日誌是你的星火作業運行的每個節點上。

11

沒有一個答案能夠讓我們清楚在哪裏尋找原木(儘管它們是分塊的),所以我把它放在一起。

如果日誌聚合打開(使用yarn.log-aggregation-enabled yarn-site。XML),然後執行此

yarn logs -applicationId <app ID> 

但是,如果不打開,然後一個需要到達的數據節點的機器上,並期待在

$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/ 

application_1474886780074_XXXX是應用程序ID

+1

對於那些不知道如何獲取應用程序ID的人:使用 'yarn applications -list' –

+0

@ stefan.m,那將是'紗線應用-list'而不是'yarn applications -list' – iruvar

+0

而'紗線日誌-applicationId -log_files stdout'將只檢索標準輸出,如果這些都是你感興趣的:)。 – snark