天天看點

Flume概述及組成架構(實時、日志、傳輸)

文章目錄

    • 一、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概述及組成架構(實時、日志、傳輸)
  • Flume 最主要的作用就是,實時讀取伺服器本地磁盤的資料,将資料寫入到 HDFS

2、Flume 基礎架構

  • 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 用來存放該條資料,形式為位元組數組。
Flume概述及組成架構(實時、日志、傳輸)

繼續閱讀