我有一个将数据流传输到HDFS接收器(附加到同一文件)的水槽,我可以“捕捉”并从HDFS中看到它。但是,MapReduce作业仅获取已刷新的第一批(bacthSize = 100)。其余的都没有被拿起来,虽然我可以看看剩下的。当文件滚动(关闭)后执行MapRecue作业时,它会拾取所有数据。你知道为什么MR工作无法找到批次的其余部分,即使它存在。
答案 0 :(得分:0)
据我所知,Flume(在我的情况下是1.4)根本没有附加到HDFS文件。当HDFS接收器启动时,它将创建一个.kmp文件,该文件为0 kb,直到它被滚动/重命名。增量记录尚未在HDFS上,但在通道上的Flume代理中。因此,在重命名事件(.tmp到最终文件名)之前,您将无法访问新到达的数据。 (MR FileInputFormat过滤所有以' _filename'或' .filename'开头的文件)