Flume NG基本架構與Flume NG核心概念


  

導讀

  Flume NG是一個分布式、可靠、可用的系統,它能夠將不同數據源的海量日志數據進行高效收集、聚合、移動,最后存儲到一個中心化數據存儲系統中。
由原來的Flume OG到現在的Flume NG,進行了架構重構,並且現在NG版本完全不兼容原來的OG版本!!!
  經過架構重構后,Flume NG更像是一個輕量的小工具,非常簡單,容易適應各種方式日志收集,並支持failover和負載均衡。

 

 

 

 

 

Flume NG 的架構

  Flume NG 的架構圖如下所示。

 

 

 

 

Flume NG核心概念

  Flume的架構主要有以下幾個核心概念:
    1、Event:一個數據單元,帶有一個可選的消息頭。
    2、Flow:Event從源點到達目的點的遷移的抽象。
    3、Client:操作位於源點處的Event,將其發送到Flume Agent。
    4、Agent:一個獨立的Flume進程,包含組件Source、Channel、Sink。
    5、Source:用來消費傳遞到該組件的Event。
    6、Channel:中轉Event的一個臨時存儲,保存有Source組件傳遞過來的Event。
    7、Sink:從Channel中讀取並移除Event,將Event傳遞到Flow Pipeline中的下一個Agent(如果有的話)

 

 

 

 

 


下面我分別介紹以上幾個核心的概念

  1、Event
    1、Event 是Flume數據傳輸的基本單元。
    2、Flume 以事件的形式將數據從源頭傳輸到最終的目的。
    3、Event 由可選的header和載有數據的一個byte array構成。
      1)載有的數據對Flume是不透明的。
      2)Header 是容納了key-value字符串對的無序集合,key在集合內是唯一的。
      3)Header 可以在上下文路由中使用擴展。

 

  2、Client
    1、Client 是一個將原始log包裝成events並且發送它們到一個或者多個agent的實體。
    2、Client 在Flume的拓撲結構中不是必須的,它的目的是從數據源系統中解耦Flume

 

  3、Agent
    1、一個Agent包含Source、Channel、Sink和其他組件。
    2、它利用這些組件將events從一個節點傳輸到另一個節點或最終目的地。
    3、agent是Flume流的基礎部分。
    4、Flume 為這些組件提供了配置、生命周期管理、監控支持。

 

  4、Agent之Source

      1、Source負責接收event或通過特殊機制產生event,並將events批量的放到一個或多個Channel。
      2、Source包含event驅動和輪詢兩種類型。
      3、Source 有不同的類型。
        1)與系統集成的Source:Syslog,NetCat。
        2)自動生成事件的Source:Exec
        3)用於Agent和Agent之間的通信的IPC Source:Avro、Thrift。
      4、Source必須至少和一個Channel關聯。

 

 

 

 

    5、Agent之Channel與Sink

        

 

    6、Agent之Channel
          1、Channel位於Source和Sink之間,用於緩存進來的event。
          2、當Sink成功的將event發送到下一跳的Channel或最終目的地,event才Channel中移除。
          3、不同的Channel提供的持久化水平也是不一樣的:
            1)Memory Channel:volatile。
            2)File Channel:基於WAL實現。
            3)JDBC Channel:基於嵌入Database實現。
          4、Channel支持事物,提供較弱的順序保證。
          5、Channel可以和任何數量的Source和Sink工作。

 

 

 

     7、Agent之Sink
          1、Sink負責將event傳輸到下一跳或最終目的,成功完成后將event從Channel移除。
          2、有不同類型的Sink:
            1)存儲event到最終目的的終端Sink。比如HDFS,HBase。
            2)自動消耗的Sink。比如:Null Sink。
            3)用於Agent間通信的IPC sink:Avro。
          3、Sink必須作用於一個確切的Channel。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM