2017-03-14 67 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,所以我会尽力找到解决方案并尽快更新! –