1. 程式人生 > >【複習】Flume資料收集學習【圖片+文字說明】

【複習】Flume資料收集學習【圖片+文字說明】

一.Hadoop業務的整體框架流程介紹 

以上是hadoop整體的一個開發流程,我們可以看出flume在整個大資料開發過程中的位置:做最前期資料的收集工作。

二.Flume架構介紹

本文將圍繞Flume的架構、Flume的應用(日誌採集)進行詳細的介紹:

 flume是分散式的日誌收集系統,它將各個伺服器中的資料收集起來並送到指定的地方去,比如說送到圖中的HDFS,簡單來說flume就是收集日誌的。

三.Event資料流向圖

flume的核心是把資料從資料來源(source)收集過來,在將收集到的資料送到指定的目的地(sink)。為了保證輸送的過程一定成功,在送到目的地(sink)之前,會先快取資料(channel),待資料真正到達目的地(sink)後,flume在刪除自己快取的資料。 
在整個資料的傳輸的過程中,流動的是event,即事務保證是在event級別進行的。那麼什麼是event呢?—–event將傳輸的資料進行封裝,是flume傳輸資料的基本單位,如果是文字檔案,通常是一行記錄,event也是事務的基本單位。event從source,流向channel,再到sink,本身為一個位元組陣列,並可攜帶headers(頭資訊)資訊。event代表著一個數據的最小完整單元,從外部資料來源來,向外部的目的地去。 

一個完整的event包括:event headers、event body、event資訊(即文字檔案中的單行記錄。

flume架構介紹 
flume之所以這麼神奇,是源於它自身的一個設計,這個設計就是agent,agent本身是一個java程序,執行在日誌收集節點—所謂日誌收集節點就是伺服器節點。 
agent裡面包含3個核心的元件:source—->channel—–>sink,類似生產者、倉庫、消費者的架構。 
source:source元件是專門用來收集資料的,可以處理各種型別、各種格式的日誌資料,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定義。 
channel:source元件把資料收集來以後,臨時存放在channel中,即channel元件在agent中是專門用來存放臨時資料的——對採集到的資料進行簡單的快取,可以存放在memory、jdbc、file等等。 
sink:sink元件是用於把資料傳送到目的地的元件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。 
flume的執行機制 
flume的核心就是一個agent,這個agent對外有兩個進行互動的地方,一個是接受資料的輸入——source,一個是資料的輸出sink,sink負責將資料傳送到外部指定的目的地。source接收到資料之後,將資料傳送給channel,chanel作為一個數據緩衝區會臨時存放這些資料,隨後sink會將channel中的資料傳送到指定的地方—-例如HDFS等,注意:只有在sink將channel中的資料成功傳送出去之後,channel才會將臨時資料進行刪除,這種機制保證了資料傳輸的可靠性與安全性。

二、Flume 的 一些核心概念:

元件名稱 功能介紹
Agent代理 使用JVM 執行Flume。每臺機器執行一個agent,但是可以在一個agent中包含多個sources和sinks。
Client客戶端 生產資料,執行在一個獨立的執行緒。
Source源 從Client收集資料,傳遞給Channel。
Sink接收器 從Channel收集資料,進行相關操作,執行在一個獨立執行緒。
Channel通道 連線 sources 和 sinks ,這個有點像一個佇列。
Events事件 傳輸的基本資料負載。


謝謝您的鼓勵!