如果要将SparkStreaming产生的系统日志发送给Flume
则要在log4j.properties中添加如下配置:
log4j.rootLogger=INFO,flume
log4j.appender.flume=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname=192.168.4.209
log4j.appender.flume.Port=7777
log4j.appender.flume.UnsafeMode=true
log4j.appender.flume.layout=org.apache.log4j.PatternLayout
log4j.appender.flume.layout.ConversionPatter=%m
将spark/conf目录下的log4j.properties.template改成 log4j.properties
并按上面的配置。
如上配置在使用local模式时,spark可以正常发送数据到flume。
而当运行在spark on yarn上时,则情况不同:
1.若运行yarn-client
则其他日志能够正常发送,但在mapPartition及foreachePartition方法内的日志则无法发送到flume.
2,若运行yarn-cluster
则所有日志都不能正常发送。
此时可以修改Hadoop目录下的etc/hadoop/log4j.properties,添加如下配置
log4j.appender.flume=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname=192.168.3.133
log4j.appender.flume.Port=7777
log4j.appender.flume.UnsafeMode=true
log4j.appender.flume.layout=org.apache.log4j.PatternLayout
log4j.appender.flume.layout.ConversionPatter=%m
并找到log4j.rootLogger项,添加一个flume