日誌收集
Flume最早是Cloudera提供的日誌收集系統,目前是Apache下的一個孵化項目,Flume支持在日誌系統中定製各類數據傳送方,用於收集數據。
數據處理
Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力 。Flume提供了從console(控制台)、RPC(Thrift-RPC)、text(檔案)、tail(UNIX tail)、syslog(syslog日誌系統),支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。
工作方式
Flume-og採用了多Master的方式。為了保證配置數據的一致性,Flume引入了ZooKeeper,用於保存配置數據,ZooKeeper本身可保證配置數據的一致性和高可用,另外,在配置數據發生變化時,ZooKeeper可以通知Flume Master節點。Flume Master間使用gossip協定同步數據。
Flume-ng最明顯的改動就是取消了集中管理配置的 Master 和 Zookeeper,變為一個純粹的傳輸工具。Flume-ng另一個主要的不同點是讀入數據和寫出數據現在由不同的工作執行緒處理(稱為 Runner)。 在 Flume-og 中,讀入執行緒同樣做寫出工作(除了故障重試)。如果寫出慢的話(不是完全失敗),它將阻塞 Flume 接收數據的能力。這種異步的設計使讀入執行緒可以順暢的工作而無需關注下游的任何問題。
優勢
1. Flume可以將套用產生的數據存儲到任何集中存儲器中,比如HDFS,HBase
2. 當收集數據的速度超過將寫入數據的時候,也就是當收集信息遇到峰值時,這時候收集的信息非常大,甚至超過了系統的寫入數據能力,這時候,Flume會在數據生產者和數據收容器間做出調整,保證其能夠在兩者之間提供平穩的數據.
3. 提供上下文路由特徵
4. Flume的管道是基於事務,保證了數據在傳送和接收時的一致性.
5. Flume是可靠的,容錯性高的,可升級的,易管理的,並且可定製的。
具有特徵
1. Flume可以高效率的將多個網站伺服器中收集的日誌信息存入HDFS/HBase中
2. 使用Flume,我們可以將從多個伺服器中獲取的數據迅速的移交給Hadoop中
3. 除了日誌信息,Flume同時也可以用來接入收集規模宏大的社交網路節點事件數據,比如facebook,twitter,電商網站如亞馬遜,flipkart等
4. 支持各種接入資源數據的類型以及接出數據類型
5. 支持多路徑流量,多管道接入流量,多管道接出流量,上下文路由等
6. 可以被水平擴展
結構
Agent主要由:source,channel,sink三個組件組成.
Source:
從數據發生器接收數據,並將接收的數據以Flume的event格式傳遞給一個或者多個通道channel,Flume提供多種數據接收的方式,比如Avro,Thrift,twitter1%等
Channel:
channel是一種短暫的存儲容器,它將從source處接收到的event格式的數據快取起來,直到它們被sinks消費掉,它在source和sink間起著一共橋樑的作用,channal是一個完整的事務,這一點保證了數據在收發的時候的一致性. 並且它可以和任意數量的source和sink連結. 支持的類型有: JDBC channel , File System channel , Memort channel等.
sink:
sink將數據存儲到集中存儲器比如Hbase和HDFS,它從channals消費數據(events)並將其傳遞給目標地. 目標地可能是另一個sink,也可能HDFS,HBase.