尚硅谷大數(shù)據(jù)技術(shù)之Flume(新)第1章 概述

1.1 Flume定義

Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume基于流式架構(gòu),靈活簡(jiǎn)單。

1.2?Flume組成架構(gòu)

Flume組成架構(gòu)如圖1-1,圖1-2所示:

下面我們來(lái)詳細(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)槌绦蛩劳?、機(jī)器宕機(jī)或者重啟都會(huì)導(dǎo)致數(shù)據(jù)丟失。

File?Channel將所有事件寫到磁盤。因此在程序關(guān)閉或機(jī)器宕機(jī)的情況下不會(huì)丟失數(shù)據(jù)。