Flume (面试)重点

1.如何实现Flume 数据传输的监控的?
答:使用第三方框架ganglia ,http等实时监控Flume

2.Flume的source,sink,channel 的作用?source 有什么类型?
答:
作用:
(1)source 组件是专门用来收集数据的,可以处理各种类,各种格式的日志数据,包括avro,exec,netcat,http。
(2)channel 组件对采集到的数据进行缓存,可以放在Memory或File 中。
(3)sink组件是用于把数据发送到目的地的组件,目的地包括hdfs,Logger,avro,file,hbase,自定义。

采用source类型:
(1)监控后台日志: exec
(2)监控后台产生日志的端口:netcat

3.Flume的channel selector

在这里插入图片描述
channel selector ,可以让不同的项目日志通过不同的channel到不同的sink中去。

channel selector有两种类型:
(1)replicating channel selector (default):会将source传过来的events发往所有的channel中去。
(2)multiplexing channel selector可以选择发往哪些channel

4.Flume 参数调优

(1)source :增加source个数(使用Tair Dir Source时可增加FileGroups个数)可以增大source的读取能力。例如:当某一个目录产生的文件过多时需要将这个文件目录拆分成多个文件目录,同时配置好多个source以保证source有足够的能力获取到新产生的数据。
batchSize 参数决定source一次批量运输到channel的event条数,适当调大这个参数可以提高source 搬运event 到channel时的性能。

(2)channel :type选择memory 时channel的性能最好,但是如果Flume进程意外挂掉可能会丢失数据。type选择file时channel的容错性更好,但是性能上会比memory channel 差
使用file channel 时dataDirs配置多个不同盘下的目录可以提高性能。
capacity 参数决定channel 可容纳最大的event 条数。transactionCapacity参数决定每次source往channel里面写的最大event条数和每次sink从channel里面读的最大event条数。
transactionCapacity需要大于source 和sink的batchSize参数

(3)sink:增加sink的个数可以增加sink的消费event的能力。sink也不是越多越好,够用就OK,过多的sink会占用系统资源,造成系统资源的浪费。
batchSize 参数决定sink一次批量从channel读取的event条数,适当调大这个参数可以提高sink 从channel搬出event时的性能。

5.Flume事务机制
Flume的事务机制(类似数据库的事务机制):Flume使用单独两个独立的事务分别是负责从source到channel的,以及从channel到sink的事件传递。比如spooling directory source 为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到channel且提交成功,那么source就将该文件标记为完成。同理,事务以类似的方式处理从channel到sink的传递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚(put事务是回滚到putlist中,take事务是会滚到channel中,如果传一半断开了,那么把传过去的一半会丢弃掉)。且所有的事件都保持到channel中,等待重新传递。

6.Flume 采集数据会丢失嘛?
答:根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事务机制,source到channel是事务性的,channel到sink是事务性的,因此这两个环节不会出现数据丢失的,或者channel存储数据已满,导致source不再写入,未写入的数据丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值