使用Apache Flume将MapReduce作业中的日志写入HDFS

时间:2014-04-14 18:59:02

标签: java hadoop log4j hdfs flume

我正在尝试将MapReduce作业中的日志写入HDFS。我正在使用Apache Flume NG。

我的环境:

  • Java 6
  • Log4j 1.2.16
  • Apache Hadoop 2.3.0
  • Apache Flume 1.4.0

问题#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。

这是一个好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

  

问题#1

哪个控制台?请记住,任务正在不同的JVM上运行。所以没有一个控制台。如果你想要来自驱动程序的日志那么这将是简单的配置。

  

问题#2

您所尝试的通常是一个很好的解决方案。在log4j项目中可以使用Flume appender:Log4J 2 Flume Appender

1http://logging.apache.org/log4j/2.x/manual/appenders.html#FlumeAppender或其他选项:Kite SDK