1、你是如何实现flume数据传输的监控的
flume不丢数据,使用第三方框架Ganglia实时监控flume
2、Flume的Source,Sink,Channel的作用?你们Source是什么类型
我公司采用的Source类型为: (1)监控后台日志:exec (2)监控后台产生日志的端口:netcat Exec spooldir
3、 Flume的Channel Selectors
拦截器,channel选择器
4、Flume参数调优
(1)source:可以增大Source的读取数据的能力,batchsize
(2)channel:Capacity 参数决定Channel可容纳最大的event条数。transactionCapacity
参数决定每次Source往channel里面写的最大event条数和每次Sink从channel里面读的最大event条数。transactionCapacity需要大于Source和Sink的batchSize参数(3)sink:增加Sink的个数可以增加Sink消费event的能力。Sink也不是越多越好够用就行,过多的Sink会占用系统资源,造成系统资源不必要的浪费。
batchSize参数决定Sink一次批量从Channel读取的event条数,适当调大这个参数可以提高Sink从Channel搬出event的性能
5、Flume的事务机制
Flume的事务机制(类似数据库的事务机制):Flume使用两个独立的事务分别负责从Soucrce到Channel,以及从Channel到Sink的事件传递。比如spooling
directory source
为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到Channel且提交成功,那么Soucrce就将该文件标记为完成。同理,事务以类似的方式处理从Channel到Sink的传递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚。且所有的事件都会保持到Channel中,等待重新传递。
6、Flume采集数据会丢失吗?
不会,Channel存储可以存储在File中,数据传输自身有事务。
根据flume的架构原理,flume不可能丢失数据,其内部有完善的事务机制,source到channel是事务的,channel到sink是事务的,因此这两个环节不会出现数据的丢失
唯一可能丢失数据的情况是channel采用memory channel,agent宕机导致数据丢失,或者channel存储数据已满,导致source不再写入,未写入的数据丢失
flume不会丢失数据,但是有可能造成数据的重复,例如数据已经成功由sink发出,但是没有接收到相应,sink会再次发送数据,此时可能会导致数据的重复
所以丢不丢数据是人为参数导致的,讲清楚,做了监控,不会丢失