Flume的基礎技術理論

一、flume介紹

1、Flume 最早是Cludera提供的日誌收集系統,後貢獻給Apache;

2、Flume 是一個分佈式的海量日誌採集,聚合,轉移工具;

3、Flume的開發語言爲java;

4、Flume的工作流程:source不斷的接收數據,將數據封裝成一個一個的event,然後將event發送給channel,chanel作爲一個緩衝區會臨時存放這些event數據,隨後sink會將channel中的event數據發送到指定的地方—-例如HDFS等;

二、Flume的數據流模型

1、event事件

(1)event將傳輸的數據進行封裝,是flume傳輸數據的基本單位,如果是文本文件,通常是一行記錄,event也是事務的基本單位;

(2)event從source,流向channel,再到sink,本身爲一個字節數組,並可攜帶headers(頭信息)信息;

(3)event代表着一個數據的最小完整單元,從外部數據源來,向外部的目的地去;

(4)一個完整的event包括:event headers、event body、event信息(即文本文件中的單行記錄),如下所示:

2、Source

source組件是專門用來收集數據的,可以處理各種類型、各種格式的日誌數據,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定義;

3、Channel

用於橋接Sources和Sinks,類似於一個隊列。source組件把數據收集來以後,臨時存放在channel中,即channel組件在agent中是專門用來存放臨時數據的——對採集到的數據進行簡單的緩存,可以存放在memory、jdbc、file等等;

4、Sink

從Channel 中讀取並移除event,把數據發送到目的地的組件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義;

5、agent

(1)flume運行的核心就是agent,agent本身是一個Java進程。

(2)agent 裏面包含3個核心的組件:source—->channel—–>sink,類似生產者、倉庫、消費者的架構;

三、Flume的特性

1、可靠性、安全性

只有在sink將channel中的數據成功發送出去之後,channel纔會將臨時event數據進行刪除,這種機制保證了數據傳輸的可靠性與安全性。

2、可恢復性

通道可以以內存或文件的方式實現,內存更快,但不可恢復。文件較慢但提供了可恢復性。

四、Flume的採集系統機構圖

1、多個Agent

2、多個sink的數據接入到一個source中

3、一個Source的數據放到多個Channel中,每個Channel對應的Sink有不同的數據落地

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