尚硅谷大數據技術之Flume(新)第1章 概述
1.1 Flume定義
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統。Flume基于流式架構,靈活簡單。
1.2?Flume組成架構
Flume組成架構如圖1-1,圖1-2所示:
下面我們來詳細介紹一下Flume架構中的組件。
1.2.1 Agent
Agent是一個JVM進程,它以事件的形式將數據從源頭送至目的,是Flume數據傳輸的基本單元。
Agent主要有3個部分組成,Source、Channel、Sink。
1.2.2?Source
Source是負責接收數據到Flume Agent的組件。Source組件可以處理各種類型、各種格式的日志數據,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。
1.2.3?Channel
Channel是位于Source和Sink之間的緩沖區。因此,Channel允許Source和Sink運作在不同的速率上。Channel是線程安全的,可以同時處理幾個Source的寫入操作和幾個Sink的讀取操作。
Flume自帶兩種Channel:Memory Channel和File Channel。
Memory Channel是內存中的隊列。Memory?Channel在不需要關心數據丟失的情景下適用。如果需要關心數據丟失,那么Memory Channel就不應該使用,因為程序死亡、機器宕機或者重啟都會導致數據丟失。
File?Channel將所有事件寫到磁盤。因此在程序關閉或機器宕機的情況下不會丟失數據。