NightPxy 个人技术博客

Flume 部署

Posted on By NightPxy

双层架构设计

第一层使用FileChannel,直接对接目标服务器(比如一个WebApp一个) 第二次选用MemoryChannel 对于MemoryChannel而言,最重要的写出速度.因此一定要多开Sink(Sink在Agent中是线程概念),条件运行的前提下,尽可能的保证MemoryChannel中不留数据,这样即可以防止MemoryChannel爆掉,也可以减少数据丢失的可能,如果MemoryChannel爆掉了,从第一层重采

尽可能少用正则
Flume中为了格式灵活,大量使用了正则匹配,这种正则匹配是以Event为单位,而Flume的Event必然是超大数据量的,这样十分影响性能
但输出格式又是十分必要的,这里考虑从源码入手,定制出一些输出格式,避开正则匹配

HDFS_Sink
必须注意文件滚动,避免滚动出小文件,滚动的出的文件,可以考虑用Snappy等快速压缩方式,也可以打入LZO自动建索引(滚动close的时候),但注意这些都会影响Sink的输出性能,必要时再次增大Sink

Flume的设计架构核心是Channel,即一切逻辑都是围绕Channel进行的,但在使用中,核心是Sink,务必保证Sink的写出效率