Cloudera Flume介紹

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



上圖的Flume的Architecture,在Flume中,最重要的抽象是data flow(數據流),data flow描述了數據從產生,傳輸、處理並最終寫入目標的一條路徑。在上圖中,實線描述了data flow。
其中,Agent用於採集數據,agent是flume中產生數據流的地方,同時,agent會將產生的數據流傳輸到collector。對應的,collector用於對數據進行聚合,往往會產生一個更大的流。
Flume提供了從console(控制檯)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日誌系統,支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。同時,Flume的數據接受方,可以是console(控制檯)、text(文件)、dfs(HDFS文件)、RPC(Thrift-RPC)和syslogTCP(TCP syslog日誌系統)等。
其中,收集數據有2種主要工作模式,如下:
Push Sources:外部系統會主動地將數據推送到Flume中,如RPC、syslog。
Polling Sources:Flume到外部系統中獲取數據,一般使用輪詢的方式,如text和exec。

注意,在Flume中,agent和collector對應,而source和sink對應。Source和sink強調發送、接受方的特性(如數據格式、編碼等),而agent和collector關注功能。

Flume Master用於管理數據流的配置,如下圖。



爲了保證可擴展性,Flume採用了多Master的方式。爲了保證配置數據的一致性,Flume引入了ZooKeeper,用於保存配置數據,ZooKeeper本身可保證配置數據的一致性和高可用,另外,在配置數據發生變化時,ZooKeeper可以通知Flume Master節點。
Flume Master間使用gossip協議同步數據。

下面簡要分析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,用戶可以對數據進行一定的預處理。

更多介紹請參考http://blog.chinaunix.net/link.php?url=http://archive.cloudera.com%2Fcdh%2F3%2Fflume%2FUserGuide%2F

 

 

本文轉自:http://caibinbupt.iteye.com/blog/765960

發佈了51 篇原創文章 · 獲贊 11 · 訪問量 87萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章