问题的可能答案。
已经有一段时间了,我用的是flume。仍然希望他们有所帮助。
- 是否可以使用 Flume 更频繁地读取文件服务器中这些较小的文件并存储在 HDFS 中?
由于数据源是可定制的,Flume 可用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息和几乎任何可能的数据源。
注意:Flume 不支持tail
作为源。可以将命令包装tail
在 exec 源中以流式传输文件。
对于拖尾文件,您可以检查一下
可以在此处跟踪作为多个文件源的目录的实现
您可以在此处阅读有关HDFS sink 的信息,它可以写入 HDFS
2 . 我知道有 CombineFileInputFormat 和 SequenceFiles 可以组合这些文件进行处理,但是这些较小的文件甚至可以在存储到 HDFS 之前连接起来吗?
Flume 基本上适用于 Event 机制。可以根据经过的时间或数据大小或事件数定期滚动文件(关闭当前文件并创建新文件)。检查 HDFS 接收器的相同链接。
如果文件数量很大,您可能可以使用 CombineFileINputFormat。在写入 HDFS 之前,我不知道如何做到这一点。
笔记:
正如我已经说过的那样,水槽适用于基于事件的机制,据我所知,它不适用于传输文件。如果您查看Event 的此接口,您会注意到以下方法
byte[] getBody()
:返回此事件中包含的数据的原始字节数组。
void setBody(byte[] body)
:设置此事件中包含的数据的原始字节数组。
因此,事件的最大大小是 byte[] 可以占用的大小。不知道你的文件能不能放进去。你必须自己测试它。此外,还涉及其他条件,我现在不记得了,这可能会妨碍您将文件传输到 HDFS。