2017-03-14 93 views
4

我們有一個火花流應用程序這是一個長期運行的任務。事件日誌指向hdfs位置hdfs:// spark-history,當我們啓動流應用程序並且文件大小增長到70GB時,將在其中創建application_XXX.inprogress文件。要刪除日誌文件,我們正在停止Spark應用程序並清除它。 有沒有什麼辦法可以停止或重新啓動應用程序來自動執行此過程。我們已將spark.history.fs.cleaner.enabled = true配置爲清理間隔爲1天,最大爲Age 2天。但它不會清除.inprogress文件。我們正在使用spark 1.6.2版本。我們正在運行紗線上的火花並以集羣模式進行部署。如何清理火花歷史事件日誌與停止火花流

+0

什麼是hdfs日誌存儲的保留策略? – FaigB

回答

0

這個問題你必須在一些配置上做一些改變,你必須對你的文件yarn-default.xml添加一些更改。在這個文件中,您需要更改此行或添加此行:

yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds=3600 

此修改將您的文件聚集到你,這將允許您通過yarn logs -applicationId YOUR_APP_ID

這是第一步看到的數據。你可以看到一些關於這個here

你需要創建一個文件log4j-driver.property和log4j-executor.property

在這個文件中,你可以用這個例子Seccond步驟:

log4j.rootLogger=INFO, rolling 
log4j.appender.rolling=org.apache.log4j.RollingFileAppender 
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout 
log4j.appender.rolling.layout.conversionPattern=[%d] %p %m (%c)%n 
log4j.appender.rolling.maxFileSize=50MB 
log4j.appender.rolling.maxBackupIndex=5 
log4j.appender.rolling.file=/var/log/spark/${dm.logging.name}.log 
log4j.appender.rolling.encoding=UTF-8 
log4j.logger.org.apache.spark=WARN 
log4j.logger.org.eclipse.jetty=WARN 
log4j.logger.com.anjuke.dm=${dm.logging.level} 

這是什麼行saing?

這個人:log4j.appender.rolling.maxFileSize=50MB只會創建50MB大小的文件。當一個日誌文件達到50MB時,它將被關閉,並開始一個新的文件。

與此相關的其他行是這一個:log4j.appender.rolling.maxBackupIndex=5這意味着您將有5個50MB文件的備份歷史。在新的文件開始顯示時,這段時間將被刪除。

在創建你需要通過發送此此日誌文件火花提交命令:

spark-submit 
    --master spark://127.0.0.1:7077 
    --driver-java-options "-Dlog4j.configuration=file:/path/to/log4j-driver.properties -Ddm.logging.level=DEBUG" 
    --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:/path/to/log4j-executor.properties -Ddm.logging.name=myapp -Ddm.logging.level=DEBUG" 
    ... 

您可以爲您的驅動器和你的員工創建日誌文件。在命令中,我使用了兩個不同的文件,但您可以使用相同的文件。欲瞭解更多詳情,你可以看到here

+1

感謝您的回答,我們啓用了日誌聚合和yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds = 3600。日誌不會在執行者中增加,它只會在火花歷史文件夾中增加,該文件夾具有JSON格式的火花流式事件日誌,用於重建歷史UI,其文件名爲application_12XXX_.inprogress –

+0

God!我明白你的觀點。我必須檢查我的歷史記錄服務器的文件夾。我沒有意識到, –

+1

@VamshiMothe感謝您的更新!我們也有同樣的問題。我們現在有一些歷史數據'.inprogress',其中有超過100Gb的數據o_0,所以我會盡力找到解決方案並儘快更新! –