Kafka 與 Flume

 

一、Kafka與Flume比較

1、Flume主要是爲了發送數據給HDFS和HBase用的工具。  Flume集成了Hadoop的安全體系。

      如果數據將被多個系統所消費,那麼採用Kafka。

      Kafka是一個更加通用的系統。 可以有很多數據的Producer和Consumer。  這些Consumer之間共享多個主題。

2、Flume具有多個內置的源和sink,

      如果Flume的源和sink正好滿足你的要求,而且你希望使用一個不需要開發的採集系統(只需要配置),那麼你就使用Flume。

     相對而言,Kafka只有一個較少的Producer和COnsumer生態圈。

     如果你想開發一個採集系統,那就基於Kafka開發。

3、Flume可以使用interceptors來即時處理數據,這對對數據過濾由幫助;

     Kafka需要外部的流處理系統來完成這個功能。

4、都是可靠的系統,都可以保證數據不會丟失。

5、Flume和Kafka可以一起工作。

     如果你需要從Kafka流數據到Hadoop,那麼就可以將Flume代理和Kafka源一起使用來讀取數據。

 

二、Kafka 消息訂閱分發系統

   是一個分佈式的消息隊列,可用在不同的系統之間傳遞數據。  實際上是一個消息發佈訂閱系統。

   開源

   Scala編寫

   多個交換部門之間進行交換,每兩個之間都建立交換通道的話,最後形成一張維護難度極大的數據交換網絡,不好。

   Kafka可以解決這個問題,它可以擔當中間橋樑。

   它使用了多種優化機制,整體架構比較新穎(push/pull),更適合異構集羣

   它實現了高吞吐率,在普通的服務器上每秒也能處理幾十萬條信息。

 

Kafka架構:

         

        Kafka集羣由多個Kafka實例(server)組成,每個實例成爲Broker

       無論是Kafka集羣還是Producer、Consumer都依賴於ZooKeeper來保證分佈式協作、負載均衡。 

Kafka中主要由三種角色:Producer、Broker、Consumer。

    1 Producer(生產者)    用於將流數據發送到Kafka消息隊列上,它的任務時向Broker發送數據。

    2 Broker        Kafka包含一個或多個服務器,這種服務器成爲Broker。

    3 Consumer(消費者)      作用是處理數據,   比如將消息加載到持久化存儲系統上。

 

     Kafka是基於文件系統存儲。 通過分區(partiton)將文件內容分散到多個server上來避免文件大小達到單機磁盤的上限,沒分分區都會被當前server(Kafka實例)保存。

   更多kafka介紹,請見本人另一篇博文: https://blog.csdn.net/kzadmxz/article/details/80487313

 

 

三、Flume【海量數據(日誌)採集系統

        用於從不同的數據源可靠有效地加載數據流到HDFS中。

       具有一定的容錯性,並支持failover和系統恢復。

       Flume是一個分佈式、高容錯、高可靠、高可用、易於定製和擴展的輕量級工具,

       非常簡單,容易適應各種方式的數據收集

       Java編寫,需要運行在Java1.6之上。

       Flume將數據從產生、傳輸、處理並寫入目標的路徑的過程抽象爲數據流

      總之,Flume是一個可擴展、適合複雜環境的海量數據採集系統

 

Flume架構: 

        

 

 

核心概念:

    事件 (Event):Flume傳遞的一個數據單元,除了採集到的數據(如單個日誌)之外,它還帶有可選的消息頭。

    源 (Source)

    接收器 (Sink)

    通道 (Channel)

    數據流 (Flow)

    Flume代理 (Agent)

 

Flume在源Source和接收段Sink 使用了transaction(事務)機制保證在數據傳輸中沒有數據丟失。如圖

            

 

 

 

 

 

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