Flume是向Hadoop批量导入基于事件的海量数据。一个典型的例子就是从一组web服务器中收集日志文件,然后把这些文件中的日志事件转移到一个新的HDFS汇总文件中作进一步处理,其终点通常被称为HDFS.
Flume代理是由持续运行的source(数据源)、sink(数据目标)以及channel(用于连接sink和source)构成的java进程。Flume的source产生事件,并将其传送给channnel,channel存储这些事件直至转发给sink。可以把source-channel-sink的组合视为基本的Flume组件。
类别 | 组件 | 描述 |
Source | Avro | 监听由Avro sink或Flume SDK通过Avro rpc发送的事件所抵达的端口 |
Exec | 运行一个unix命令,并把从标准输出上读取的行转换为事件。请注意,此source不能保证事件被传递到channel,更好的选择可以参考spooling directory或flume sdk | |
HTTP | 监听一个端口,并使用可插拔句柄把http请求转化为事件 | |
JMS | 读取来自JMS Queue 或topic的消息并将其转化为事件 | |
sink | avro | 通过avro rpc发送事件到一个avro source |
Netcat | 监听一个端口,并把每行文问你转换为一个事件 | |
Sequence generator | 依据增量计数器来生成事件。对测试有用 | |
channel | File | 将事件储存在一个本地文件系统上的事务日志中 |
JDBC | 将事件储存在数据库中(嵌入式derby) | |
memory | 将事件储存在一个内存队列中 |