Flume
source:taildir source(断点续传)
taildir挂了怎么办?不会丢数字;断点续传
channel:filechannel/memorychannel/kafkachannel
filechannel:数据存储于磁盘,优势:可靠性高;劣势:传输速度低
memorychannel:数据存储于内存,优势:传输速度快;劣势:可靠性差
kafkachannel:数据存储于kafka,基于磁盘;优势:可靠性高;传输速度快
kafkachannel》memory channel+kafka sink
生产环境如何选择?
如果下一级是kafka,选择kafka channel;
如果是金融、对钱要求准确的公司,选择file channe;
如果是普通日志,通常选择memory channel;
2.事务:source到channel是put,channel到sink是take
3.Flume Channel选择器
Channel Selectors有两种类型:Replicating Channel Selector和Multiplexing Channel Selector.这两种Selector的区别是:Replicating会将source过来的events发往所有channel,而Multiplexing可以选择该发往哪些Channel.
4.Flume采集数据会丢失吗?
如果是FileChannel不会,Channel存储可以存储在File中,数据传输自身有事务。
如果是MemoryChannel有可能丢。
kafka
1.架构:
生产者、Broker、消费者、zk;
注意:zookeeper中保存Broker id和消费者offsets等信息,但是没有生产者消息。
2.kafka的机器数量
kafka机器数量=2(峰值生产速度*副本数/100)+1
3.副本数设定
一般设置为2个,副本的优势:提高可靠性;劣势:增加了网络IO传输
4.kafka压测
kafka压测时,可以查看到哪个地方出现了瓶颈(cpu,内存,网络IO).一般都是网络IO达到瓶颈。
5.kafka日志保存时间
生产环境建议3天
6.kafka的ISR副本同步队列
ISR,副本同步队列。ISR中包括Leader和Follower。如果Leader进程挂掉,会在ISR队列中选择一个服务作为新的Leader。有replica.lag.max.message(延迟条数)和replica.lag.time…max.ms(延迟时间)两个参数决定一台服务器是否可以加入ISR副本队列,在0.10版本移除了replica.lag.max.message参数,防止服务频繁的进去队列。
任何一个维度超过阈值都会把Follower剔除出ISR,存入OSR列表,新加入的Follower也会先存入在OSR中。