FLUME企业面试题
1.Flume的source,Sink,Channel的作用
(1)Source的组件是专门用来收集日志数据的,可以采集各种类型、各种格式的日志数据;包括:avro,thrift,exec,jms,spooling directory,netcat,sequence,generator,syslog,http,legacy。
(2)Channel组件的作用是对采集到的数据进行缓存,可以存放在memory或者file里,其中file channel 将数据缓存到存磁盘中,即使宕机也不必担心数据丢失,但是配置比较麻烦。
(3)Sink组件是将数据发送至目的地,目的地址包括:HDFS、Logger、avro、thrift、ipc、file、Hbase、solr以及自定义。
FLume 的组成架构:
#### Flume参数调优
1、Source
增加source的个数(使用Tair Dir Source时可以增加FileGroup的个数)可以增大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也不是越多越好够用就行,过多的Sink会占用系统资源,造成系统资源不必要的浪费。
batchSize参数决定Sink一次批量从Channel读取的event条数,适当调大这个参数可以提高Sink从Channel搬出event的性能。
FLume的事务机制
flume的事务机制(类似于数据库的事务机制):FLume使用两个独立的事务分别负责从source到channel,以及从channel到sink的事件传递。比如spooling directory source为文件的每一行创建一个事务一旦事务中的所有数据都传输到channel且提交成功,那么Source就将该文件标记为完成。同理,事务以类似的方式处理从Channel到Sink的传递过程,如果因为某种原因使得事务无法记录,那么事务就会回滚。且所有的事务都会保存在channel中等待重新传递。