我正在尝试将MapReduce作业中的日志写入HDFS。我正在使用Apache Flume NG。
我的环境:
问题#1
我已经创建了简单的MapReduce作为Maven项目,我在我的类中使用了logger.info()
。当我的工作完成后,我可以在syslog文件中看到我的日志。
我想创建自己的log4j配置并将日志写入控制台。 我怎样才能做到这一点?我在哪里放log4j.properties文件?我应该修改一般的Hadoop conf / log4j.properties吗?
问题#2
我想将日志写入HDFS。但我不想使用tail -f
命令并写入syslog文件的内容。我想只从我的类中编写日志 - 来自logger.info()
方法的消息。
使用Apache Flume NG可以实现吗? 或者我可以更容易地做到这一点吗?
我有一个想法在log4j.properties中实现Flume Log4j Appender(例如在localhost,44444端口上)。在Flume NG配置中,我想为Avro源使用相同的地址,并通过内存通道写入日志到HDFS。
这是一个好的解决方案吗?
答案 0 :(得分:0)
问题#1
哪个控制台?请记住,任务正在不同的JVM上运行。所以没有一个控制台。如果你想要来自驱动程序的日志那么这将是简单的配置。
问题#2
您所尝试的通常是一个很好的解决方案。在log4j项目中可以使用Flume appender:Log4J 2 Flume Appender
1:http://logging.apache.org/log4j/2.x/manual/appenders.html#FlumeAppender或其他选项:Kite SDK