2016-03-02 98 views
1

我在獨立安裝(版本1.6.1)上運行Spark-streaming應用程序。當我使用spark-submit運行應用程序時,日誌顯示在終端上。例如,稍後這些內容很有用,可以瞭解應用程序失敗的原因,如果失敗。Spark Streaming Standalone:保存日誌

從我讀過的文檔中,我已將spark.eventLog.enabled標誌設置爲true。但是,這僅將事件日誌保存到tmp/spark-events文件夾。正如我所見,這些日誌對我來說沒有多大用處。由於許多例外,我的工作經常失敗。什麼是正確的方式來存儲這些日誌顯示在終端(我猜測,驅動程序日誌?)並分析我的異常?

回答

0

我添加這些行SPARK_HOME/CONF/log4j.properties

log4j.rootLogger=ERROR, file 
log4j.appender.file=org.apache.log4j.FileAppender 
log4j.appender.file.File=/tmp/application.log 
log4j.appender.file.append=false 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

任何log4j的附加器都可以使用。我在這裏使用文件appender。

P.S不過,stdout日誌丟失了。只有stderr日誌正在保存。但要弄清楚爲什麼。

1

如果您只想記錄發生在驅動程序一側的事件,最簡單的方法是爲spark提供一個日誌記錄配置文件。默認情況下,火花塞使用log4j做記錄,所以開始你的火花提交作業時,您可以使用spark.driver.extraJavaOptions標誌在你的log4j的配置通過,並添加RollingFileAppender到它:

spark.driver.extraJavaOptions=-Dlog4j.configuration=/path/to/your/log4j.xml 

這是一個對log4j的-1.2滾動的appender XML基本格局:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="log.txt" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="100KB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="log4j.rootLogger" additivity="false"> 
    <level value="DEBUG"/> 
    <appender-ref ref="RollingFileAppender"/> 
</logger> 
</log4j:configuration> 

你可以找到在火花文檔的Spark Configuration部分的更多信息。

如果您還想記錄發生在驅動程序節點上的事件,那麼我建議您查看可以從分佈式系統收集日誌的外部服務。

+0

感謝您的回覆!我沒有機會測試這個。將盡快回復 – void

+0

嘿,我只是試過這個,並在最後得到了許多log4j:WARN語句:'.... .... log4j:錯誤找不到名爲[FILE]的appender。 使用Spark的默認log4j配置文件:org/apache/spark/log4j-defaults.properties'' – void

+0

@Aswin修復它。它應該是「RollingFileAppender」。 –