您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“flume的核心概念介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“flume的核心概念介紹”吧!
核心概念
Event
Client
Agent
Sources、Channels、Sinks
其他組件:Interceptors、Channel Selectors、Sink Processor
核心概念:Event
Event是Flume數(shù)據(jù)傳輸?shù)幕締卧?。flume以事件的形式將數(shù)據(jù)從源頭傳送到最終的目的。Event由可選的hearders和載有數(shù)據(jù)的一個byte array構(gòu)成。
載有的數(shù)據(jù)對flume是不透明的
Headers是容納了key-value字符串對的無序集合,key在集合內(nèi)是唯一的。
Headers可以在上下文路由中使用擴展
public interface Event {
public Map<String, String> getHeaders();
public void setHeaders(Map<String, String> headers);
public byte[] getBody();
public void setBody(byte[] body);
}
核心概念:Client
Clinet是一個將原始log包裝成events并且發(fā)送它們到一個或多個agent的實體。
例如
Flume log4j Appender
可以使用Client SDK (org.apache.flume.api)定制特定的Client
目的是從數(shù)據(jù)源系統(tǒng)中解耦Flume
在flume的拓撲結(jié)構(gòu)中不是必須的
核心概念:Agent
一個Agent包含Sources, Channels, Sinks和其他組件,它利用這些組件將events從一個節(jié)點傳輸?shù)搅硪粋€節(jié)點或最終目的。
agent是flume流的基礎(chǔ)部分。
flume為這些組件提供了配置、生命周期管理、監(jiān)控支持。
核心概念:Source
Source負責接收events或通過特殊機制產(chǎn)生events,并將events批量的放到一個或多個Channels。有event驅(qū)動和輪詢2種類型的Source
不同類型的Source:
和眾所周知的系統(tǒng)集成的Sources: Syslog, Netcat
自動生成事件的Sources: Exec, SEQ
用于Agent和Agent之間通信的IPC Sources: Avro
Source必須至少和一個channel關(guān)聯(lián)
核心概念:Channel
Channel位于Source和Sink之間,用于緩存進來的events,當Sink成功的將events發(fā)送到下一跳的channel或最終目的,events從Channel移除。
不同的Channels提供的持久化水平也是不一樣的:
Memory Channel: volatile
File Channel: 基于WAL(預寫式日志W(wǎng)rite-Ahead Logging)實現(xiàn)
JDBC Channel: 基于嵌入Database實現(xiàn)
Channels支持事務(wù)
提供較弱的順序保證
可以和任何數(shù)量的Source和Sink工作
核心概念:Sink
Sink負責將events傳輸?shù)较乱惶蜃罱K目的,成功完成后將events從channel移除。
不同類型的Sinks:
存儲events到最終目的的終端Sink. 比如: HDFS, HBase
自動消耗的Sinks. 比如: Null Sink
用于Agent間通信的IPC sink: Avro
必須作用與一個確切的channel
核心概念:Interceptor
用于Source的一組Interceptor,按照預設(shè)的順序在必要地方裝飾和過濾events。
內(nèi)建的Interceptors允許增加event的headers比如:時間戳、主機名、靜態(tài)標記等等
定制的interceptors可以通過內(nèi)省event payload(讀取原始日志),在必要的地方創(chuàng)建一個特定的headers。
核心概念:Channel Selector
Channel Selector允許Source基于預設(shè)的標準,從所有Channel中,選擇一個或多個Channel
內(nèi)建的Channel Selectors:
復制Replicating: event被復制到相關(guān)的channel
復用Multiplexing: 基于hearder,event被路由到特定的channel
核心概念:Sink Processor
多個Sink可以構(gòu)成一個Sink Group。一個Sink Processor負責從一個指定的Sink Group中激活一個Sink。Sink Processor可以通過組中所有Sink實現(xiàn)負載均衡;也可以在一個Sink失敗時轉(zhuǎn)移到另一個。
Flume通過Sink Processor實現(xiàn)負載均衡(Load Balancing)和故障轉(zhuǎn)移(failover)
內(nèi)建的Sink Processors:
Load Balancing Sink Processor – 使用RANDOM, ROUND_ROBIN或定制的選擇算法
Failover Sink Processor
Default Sink Processor(單Sink)
所有的Sink都是采取輪詢(polling)的方式從Channel上獲取events。這個動作是通過Sink Runner激活的
Sink Processor充當Sink的一個代理
到此,相信大家對“flume的核心概念介紹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。