hadoop - 为什么 MapReduce 作业没有完全加载附加文件?

标签 hadoop mapreduce flume flume-ng

我有一个水槽,它将数据流式传输到 HDFS 接收器(附加到同一个文件),我可以“cat”并从 HDFS 中看到它。但是,MapReduce 作业只拾取第一批被刷新的 (bacthSize = 100)。其余的没有被捡起,尽管我可以看到其余的。当我在文件滚动(关闭)后执行 MapRecue 作业时,它正在获取所有数据。你知道为什么 MR 作业即使存在,也找不到批处理的其余部分。

最佳答案

据我所知,Flume(在我的情况下是 1.4)根本没有真正附加到 HDFS 文件。当 HDFS 接收器启动时,它将创建一个 0 kb 的 .tmp 文件,直到它被滚动/重命名。增量记录尚未在 HDFS 上,而是在 channel 上的 Flume 代理中。因此,在重命名事件(.tmp 到最终文件名)之前,您将无法访问新到达的数据。
(MR FileInputFormat 过滤所有以“_filename”或“.filename”开头的文件)

关于hadoop - 为什么 MapReduce 作业没有完全加载附加文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929621/

相关文章:

通过 Oozie 的 Shell 脚本

java - 如何在java客户端获取HDFS服务器的元数据信息?

hadoop - Hadoop Mapper Reducer花费了很多时间

.net - 是否可以使用 .NET 为 Amazon Elastic MapReduce 编写 map/reduce 作业?

hadoop - 是否可以将 WebHDFS 与 Flume 一起使用?

hadoop - 安装Hadoop遇到shell脚本问题

join - Hadoop:是否可以将多个Map-Side连接在一起,似乎不是吗?

java - 如何在Java中按行号搜索文本文件?

ubuntu - 控制flume自身生成的日志文件大小

apache - 使用 apache flume 将数据流式传输到 hbase