flume,kafka區別、協同與詳解
阿新 • • 發佈:2019-06-07
簡介 | 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這樣的系統幫你去做傳輸。