flume的工作机制



flume的核心组件 :


Source: Syslog Source , HDFS Source , HTTP Source , etc ,
Avro Source , Syslog TCP Source , Syslog TCP Source
Exec Source:以运行linux命令的方式,持续的输出最新的数据,如tail-F文件名指令,
在这种方式下,取的文件名必须是指定的。
Spool Source:是监测配置的目录下新增的文件,并将文件中的数据读取出来。


Spool Source如何使用?


在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,
将文件拷贝到spool的监控目录。log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。
基本实现了实时的监控。Flume在传完文件之后,将会修改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定)。


SpoolSource需要注意:


1.拷贝到spool目录下的文件不可以再打开编辑。
2.spool目录下不可包含相应的子目录。


Exec Source和SpoolSource比较


1.ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,
无法保证数据的完整性。
2.SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。
3.总结:如果应用无法实现以分钟切割日志文件的话,可以两种手机方式结合使用。






Channel : Memory Channel , JDBC Channel , File Channel , etc


Flume Channel 主要提供一个队列的功能,对source提供的数据进行简单的缓存。


1.MemoryChannel可以实现高速的吞吐,但是无法保证数据的完整性。
2.MemoryRecoverChannel在官方文档的建议上已经使用FileChannel来替换。
3.FileChannel保证数据的完整性与一致性。










Sink : HDFS sink , Logger sink , Avro sink , File Roll sink , Null sink , HBase sink ,etc


Flume Sink 取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。













阅读更多
换一批

没有更多推荐了,返回首页