Flume和Kafka的区别?
Flume
一般用于日志采集,可以定制很多数据源,减少开发量,基本架构是一个
Flume
进程agent(
source
、拦截器、选择器、
channel<Memory Channel
、
File Channel>
、
sink
),其中传递的是原 子性的event
数据。
Kafka
一般用于日志缓存,是一个可持久的分布式消息队列,自带存储,提供
push
和
pull
两种存储数据功 能;包括producer
、
kafka Cluster
(
broker
:
topic
、
partition
)、
consumer
,依赖于 Zookeeper(
brokerid
、
topic
、
partition
元数据存在
ZNode
,
partition
选举
leader
依赖
Zookeeper
)。
1
、
Flume
和
Kafka
的侧重点不同
Flume
追求的是数据和数据源、数据流向的多样性,适合多个生产者的场景;
Flume
有自己内置的多种 source和
sink
组件,具体操作方式是编写
source
、
channel
和
sink
的
.conf
配置文件,开启
flume
组件的时候 用命令关联读取配置文件实现。
Kafka
追求的是高吞吐,高负载,同一
topic
下可以有多个
partition
,由于是
pull
模式拉取数据,因此适合多个消费者的场景;kafka
没有内置的
producer
和
consumer
组件,需要自己编写代码。
2
、
Flume
和
Kafka
的定位有所不同
Flume
是
cloudera
公司研发,适合多个生产者;适合
下游数据消费者不多
的情况(一个消费者开一个channel);适合
数据安全性要求不高
的操作(数据没有备份、没有副本);适合与
Hadoop
生态圈对接的操作(HDFS
、
Hbase
等);适合生产和收集数据。
Kafka
是
linkedin
公司研发,适合多个消费者;适合
数据下游消费众多
的情况(
kafka
从磁盘读,并且只找Leader读);适合
数据安全性要求较高
的操作,支持
replication
(多副本);适合消费数据。
Flume
是用于将数据发送到
HDFS
的专用工具。
Kafka
可以支持多个应用程序的数据流,而
Flume
专门用于
Hadoop
和大数据分析。
Kafka
可以处理和监视分布式系统中的数据,而
Flume
则从分布式系统中收集数据以将数据存储在集中式数据存储中。