2014-07-04 299 views
6

我正在運行spark-1.0.0,方法是連接到具有一個主站和兩個從站的spark獨立羣集。我通過Spark-submit運行wordcount.py,實際上它從HDFS讀取數據並將結果寫入HDFS。到目前爲止,一切都很好,結果將正確寫入HDFS。但事情讓我擔心的是,當我檢查每個工人的Stdout,它是空的我不知道它是否應該是空的?和我按照標準錯誤:對於某些Apache Spark Stderr和Stdout

標準錯誤日誌頁面(APP-20140704174955-0002)

Spark 
Executor Command: "java" "-cp" ":: 
/usr/local/spark-1.0.0/conf: 
/usr/local/spark-1.0.0 
/assembly/target/scala-2.10/spark-assembly-1.0.0-hadoop1.2.1.jar:/usr/local/hadoop/conf" " 
-XX:MaxPermSize=128m" "-Xms512M" "-Xmx512M" "org.apache.spark.executor.CoarseGrainedExecutorBackend 
" "akka.tcp://[email protected]:54477/user/CoarseGrainedScheduler" "0" "slave2" "1 
" "akka.tcp://[email protected]:41483/user/Worker" "app-20140704174955-0002" 
======================================== 


14/07/04 17:50:14 ERROR CoarseGrainedExecutorBackend: 
Driver Disassociated [akka.tcp://[email protected]:33758] -> 
[akka.tcp://[email protected]:54477] disassociated! Shutting down. 
+0

這是可行的。您的驅動程序已完成其工作(字數)並斷開連接。 – cloud

+0

標準輸出如何,它是空的,這有意義嗎? – user3789843

回答

8

星火總是寫的一切,甚至INFO到stderr。人們似乎這樣做是爲了阻止標準輸出緩衝消息並導致較少的可預測日誌記錄。當知道某個應用程序永遠不會用於bash腳本時,這是一種可接受的做法,因此日誌記錄尤其常見。

+0

謝謝你的迴應 - 我還有一個關於ReduceBykey的問題。實際上,我想知道使用這種方法將涉及多少個從節點?它將取決於我們設定的減少任務參數的減少數量? – user3789843

+0

所有節點都將被使用,前提是您擁有的分區總數多於您的內核總數。建議您每個核心至少有2-4個分區。如果你的數據已經被分割成合適的數字,那麼就不需要將這個參數傳遞給reduceByKey方法。 – samthebest

+1

@samthebest - 你是說所有的火花輸出都變成了stderr嗎?我在spark map函數中做了一個簡單的「print()」,當我查看從屬機器上的日誌文件時,我在stderr中看到打印輸出,但沒有看到標準輸出。我的標準輸出是空的。我發現這很奇怪 - 如果它總是空的,那麼標準輸出有什麼意義呢? – user3240688

6

試試這個傳遞給火花log4j.properties(或修改下火花/ CONF默認配置)

# Log to stdout and stderr 
log4j.rootLogger=INFO, stdout, stderr 

# Send TRACE - INFO level to stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=TRACE 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.filter.filter1=org.apache.log4j.varia.LevelRangeFilter 
log4j.appender.stdout.filter.filter1.levelMin=TRACE 
log4j.appender.stdout.filter.filter1.levelMax=INFO 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

# Send WARN or higher to stderr 
log4j.appender.stderr=org.apache.log4j.ConsoleAppender 
log4j.appender.stderr.Threshold=WARN 
log4j.appender.stderr.Target =System.err 
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout 
log4j.appender.stderr.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

# Change this to set Spark log level 
log4j.logger.org.apache.spark=WARN 
log4j.logger.org.apache.spark.util=ERROR 

此外,在INFO級別所示的進度條被髮送到stderr。

禁用與

spark.ui.showConsoleProgress=false