Flume 是什麼java
Apache Flume是一個高可靠、高可用的分佈式的海量日誌收集、聚合、傳輸系統。它能夠從不一樣的日誌源採集數據並集中存儲。算法
Flume也算是Hadoop生態系統的一部分,源於Cloudera,目前是Apache基金會的頂級項目之一。Flume有兩條產品線,0.9.x版本和1.x版本。apache
官網:http://flume.appache.org/api
核心概念緩存
核心概念:Event
app
Event是Flume數據傳輸的基本單元。flume以事件的形式將數據從源頭傳送到最終的目的。Event由可選的hearders和載有數據的一個byte array構成。負載均衡
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的實體。分佈式
核心概念:Agentoop
一個Agent包含Sources, Channels, Sinks和其餘組件,它利用這些組件將events從一個節點傳輸到另外一個節點或最終目的。
核心概念:Source
Source負責接收events或經過特殊機制產生events,並將events批量的放到一個或多個Channels。有event驅動和輪詢2種類型的Source
核心概念:Channel
Channel位於Source和Sink之間,用於緩存進來的events,當Sink成功的將events發送到下一跳的channel或最終目的,events從Channel移除。
核心概念:Sink
Sink負責將events傳輸到下一跳或最終目的,成功完成後將events從channel移除。
Flow可靠性
核心概念:Interceptor
用於Source的一組Interceptor,按照預設的順序在必要地方裝飾和過濾events。
核心概念:Channel Selector
Channel Selector容許Source基於預設的標準,從全部Channel中,選擇一個或多個Channel
多個Sink能夠構成一個Sink Group。一個Sink Processor負責從一個指定的Sink Group中激活一個Sink。Sink Processor能夠經過組中全部Sink實現負載均衡;也能夠在一個Sink失敗時轉移到另外一個。