在企业中必须要清楚流式数据采集框架flume和kafka的定位是什么:
1 Flume
flume:cloudera公司研发
1.适合多个生产者;
多数据源数据汇总
可以参考Flume采集案例:https://blog.csdn.net/weixin_38023225/article/details/102495990
2.适合下游数据消费者不多的情况;
如果消费者多(如上图HDFS,JMS等),Agent foo会产生多个副本(Channel1,Channel2,Channel3)对应,数据冗余严重。
可参考Flume采集案例:https://blog.csdn.net/weixin_38023225/article/details/102487745
3.适合数据安全性要求不高的操作;
更多的是使用Memory Channel,在实时框架中处理,追求的是速度,无本地缓存,数据有丢失风险。
4.适合与Hadoop生态圈对接的操作。
如,可以通过配置文件配置hdfs sink, hbase sink,直接可以对接HDFS,HBASE等,不用写多余代码。
2 Kafka
kafka:linkedin公司研发
1.适合数据下游消费众多的情况;
消息是基于pull模式,由消费者自己决定
2.适合数据安全性要求较高的操作,支持replication。
安全性:有本地文件缓存(默认存储7天)
支持replication:
kafka副本与flume副本机制不同
flume副本机制是从消费者出发,新增消费者就必须新增副本Channel。
flume副本是从数据安全性,可靠性出发,可以设置1个副本,也可以设置多个副本(Leader/Fllower模式,生产消费者只与Leader交流)。
3 常用模型
线上数据(生产者多) --> flume --> kafka --> flume(根据情景增删该流程) --> HDFS