我有一个flume,它将数据流传输到hdfs接收器(附加到同一个文件),我可以“cat”它并从hdfs中看到它。但是,mapreduce作业仅拾取刷新的第一批(bacthsize=100)。剩下的没有人接,尽管我能看到剩下的。当我在文件滚动(关闭)后执行maprecure作业时,它将拾取所有数据。你知道为什么job先生找不到剩余的那一批,即使它存在。
4si2a6ki1#
据我所知,flume(在我的例子中是1.4)并没有真正附加到hdfs文件中。当hdfs接收器启动时,它将创建一个0 kb的.tmp文件,直到它被滚动/重命名。增量记录尚未在hdfs上,而是在通道上的flume代理中。因此,在重命名事件(.tmp to final filename)之前,您将无法访问新到达的数据(mr fileinputformat筛选以“\u filename”或“.filename”开头的所有文件)
1条答案
按热度按时间4si2a6ki1#
据我所知,flume(在我的例子中是1.4)并没有真正附加到hdfs文件中。当hdfs接收器启动时,它将创建一个0 kb的.tmp文件,直到它被滚动/重命名。增量记录尚未在hdfs上,而是在通道上的flume代理中。因此,在重命名事件(.tmp to final filename)之前,您将无法访问新到达的数据(mr fileinputformat筛选以“\u filename”或“.filename”开头的所有文件)