Flume定义:
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集,聚合和传输系统。基于流失框架,灵活简单。
Flume Agent内部原理:
FlumeAgent由三大部分组成。Source(采集),Channel(传输),Sink(输出)。
首先Source采集由一些日志信息put到Channel,形成是一个event,然后sink端就take拿数据,最后输出到本地或者hdfs。
Channel Selectors有两种:
1Replicating Channel selector ,将数据发往所有的channel(默认)
2.Multiplexing Channer selector ,选择性的发向Channel
Source来源:
1.监听端口数据流
2.实时监听本地文件(日志等 tar -F)到HDFS
3.实时监控目录文件(每隔一定时间扫描目录)上传到HDFS
采集完毕之后一般会选用拦截器传输其他channel
多Channel通道(数据)
一般用于多条业务线。监控日志一个通往HDFS,一个通往本地。
多Sink传输
监控端口数据量,控制台轮回打印
多数据汇总(多Source)
log变化和端口数据流,输出到控制台
Flume监控之Ganglia
在Llinux上下载和配置文件,访问localhost:ganglia网站,参数大致有:puttask,puttaskSuccess,taketask,taketasksuccess,starttime,stoptime等
Flume企业调优
Source端:通过增加批处理bachsize,然后传向channel。
Channel端:可以增加Capacity(总容量)和传输Capacity,增加传输速率
Sink端:增加批处理bachsize,处理大量数据。
Flume事务机制:
put,putlist,缓冲区,take,takelist,event
Flume采集数据可能有丢失:channel通道type有memory和file,在内存传输可能会丢失数据,而file类型很稳定,一般用于银行事务处理。
在Flume完毕之后输出到HDFS端需要经过中间传输过程Kafka(消峰)