複製鏈接
請複製以下鏈接發送給好友

flume

(日誌收集系統)

鎖定
Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。
當前Flume有兩個版本Flume 0.9X版本的統稱Flume-og,Flume1.X版本的統稱Flume-ng。由於Flume-ng經過重大重構,與Flume-og有很大不同,使用時請注意區分。
中文名
水槽
外文名
flume
特    點
聚合和傳輸的系統
實    質
孵化項目

flume日誌收集

Flume最早是Cloudera提供的日誌收集系統,是Apache下的一個孵化項目,Flume支持在日誌系統中定製各類數據發送方,用於收集數據。

flume數據處理

Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力 。Flume提供了從console(控制枱)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日誌系統),支持TCPUDP等2種模式,exec(命令執行)等數據源收集數據的能力。

flume工作方式

Flume-og採用了多Master的方式。為了保證配置數據的一致性,Flume引入了ZooKeeper,用於保存配置數據,ZooKeeper本身可保證配置數據的一致性和高可用,另外,在配置數據發生變化時,ZooKeeper可以通知Flume Master節點。Flume Master間使用gossip協議同步數據。
Flume-ng最明顯的改動就是取消了集中管理配置的 Master 和 Zookeeper,變為一個純粹的傳輸工具。Flume-ng另一個主要的不同點是讀入數據和寫出數據由不同的工作線程處理(稱為 Runner)。 在 Flume-og 中,讀入線程同樣做寫出工作(除了故障重試)。如果寫出慢的話(不是完全失敗),它將阻塞 Flume 接收數據的能力。這種異步的設計使讀入線程可以順暢的工作而無需關注下游的任何問題。

flume優勢

1. Flume可以將應用產生的數據存儲到任何集中存儲器中,比如HDFS,HBase
2. 當收集數據的速度超過將寫入數據的時候,也就是當收集信息遇到峯值時,這時候收集的信息非常大,甚至超過了系統的寫入數據能力,這時候,Flume會在數據生產者和數據收容器間做出調整,保證其能夠在兩者之間提供平穩的數據.
3. 提供上下文路由特徵
4. Flume的管道是基於事務,保證了數據在傳送和接收時的一致性.
5. Flume是可靠的,容錯性高的,可升級的,易管理的,並且可定製的。

flume具有特徵

1. Flume可以高效率的將多個網站服務器中收集的日誌信息存入HDFS/HBase中
2. 使用Flume,我們可以將從多個服務器中獲取的數據迅速的移交給Hadoop中
3. 除了日誌信息,Flume同時也可以用來接入收集規模宏大的社交網絡節點事件數據,比如facebook,twitter,電商網站亞馬遜,flipkart等
4. 支持各種接入資源數據的類型以及接出數據類型
5. 支持多路徑流量,多管道接入流量,多管道接出流量,上下文路由等
6. 可以被水平擴展

flume結構

Agent主要由:source,channel,sink三個組件組成.
Source:
數據發生器接收數據,並將接收的數據以Flume的event格式傳遞給一個或者多個通道channel,Flume提供多種數據接收的方式,比如Avro,Thrift,twitter1%等
Channel:
channel是一種短暫的存儲容器,它將從source處接收到的event格式的數據緩存起來,直到它們被sinks消費掉,它在source和sink間起着橋樑的作用,channel是一個完整的事務,這一點保證了數據在收發的時候的一致性. 並且它可以和任意數量的source和sink鏈接. 支持的類型有: JDBC channel , File System channel , Memory channel等.
sink:
sink將數據存儲到集中存儲器比如Hbase和HDFS,它從channels消費數據(events)並將其傳遞給目標地. 目標地可能是另一個sink,也可能HDFS,HBase.