Flume NG和HDFS

时间:2013-07-18 13:08:49

标签: hadoop hdfs flume

我对hadoop很新,所以请原谅这些愚蠢的问题。

我有以下知识 Hadoop的最佳用途是大文件,因此在运行mapreduce任务时有助于提高效率。

牢记上述内容我对Flume NG感到有些困惑。 假设我正在拖尾日志文件,并且每秒生成日志,当日志获得新行时,它将通过Flume传输到hdfs。

a)这是否意味着flume在我正在拖尾的日志文件中记录的每一行上创建一个新文件,或者它是否附加到现有的hdfs文件?

b)首先允许在hdfs中附加?

c)如果b的答案是真的吗?即内容是否经常附加,我应该如何以及何时运行我的mapreduce应用程序?

上述问题可能听起来很愚蠢,但对此问题的答案将受到高度赞赏。

PS:我还没有设置Flume NG或hadoop,只是阅读文章以了解它以及它如何为我的公司增加价值。

1 个答案:

答案 0 :(得分:5)

Flume通过HDFS接收器写入HDFS。当Flume启动并开始接收事件时,接收器将打开新文件并将事件写入其中。在某些时候,应该关闭先前打开的文件,直到那时,正在写入的当前块中的数据对其他redaers不可见。

the documentation所述,Flume HDFS接收器有几种文件关闭策略:

  • 每N秒(由rollInterval选项指定)
  • 在写入N个字节(rollSize选项)之后
  • 编写N个收到的事件(rollCount选项)
  • 之后
  • 在N秒不活动(idleTimeout选项)
  • 之后

那么,对你的问题:

a)Flume将事件写入当前打开的文件,直到它关闭(并打开新文件)。

b)在HDFS中追加allowed,但Flume不使用它。文件关闭后,Flume不会向其追加任何数据。

c)要从mapreduce应用程序隐藏当前打开的文件,请使用inUsePrefix选项 - 所有名称以.开头的文件对MR作业不可见。