怎么实现Flume数据传输的监控?
使用第三方框架Ganglia实时监控Flume。
Flume的Source,Sink,Channel的作用?你们Source是什么类型?
1 作用
1 Source组件是专门用于收集数据的,可以出来各种类型的数据,各种格式的日志数据,报告avro,exec,jms,spooling,directory,netcat,syslog,http,legacy
2 Channel组件对采集到的数据进行缓存,可以存放在Memory或File中
3 Sink组件是用于把数据发送到目的地的组件,目的地报告HDFS,logger,avro,file,Hbase,solr,自定义
2 一般公司采用的Source类型为
1 监控后台日志:exec
2 监控后台产生日志的端口:netcat
Flume参数调优
1 Source
增加Source个数可以增大Source的读取数据的能力。同时配置好多个Source以保证Source有足够的能力获取到新产生的数据
batchSize参数决定Source一次批量运输到Channel的event条数,适当调大这个参数可以提高Source搬运Event到Channel时的性能
2 Channel
type选择memory是Channel的性能最好,不过容易丢失数据,file的话容错性更好,但是性能比memory channel差
file channel的datadirs配置多个不同盘下的目录可以提高性能
Capacity参数决定Channel可容纳最大的event条数,transacCapacity参数决定每次Source往channel里面写的最大event条数和每次Sink从channel里面读的最大event条数
特别注意:transactionCapacity需要大于Source和Sink的batchSize参数
Flume的事务机制
Flume的事务机制与数据库的事务机制类似,
Flume采集数据丢失吗?
按照Flume的架构来看的话,Flume是不可能丢失数据,因为内部有完善的事务机制,Source到Channel是事务性的,Channel到Sink是事务性的,有可能丢失数据是agent宕机的时候,如果channel使用的memory channel的话,会造成数据的丢失
可能会造成数据的重复,sink发送数据,没有接到回应,再次发送,可能会造成数据的重复