文章目錄
-
- 一、Flume 概述(實時、日志、傳輸)
-
- 1、概念
- 2、Flume 基礎架構
-
- 2.1 Agent
- 2.2 Source
- 2.3 Sink
- 2.4 Channel
- 2.5 Event
一、Flume 概述(實時、日志、傳輸)
1、概念
- Flume 是 Cloudera 提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統。Flume基于流式架構,靈活簡單。(實時日志傳輸)
- 補充:Hadoop 三大發行版本
- Apache Hadoop: 最原始(最基礎)的版本
- Cloudera Hadoop: 内部內建了很多大資料架構。對應産品CDH
- Hortonworks Hadoop: 文檔較好。對應産品HDP(被Cloudera 收購)

- Flume 最主要的作用就是,實時讀取伺服器本地磁盤的資料,将資料寫入到 HDFS
2、Flume 基礎架構
- Flume 組成架構
2.1 Agent
- Agent 是一個 JVM 程序,它以事件的形式将資料從源頭送至目的地。
- Agent 主要有3個部分組成,Source、Channel、Sink。
2.2 Source
- Source 是負責接收資料到 Flume Agent 的元件。Source 元件可以處理各種類型、各種格式的日志資料,包括 avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。
2.3 Sink
- Sink 不斷地輪詢 Channel 中的事件且批量地移除它們,并将這些事件批量寫入到存儲或索引系統、或者被發送到另一個Flume Agent。
- Sink 元件目的地包括 hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定義。
2.4 Channel
- Channel 是位于 Source 和 Sink 之間的緩沖區(通道)。是以,Channel 允許 Source 和 Sink 運作在不同的速率上。Channel 是線程安全的,可以同時處理幾個 Source 的寫入操作和幾個Sink 的讀取操作。
- Flume 自帶兩種 Channel:Memory Channel (存儲通道) 和 File Channel(較慢但是穩定)。
- Memory Channel 是記憶體中的隊列。Memory Channel 在不需要關心資料丢失的情景下适用。如果需要關心資料丢失,那麼 Memory Channel 就不應該使用,因為程式死亡、機器當機或者重新開機都會導緻資料丢失。(行為資料)
- File Channel 将所有事件寫到磁盤。是以在程式關閉或機器當機的情況下不會丢失資料。(業務資料)
2.5 Event
- 傳輸單元,Flume 資料傳輸的基本單元,以 Event 的形式将資料從源頭送至目的地。Event 由 Header 和 Body 兩部分組成,Header 用來存放該 event 的一些屬性,為K-V結構,Body 用來存放該條資料,形式為位元組數組。