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

使用Flume将日志文件写入HDFS

唐俊楚
2023-03-14

在HDFS中写入日志文件的最佳方式是什么?我正在尝试配置Apache Flume,并尝试配置能够为我提供数据可靠性的源。我试图配置“exec”,后来也查看了“spooldir”,但flume.apache上的以下文档。org对我的意图表示怀疑-

执行来源:

最常请求的功能之一是像“tail -F file_name”这样的用例,其中应用程序写入磁盘上的日志文件,Flume 尾随文件,将每一行作为事件发送。虽然这是可能的,但有一个明显的问题;如果频道已满,而 Flume 无法发送事件,会发生什么情况?Flume 无法向写入日志文件的应用程序指示它需要保留日志或由于某种原因未发送事件。您的应用程序永远无法保证在使用单向异步接口(如 ExecSource)时已收到数据!

假脱机目录来源:

与Exec源不同,“spooldir”源是可靠的,即使Flume重新启动或终止,也不会丢失数据。为了获得这种可靠性,只能将不可变的文件放入假脱机目录。如果文件在放入假脱机目录后被写入,Flume将在其日志文件中打印错误并停止处理。

还有什么更好的,我可以用它来确保Flume不会错过任何活动,也可以实时阅读?

共有1个答案

颛孙星海
2023-03-14

我建议使用假脱机目录源,因为它很可靠。不可变性要求的一个解决方法是在第二个目录中编写文件,一旦它们达到一定的大小(以字节或日志数量计),就将它们移动到假脱机目录中。

 类似资料:
  • 我正在使用Flume从我的本地文件系统写一些CSV文件到HDFS。 我想知道HDFS水槽的最佳配置是什么,这样本地系统上的每个文件都会在HDFS以CSV格式准确复制。我希望Flume处理的每个CSV文件都是单个事件,作为单个文件刷新和写入。尽可能多地,我希望文件是完全一样的,没有标题的东西等。 我需要在这些值上加什么来模拟我想要的行为? 如果还有其他Flume代理配置变量需要更改,请提供。 如果这

  • 我正在尝试将MapReduce作业中的日志写入HDFS。我使用的是Apache Flume NG。 我的环境: Java 6 日志4j 1.2.16 Apache Hadoop 2.3.0 Apache水槽1.4.0 问题#1 我已经创建了简单的MapReduce作业作为Maven项目,并且在我的类中使用了 作业完成后,我可以在系统日志文件中看到我的日志。 我想创建自己的log4j配置并将日志写入

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

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

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