1、Flume概念 flume是分散式日誌收集系統,將各個伺服器的數據收集起來併發送到指定地方。 Flume是Cloudera提供的一個高可用、高可靠、分散式的海量日誌採集、聚合和傳輸的系統。Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各 ...
1、Flume概念
flume是分散式日誌收集系統,將各個伺服器的數據收集起來併發送到指定地方。
Flume是Cloudera提供的一個高可用、高可靠、分散式的海量日誌採集、聚合和傳輸的系統。Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接收方(可定製)的能力。
2、Event的概念
flume的核心:把數據從數據源source收集過來,再將收到的數據發送到指定的目的地sink。發送到sink之前,會先緩存到channel,待數據真正到達sink後,flume再刪除自己緩存的數據。事務保證在event級別進行。
event將傳輸的數據進行封裝,是flume傳輸數據的基本單位,如果是文本文件,通常是一行記錄,event也是事務的基本單位。
event本身是一個位元組數組,可以攜帶headers信息。
3、flume架構
flume本身是一個agent,是一個java進程,運行在日誌收集節點。
agent包含三個核心組件:source > channel > sink。
source:專門用於收集數據,支持console、RPC、text、tail、syslog、exec。
channel:對採集到的數據進行簡單緩存,可以存放在記憶體、文件、jdbc等
sink:用於把數據發送到目的地,支持HDFS、console、text、RPC、syslogTCP
4、flume運行機制
flume支持多級flume,即sink可以將數據寫入下一個agent的source,從而連成串,整體處理。flume還支持扇入(source可以接收多個輸入)、扇出(sink可以將數據輸出到多個目的地)。
5、flume主要用於大數據處理的數據採集層,如日誌採集。