前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决spark streaming长时间运行日志不断增长问题

解决spark streaming长时间运行日志不断增长问题

作者头像
shengjk1
发布2018-10-24 15:19:17
2.6K0
发布2018-10-24 15:19:17
举报
文章被收录于专栏:码字搬砖码字搬砖

解决spark streaming长时间运行日志不断增长问题

组件: 基于CDH5.13、spark2.2.X

背景: 由于spark streaming是7*24小时不间断运行的,日志必然会越来越多到最后大的惊人,在此小二记录一下解决日志越来越大的过程,以便需要之人。

一、spark streaming log 日志

首先官网的

代码语言:javascript
复制
spark.executor.logs.rolling.enabled
spark.executor.logs.rolling.maxRetainedFiles
spark.executor.logs.rolling.enableCompression
spark.executor.logs.rolling.maxSize
spark.executor.logs.rolling.strategy
spark.executor.logs.rolling.time.interval
spark.executor.logs.rolling.strategy

在yarn-client,yarn-cluster中都是不起作用的。于是问了一个谷大爷之后,决定开始采用设置log4j.properties的方法

client模式下:

代码语言:javascript
复制
--driver-java-options "-Dlog4j.configuration=file:driver-log4j.properties" --conf spark.executor.extraJavaOptions=-Dlog4j.configuration=file:executor-log4j.properties --files ./driver-log4j.properties,./executor-log4j.properties

需要注意的是client模式下是–driver-java-options,因为SparkContext的config起作用的时候,driver已经启动的了

cluster模式

代码语言:javascript
复制
--conf spark.eventLog.enabled=false --conf spark.driver.extraJavaOptions=-Dlog4j.configuration=file:driver-log4j.properties --conf spark.executor.extraJavaOptions=-Dlog4j.configuration=file:executor-log4j.properties --files ./driver-log4j.properties,./executor-log4j.properties

driver-log4j.properties

代码语言:javascript
复制
log4j.rootLogger =info,stdout

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm} %5p %t %c{2}:%L - %m%n

driver端只进行标准输出

executor-log4j.properties

代码语言:javascript
复制
log4j.rootLogger =info,stdout,rolling

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm} %5p %t %c{2}:%L - %m%n

log4j.appender.rolling=org.apache.log4j.RollingFileAppender
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.conversionPattern=%-d{yyyy-MM-dd HH:mm:ss} %5p %t %c{2}:%L - %m%n
log4j.appender.rolling.maxFileSize=100MB
log4j.appender.rolling.maxBackupIndex=5
log4j.appender.rolling.file=${spark.yarn.app.container.log.dir}/stdout
log4j.appender.rolling.encoding=UTF-8

executor既要进行标准输出又要输出到文件,标准输出其实最主要的就是方便client时调试,cluster模式标准输出完全可以去掉,如果不需要在打印台或者类似打印台的地方查看日志。 需要注意的log4j.appender.rolling.file的文件为stdout,方便对标准输出的日志和输出到文件的日志进行统一管理,避免标准输出的日志文件越来越大

当然了对log4j日志的所有操作在此都是有效的

二、spark streaming event log

针对spark streaming的event log,CDH默认是打开的,配置方式基于CM,而apache 版本的默认是关闭的,目前也不知道event log的确切用处,在此就将它关闭

代码语言:javascript
复制
--conf spark.eventLog.enabled=false

下面给出一个完整版的,以client为例

代码语言:javascript
复制
SPARK_KAFKA_VERSION=0.10 nohup spark2-submit --master yarn --deploy-mode client  --name spark-commom-orders --driver-class-path=kafka010/kafka-clients-0.10.2.1.jar --conf spark.eventLog.enabled=false --conf spark.driver.extraJavaOptions=-Dlog4j.configuration=file:driver-log4j.properties --conf spark.executor.extraJavaOptions=-Dlog4j.configuration=file:executor-log4j.properties --files ./driver-log4j.properties,./executor-log4j.properties  --jars $(echo sparklib0.10/*.jar | tr ' ' ',') --XXX  ./spark-common-1.0-SNAPSHOT.jar > /dev/null 2>&1 &

其中SPARK_KAFKA_VERSION=0.10是基于spark-streaming-kafka-0-10_2.11可依情况采用

关于重复提交jar包问题,请看一下文章

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决spark streaming长时间运行日志不断增长问题
  • 一、spark streaming log 日志
  • 二、spark streaming event log
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档