1. 程式人生 > >Kafka 與 Flume

Kafka 與 Flume

index 取數 設計 復制 轉移 pen 做了 流式 推薦

https://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/index.html

Kafka 與 Flume 很多功能確實是重復的。以下是評估兩個系統的一些建議:

  1. Kafka 是一個通用型系統。你可以有許多的生產者和消費者分享多個主題。相反地,Flume 被設計成特定用途的工作,特定地向 HDFS 和 HBase 發送出去。Flume 為了更好地為 HDFS 服務而做了特定的優化,並且與 Hadoop 的安全體系整合在了一起。基於這樣的結論,Hadoop 開發商 Cloudera 推薦如果數據需要被多個應用程序消費的話,推薦使用 Kafka,如果數據只是面向 Hadoop 的,可以使用 Flume。

  2. Flume 擁有許多配置的來源 (sources) 和存儲池 (sinks)。然後,Kafka 擁有的是非常小的生產者和消費者環境體系,Kafka 社區並不是非常支持這樣。如果你的數據來源已經確定,不需要額外的編碼,那你可以使用 Flume 提供的 sources 和 sinks,反之,如果你需要準備自己的生產者和消費者,那你需要使用 Kafka。

  3. Flume 可以在攔截器裏面實時處理數據。這個特性對於過濾數據非常有用。Kafka 需要一個外部系統幫助處理數據。

  4. 無論是 Kafka 或是 Flume,兩個系統都可以保證不丟失數據。然後,Flume 不會復制事件。相應地,即使我們正在使用一個可以信賴的文件通道,如果 Flume agent 所在的這個節點宕機了,你會失去所有的事件訪問能力直到你修復這個受損的節點。使用 Kafka 的管道特性不會有這樣的問題。

  5. Flume 和 Kafka 可以一起工作的。如果你需要把流式數據從 Kafka 轉移到 Hadoop,可以使用 Flume 代理 (agent),將 kafka 當作一個來源 (source),這樣可以從 Kafka 讀取數據到 Hadoop。你不需要去開發自己的消費者,你可以使用 Flume 與 Hadoop、HBase 相結合的特性,使用 Cloudera Manager 平臺監控消費者,並且通過增加過濾器的方式處理數據。

Kafka 與 Flume