0129 Kafka 與 Flume 如何選擇

採集層 主要可以使用Flume, Kafka兩種技術。

FlumeFlume 是管道流方式,提供了很多的默認實現,讓用戶通過參數部署,及擴展API.

KafkaKafka是一個可持久化的分佈式的消息隊列。

  • Kafka 是一個非常通用的系統。你可以有許多生產者和很多的消費者共享多個主題Topics。相比之下,Flume是一個專用工具被設計爲旨在往HDFS,HBase發送數據。它對HDFS有特殊的優化,並且集成了Hadoop的安全特性。所以,Cloudera 建議如果數據被多個系統消費的話,使用kafka;如果數據被設計給Hadoop使用,使用Flume

 

  • 正如你們所知Flume內置很多的sourcesink組件。然而,Kafka明顯有一個更小的生產消費者生態系統,並且Kafka的社區支持不好。希望將來這種情況會得到改善,但是目前:使用Kafka意味着你準備好了編寫你自己的生產者和消費者代碼。如果已經存在的Flume SourcesSinks滿足你的需求,並且你更喜歡不需要任何開發的系統,請使用Flume

 

  • Flume可以使用攔截器實時處理數據。這些對數據屏蔽或者過量是很有用的。Kafka需要外部的流處理系統才能做到。

 

  • KafkaFlume都是可靠的系統,通過適當的配置能保證零數據丟失。然而,Flume不支持副本事件。於是,如果Flume代理的一個節點奔潰了,即使使用了可靠的文件管道方式,你也將丟失這些事件直到你恢復這些磁盤。如果你需要一個高可靠行的管道,那麼使用Kafka是個更好的選擇。

 

  • FlumeKafka可以很好地結合起來使用。如果你的設計需要從KafkaHadoop的流數據,使用Flume代理並配置KafkaSource讀取數據也是可行的:你沒有必要實現自己的消費者。你可以直接利用FlumeHDFSHBase的結合的所有好處。你可以使用Cloudera Manager對消費者的監控,並且你甚至可以添加攔截器進行一些流處理。

FlumeKafka可以結合起來使用。通常會使用Flume + Kafka的方式。其實如果爲了利用Flume已有的寫HDFS功能,也可以使用Kafka + Flume的方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章