flume-将文件从文件服务器加载到hdfs

xam8gpfp  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(334)

我想经常将文件从文件服务器加载到hdfs。较小的文件(2 mb到20 mb)经常加载到文件服务器。这些文件必须加载到hdfs中才能进行mr处理。在这些文件可用于map reduce作业之前,我看到了两个问题。
如果在运行mr作业时拾取这些文件并将其加载到hdfs中,那么将这些文件加载到hdfs本身需要很长时间。
这些较小的文件必须为mr job合并。
问题
flume能否更频繁地读取文件服务器中的这些较小文件并存储在hdfs中?
我知道有combinefileinputformat和sequencefiles来组合这些文件进行处理,但是这些较小的文件是否可以在存储到hdfs之前进行连接呢?

xriantvc

xriantvc1#

问题的可能答案。
很久没用Flume了。还是希望他们能帮忙。
flume能否更频繁地读取文件服务器中的这些较小文件并存储在hdfs中?
由于数据源是可定制的,flume可以用来传输大量的事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件和几乎所有可能的数据源。
注:Flume不支持 tail 作为一个来源。一个人可以把它包起来 tail 在exec源中执行流式处理文件的命令。
对于尾随文件,你可以检查这个
一个目录作为多个文件源的实现可以在这里跟踪
您可以在这里阅读有关hdfs sink的内容,它可以写入hdfs
2我知道有combinefileinputformat和sequencefiles来组合这些文件进行处理,但是这些较小的文件是否可以在存储到hdfs之前进行连接呢?
flume基本上是基于事件机制的。文件可以根据运行时间、数据大小或事件数定期滚动(关闭当前文件并创建新文件)。检查hdfs接收器的相同链接。
如果文件数量很大,则可以使用combinefileinputformat。在给hdfs写信之前,我不知道你该怎么做。
注:
正如我已经说过的,flume是基于事件的机制,据我所知,它不用于传输文件。如果您查看这个事件接口,您将注意到以下方法 byte[] getBody() :返回此事件中包含的数据的原始字节数组。 void setBody(byte[] body) :设置此事件中包含的数据的原始字节数组。
因此,事件的最大大小是byte[]可以接受的大小。我不知道你的档案能不能放进去。你得自己测试一下。此外,还有其他一些情况,我现在不记得了,可能会妨碍您将文件传输到hdfs。

相关问题