我对hadoop非常陌生,所以请原谅这些愚蠢的问题。
我有以下知识hadoop的最佳用例是大文件,这样可以在运行mapreduce任务时提高效率。
记住以上几点,我对flume ng有些困惑。假设我跟踪一个日志文件,并且每秒钟生成一次日志,当日志获得新行时,它将通过flume传输到hdfs。
a) 这是否意味着flume会在我跟踪的日志文件中记录的每一行上创建一个新文件,还是会附加到现有的hdfs文件中??
b) hdfs中首先允许追加吗??
c) 如果b的答案是真的??ie内容是不断追加的,我应该如何以及何时运行我的mapreduce应用程序?
上述问题听起来可能很愚蠢,但如果能回答同样的问题,我们将不胜感激。
ps:我还没有建立FlumeNG或hadoop,只是阅读文章来了解它如何为我的公司增加价值。
1条答案
按热度按时间carvr3hs1#
flume通过hdfs sink写入hdfs。当flume启动并开始接收事件时,接收器打开新文件并将事件写入其中。在某个时候,以前打开的文件应该被关闭,在那之前,当前块中正在写入的数据对其他redaer是不可见的。
如文档中所述,flume hdfs sink有几种文件关闭策略:
每n秒(由
rollInterval
(可选)写入n字节后(
rollSize
(可选)写入n个接收事件后(
rollCount
(可选)n秒不活动后(
idleTimeout
(可选)所以,对于你的问题:
a) flume将事件写入当前打开的文件,直到它关闭(并打开新文件)。
b) 在hdfs中允许append,但flume不使用它。关闭文件后,flume不会向其追加任何数据。
c) 要对mapreduce应用程序隐藏当前打开的文件,请使用
inUsePrefix
选项-名称以开头的所有文件.
乔布斯先生看不到。