尚硅谷大數(shù)據(jù)技術(shù)之Flume(新)第1章 概述
1.1 Flume定義
Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume基于流式架構(gòu),靈活簡單。
1.2?Flume組成架構(gòu)
Flume組成架構(gòu)如圖1-1,圖1-2所示:
下面我們來詳細(xì)介紹一下Flume架構(gòu)中的組件。
1.2.1 Agent
Agent是一個(gè)JVM進(jìn)程,它以事件的形式將數(shù)據(jù)從源頭送至目的,是Flume數(shù)據(jù)傳輸?shù)幕締卧?/p>
Agent主要有3個(gè)部分組成,Source、Channel、Sink。
1.2.2?Source
Source是負(fù)責(zé)接收數(shù)據(jù)到Flume Agent的組件。Source組件可以處理各種類型、各種格式的日志數(shù)據(jù),包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。
1.2.3?Channel
Channel是位于Source和Sink之間的緩沖區(qū)。因此,Channel允許Source和Sink運(yùn)作在不同的速率上。Channel是線程安全的,可以同時(shí)處理幾個(gè)Source的寫入操作和幾個(gè)Sink的讀取操作。
Flume自帶兩種Channel:Memory Channel和File Channel。
Memory Channel是內(nèi)存中的隊(duì)列。Memory?Channel在不需要關(guān)心數(shù)據(jù)丟失的情景下適用。如果需要關(guān)心數(shù)據(jù)丟失,那么Memory Channel就不應(yīng)該使用,因?yàn)槌绦蛩劳觥C(jī)器宕機(jī)或者重啟都會(huì)導(dǎo)致數(shù)據(jù)丟失。
File?Channel將所有事件寫到磁盤。因此在程序關(guān)閉或機(jī)器宕機(jī)的情況下不會(huì)丟失數(shù)據(jù)。