我对hadoop很新,所以请原谅这些愚蠢的问题。
我有以下知识 Hadoop的最佳用途是大文件,因此在运行mapreduce任务时有助于提高效率。
牢记上述内容我对Flume NG感到有些困惑。 假设我正在拖尾日志文件,并且每秒生成日志,当日志获得新行时,它将通过Flume传输到hdfs。
a)这是否意味着flume在我正在拖尾的日志文件中记录的每一行上创建一个新文件,或者它是否附加到现有的hdfs文件?
b)首先允许在hdfs中附加?
c)如果b的答案是真的吗?即内容是否经常附加,我应该如何以及何时运行我的mapreduce应用程序?
上述问题可能听起来很愚蠢,但对此问题的答案将受到高度赞赏。
PS:我还没有设置Flume NG或hadoop,只是阅读文章以了解它以及它如何为我的公司增加价值。
答案 0 :(得分:5)
Flume通过HDFS接收器写入HDFS。当Flume启动并开始接收事件时,接收器将打开新文件并将事件写入其中。在某些时候,应该关闭先前打开的文件,直到那时,正在写入的当前块中的数据对其他redaers不可见。
如the documentation所述,Flume HDFS接收器有几种文件关闭策略:
rollInterval
选项指定)rollSize
选项)之后rollCount
选项)idleTimeout
选项)那么,对你的问题:
a)Flume将事件写入当前打开的文件,直到它关闭(并打开新文件)。
b)在HDFS中追加allowed,但Flume不使用它。文件关闭后,Flume不会向其追加任何数据。
c)要从mapreduce应用程序隐藏当前打开的文件,请使用inUsePrefix
选项 - 所有名称以.
开头的文件对MR作业不可见。