1. 程式人生 > 實用技巧 >分散式日誌收集系統- Cloudera Flume 介紹

分散式日誌收集系統- 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,使用者可以對資料進行預處理。

轉載於:https://blog.51cto.com/yaoyinjie/818739