当前位置: 首页 > 知识库问答 >
问题:

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

吕德惠
2023-03-14

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

我的环境:

  • Java 6
  • 日志4j 1.2.16
  • Apache Hadoop 2.3.0
  • Apache水槽1.4.0

问题#1

我已经创建了简单的MapReduce作业作为Maven项目,并且在我的类中使用了 logger.info()。作业完成后,我可以在系统日志文件中看到我的日志。

我想创建自己的log4j配置并将日志写入控制台。我该怎么做?我必须在哪里放置log4j.properties文件?我应该修改一般的Hadoop conf/log4j.properties吗?

问题#2

我想将日志写入HDFS。但我不想使用tail-f命令来编写syslog文件的内容。我只想从我的类中写日志-来自<code>logger的消息。info()方法。

使用Apache Flume NG是否可以做到这一点?或者我可以更容易地做到这一点?

我有一个想法来实现Flume Log4j Appender在log4j.properties(例如在localhost,44444端口)。在Flume NG配置中,我想对Avro源代码使用相同的地址,并通过内存通道将日志写入HDFS。

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

共有1个答案

毋炳
2023-03-14

问题#1

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

问题#2

你所尝试的通常是一个好的解决方案。log4j项目中有Flume Appender:Log4J 2 Flume Appender

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

 类似资料:
  • 在HDFS中写入日志文件的最佳方式是什么?我正在尝试配置Apache Flume,并尝试配置能够为我提供数据可靠性的源。我试图配置“exec”,后来也查看了“spooldir”,但flume.apache上的以下文档。org对我的意图表示怀疑- 执行来源: 最常请求的功能之一是像“tail -F file_name”这样的用例,其中应用程序写入磁盘上的日志文件,Flume 尾随文件,将每一行作为事

  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

  • 我创建了以下groovy脚本,以展示如何使用简单的注释将日志字段注入我们的类 当我运行groovy脚本时,我得到以下结果(在GROOVY CONSOLE上) 请告知我们如何将结果打印到WIN机器中的日志文件中,以及需要向groovy脚本中添加什么才能启用它? 例如: 日志文件 C: \程序文件\日志\我的。非常棒。日志 (应包含结果:)

  • 我决定使用slf4j而不是Java自己的日志记录。我已经成功地使用SLF4J登录到控制台。但我不知道如何将其写入日志文件。日志文件将帮助我们收集运行时可能出现的错误。 我通过这样做来实现slf4j, 私有静态最终org.slf4j.LOGGER LOGGER=org.slf4j.loggerfactory.getlogger(class1.class); PropertyConfigurator.

  • 问题内容: 我正在尝试使用Go写入日志文件。 我尝试了几种方法,但都失败了。这是我尝试过的: 日志文件被创建,但是没有任何打印或附加到该文件。为什么? 问题答案: 过去的工作方式一定不同,但这对我有用: 基于Go文档,不能用于,因为它会打开文件“供阅读:” 打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取;关联的文件描述符具有mode 。如果有错误,它将是类型。 编辑 检查后移至

  • 我有一个设置,其中docker容器使用日志驱动程序来写入它们的日志。目前日志中的日志行被转发到主机上运行的rsyslog,但syslog行上的应用程序名称显示为。 作为一种解决方法,我想将日志元数据中的字段写入syslog中出现的行中,这样我就可以确定在主机的syslog被发送到syslog聚合服务器之后,哪个容器写入了哪一行。 有什么建议吗?