分佈式日誌收集系統- Cloudera Flume 介紹

    Flume是Cloudera提供的日誌收集系統,具有分佈式、高可靠、高可用性等特點,對海量日誌採集、聚合和傳輸, Flume支持在日誌系統中定製各類數據發送方, 同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方的能力.

 Flume 部署結構

  flume架構簡單,可靠,靈活, 數據流(data flow)是flume中最主要的抽象,data flow描述了數據從產生,傳輸、處理並最終寫入目的地的一條路徑, 數據流由一系列邏輯節點組成,它們能對接受到的事件(EVENT)進行傳輸,聚合等操作(在上圖中,實線描述了data flow)
   Agent: 用於採集數據,agent是flume中產生數據流的地方,同時,agent會將產生的數據流傳輸到collector。
  Collector: 用於接受數據,對數據進行聚合,往往會產生一個更大的流。

邏輯節點
   邏輯節點是一個非常靈活的抽象, 每一個邏輯節點都有兩個組件組成(source 和 sink),source告訴邏輯節點從哪裏去收集數據,sink告訴邏輯節點將數據發送到什麼地方.在source與sink之間可以添加一些裝飾器, 用於對經過的數據(event)做簡單處理

 

邏輯節點與物理節點
   理解邏輯節點和物理節點之間的區別很重要,物理節點對應於一臺機器上的單獨的一個JVM進程, 通常一臺物理機器對應一個物理節點, 物理節點可以作爲邏輯節點的容器, 一個物理節點可以映射出多個邏輯節點,這些邏輯節點鏈接成一起, 形成數據流

flume 設計目標 【Reliability,Scalability,Manageability,Extensibility】
  Reliability:Flume提供3中數據可靠性選項,包括End-to-end, Store on failure和Best effort, 其中End-to-end使用了磁盤日誌和接受端Ack的方式,保證Flume接受到的數據會最終到達目的.Store on failure在目的不可用的時候,數據會保持在本地硬盤。和End-to-end不同的是,如果是進程出現問題,Store on failure可能會丟失部分數據.Best effort不做任何QoS保證。
  Scalability:Flume的3大組件:collector、master和storage tier都是可伸縮的。需要注意的是,Flume中對事件的處理不需要帶狀態,它的Scalability可以很容易實現
  Manageability:Flume利用ZooKeeper和gossip,保證配置數據的一致性、高可用。同時,多Master,保證Master可以管理大量的節點.
  Extensibility:基於Java,用戶可以爲Flume添加各種新的功能,如通過繼承Source,用戶可以實現自己的數據接入方式,實現Sink的子類,用戶可以將數據寫往特定目標,同時,通過SinkDecorator,用戶可以對數據進行預處理。

 

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