Appache Flume 中文介紹

來源:互聯網
上載者:User

標籤:讀取   pen   pre   clinet   儲存   分布   透明   soft   targe   

Flume 是什麼

       Apache Flume是一個高可靠、高可用的分布式的海量日誌收集、彙總、傳輸系統。它可以從不同的日誌源採集資料並集中儲存。

Flume也算是Hadoop生態系統的一部分,源於Cloudera,目前是Apache基金會的頂級項目之一。Flume有兩條產品線,0.9.x版本和1.x版本。

官網:http://flume.appache.org/

  • 收集、彙總事件流資料的分布式架構
  • 通常用於log資料
  • 採用ad-hoc方案,明顯優點如下:
    • 可靠的、可伸縮、可管理、可定製、高效能
    • 聲明式配置,可以動態更新配置
    • 提供上下文路由功能
    • 支援負載平衡和容錯移轉
    • 功能豐富
    • 完全的可擴充

核心概念

  • Event
  • Client
  • Agent
    • Sources、Channels、Sinks
    • 其他組件:Interceptors、Channel Selectors、Sink Processor

核心概念:Event

Event是Flume資料轉送的基本單元。flume以事件的形式將資料從源頭傳送到最終的目的。Event由可選的hearders和載有資料的一個byte array構成。

  • 載有的資料對flume是不透明的
  • Headers是容納了key-value字串對的無序集合,key在集合內是唯一的。
  • Headers可以在上下文路由中使用擴充
1   public interface Event {  2         public Map<String, String> getHeaders();  3         public void setHeaders(Map<String, String> headers);  4         public byte[] getBody();  5         public void setBody(byte[] body);  6     }  

 

1     public interface Event {  2         public Map<String, String> getHeaders();  3         public void setHeaders(Map<String, String> headers);  4         public byte[] getBody();  5         public void setBody(byte[] body);  6     }  

核心概念:Client

Clinet是一個將原始log封裝成events並且發送它們到一個或多個agent的實體。

  • 例如目的是從資料來源系統中解耦Flume
    • Flume log4j Appender
    • 可以使用Client SDK (org.apache.flume.api)定製特定的Client
  • 在flume的拓撲結構中不是必須的

核心概念:Agent

一個Agent包含Sources, Channels, Sinks和其他組件,它利用這些組件將events從一個節點傳輸到另一個節點或最終目的。

  • agent是flume流的基礎部分。
  • flume為這些組件提供了配置、生命週期管理、監控支援。

核心概念:Source

Source負責接收events或通過特殊機制產生events,並將events批量的放到一個或多個Channels。有event驅動和輪詢2種類型的Source

  • 不同類型的Source:Source必須至少和一個channel關聯
    • 和眾所周知的系統整合的Sources: Syslog, Netcat
    • 自動建置事件的Sources: Exec, SEQ
    • 用於Agent和Agent之間通訊的IPC Sources: Avro

核心概念:Channel

Channel位於Source和Sink之間,用於緩衝進來的events,當Sink成功的將events發送到下一跳的channel或最終目的,events從Channel移除。

  • 不同的Channels提供的持久化水平也是不一樣的:Channels支援事務
    • Memory Channel: volatile
    • File Channel: 基於WAL(預寫式日誌Write-Ahead Logging)實現
    • JDBC Channel: 基於嵌入Database實現
  • 提供較弱的順序保證
  • 可以和任何數量的Source和Sink工作

核心概念:Sink

Sink負責將events傳輸到下一跳或最終目的,成功完成後將events從channel移除。

  • 不同類型的Sinks:必須作用與一個確切的channel
    • 儲存events到最終目的的終端Sink. 比如: HDFS, HBase
    • 自動消耗的Sinks. 比如: Null Sink
    • 用於Agent間通訊的IPC sink: Avro

Flow可靠性

                      

               

  • 可靠性基於:
    • Agent間事務的交換
    • Flow中,Channel的持久特性
  • 可用性:
    • 內建的Load balancing支援
    • 內建的Failover支援

核心概念:Interceptor

用於Source的一組Interceptor,按照預設的順序在必要地方裝飾和過濾events。

  • 內建的Interceptors允許增加event的headers比如:時間戳記、主機名稱、靜態標記等等
  • 定製的interceptors可以通過內省event payload(讀取原始日誌),在必要的地方建立一個特定的headers。

核心概念:Channel Selector

Channel Selector允許Source基於預設的標準,從所有Channel中,選擇一個或多個Channel

  • 內建的Channel Selectors:
    • 複製Replicating: event被複製到相關的channel
    • 複用Multiplexing: 基於hearder,event被路由到特定的channel
核心概念:Sink Processor
多個Sink可以構成一個Sink Group。一個Sink Processor負責從一個指定的Sink Group中啟用一個Sink。Sink Processor可以通過組中所有Sink實現負載平衡;也可以在一個Sink失敗時轉移到另一個。
  • Flume通過Sink Processor實現負載平衡(Load Balancing)和容錯移轉(failover)
  • 內建的Sink Processors:所有的Sink都是採取輪詢(polling)的方式從Channel上擷取events。這個動作是通過Sink Runner啟用的
    • Load Balancing Sink Processor – 使用RANDOM, ROUND_ROBIN或定製的選擇演算法
    • Failover Sink Processor 
    • Default Sink Processor(單Sink)
  • Sink Processor充當Sink的一個代理


總結





轉自:http://blog.csdn.net/szwangdf/article/details/33275351

Appache Flume 中文介紹(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.