简介 | socket模式 | 简单数据处理 | 开发公司 | |
Flume | 日志采集系统 (管道流方式,提供了很多的默认实现,让用户通过参数部署,及扩展API.) |
| 可编写Interceptor,对数据进行拦截,对密码进行MD5加密再写入hdfs | Cloudera |
Kafka | 消息中间件(一个可持久化的分布式的消息队列) |
| 流处理系统,也就是作为一个缓存(数据量大的时候会保存到本地硬盘,不单单是内存),生产消息太多了,消费不过来,就先存着。 |
Flume最早是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目
Kafka是知名社交网络公司LinkedIn于2010年12月份开源的分布式消息系统,主要由Scala语言开发,于2012年成为Apache顶级项目,目前被广泛应用在包括Twitter,Netffix和Tumblr等在内的大型互联网站点上。
使用命令:
创建接收server | ||
Flume | 根据conf文件配置来配置:
| |
Kafka | 其他命令详解:Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer: — kafka命令大全 — |
Flume也可以打开端口来监听,其配置文件为:
agent1.sources = source1
agent1.sinks = sink1
agent1.channels = channel1
agent1.sources.source1.type = netcat
agent1.sources.source1.bind = 0.0.0.0
agent1.sources.source1.port = 9999
agent1.sinks.sink1.type = logger
agent1.channels.channel1.type = memory
agent1.channels.channel1.capacity = 1000
agent1.channels.channel1.transactionCapacity = 100
agent1.sources.source1.channels = channel1
agent1.sinks.sink1.channel = channel1
启动命令为:
flume-ng agent -c conf -f conf/flume-demo-logger.conf --name agent1 -Dflume.root.logger=INFO,Console
- Kafka 是一个非常通用的系统。你可以有许多生产者和很多的消费者共享多个主题Topics。相比之下,Flume是一个专用工具被设计为旨在往HDFS,HBase发送数据。它对HDFS有特殊的优化,并且集成了Hadoop的安全特性。如果数据被多个系统消费的话,使用kafka;如果数据被设计给Hadoop使用,使用Flume。
- Flume可以使用拦截器实时处理数据。这些对数据屏蔽或者过量是很有用的。Kafka需要外部的流处理系统才能做到。
- Kafka和Flume都是可靠的系统,通过适当的配置能保证零数据丢失。然而,Flume不支持副本事件。于是,如果Flume代理的一个节点奔溃了,即使使用了可靠的文件管道方式,你也将丢失这些事件直到你恢复这些磁盘。如果你需要一个高可靠行的管道,那么使用Kafka是个更好的选择。
- 相对于日志采集:日志采集。线上数据一般主要是落地文件或者通过socket传输给另外一个系统。这种情况下,你很难推动线上应用或服务去修改接口,直接向kafka里写数据。这时候你可能就需要flume这样的系统帮你去做传输。
多系统联动详解:Flume+Kafka+Storm+Redis构建大数据实时处理系统