【问题标题】:Using Apache Flume to write logs from MapReduce job into HDFS使用 Apache Flume 将 MapReduce 作业中的日志写入 HDFS
【发布时间】:2014-04-14 18:59:01
【问题描述】:

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

我的环境:

  • Java 6
  • Lo​​g4j 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。

这是好的解决方案吗?

【问题讨论】:

    标签: java hadoop log4j hdfs flume


    【解决方案1】:

    问题 #1

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

    问题 #2

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

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

    【讨论】:

    • 非常感谢。关于问题 #2 - 我应该将 log4j.properties 与我的 Flume Appender 放在哪里?在我的 Maven 项目中还是在 hadoop/etc/log4j.properties 文件中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2019-03-21
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多