本篇內(nèi)容主要講解“flume的核心概念介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“flume的核心概念介紹”吧!
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、祁東網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為祁東等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
核心概念
Event
Client
Agent
Sources、Channels、Sinks
其他組件:Interceptors、Channel Selectors、Sink Processor
核心概念:Event
Event是Flume數(shù)據(jù)傳輸?shù)幕締卧lume以事件的形式將數(shù)據(jù)從源頭傳送到最終的目的。Event由可選的hearders和載有數(shù)據(jù)的一個(gè)byte array構(gòu)成。
載有的數(shù)據(jù)對(duì)flume是不透明的
Headers是容納了key-value字符串對(duì)的無序集合,key在集合內(nèi)是唯一的。
Headers可以在上下文路由中使用擴(kuò)展
public interface Event {
public Map
public void setHeaders(Map
public byte[] getBody();
public void setBody(byte[] body);
}
核心概念:Client
Clinet是一個(gè)將原始log包裝成events并且發(fā)送它們到一個(gè)或多個(gè)agent的實(shí)體。
例如
Flume log4j Appender
可以使用Client SDK (org.apache.flume.api)定制特定的Client
目的是從數(shù)據(jù)源系統(tǒng)中解耦Flume
在flume的拓?fù)浣Y(jié)構(gòu)中不是必須的
核心概念:Agent
一個(gè)Agent包含Sources, Channels, Sinks和其他組件,它利用這些組件將events從一個(gè)節(jié)點(diǎn)傳輸?shù)搅硪粋€(gè)節(jié)點(diǎn)或最終目的。
agent是flume流的基礎(chǔ)部分。
flume為這些組件提供了配置、生命周期管理、監(jiān)控支持。
核心概念:Source
Source負(fù)責(zé)接收events或通過特殊機(jī)制產(chǎn)生events,并將events批量的放到一個(gè)或多個(gè)Channels。有event驅(qū)動(dòng)和輪詢2種類型的Source
不同類型的Source:
和眾所周知的系統(tǒng)集成的Sources: Syslog, Netcat
自動(dòng)生成事件的Sources: Exec, SEQ
用于Agent和Agent之間通信的IPC Sources: Avro
Source必須至少和一個(gè)channel關(guān)聯(lián)
核心概念:Channel
Channel位于Source和Sink之間,用于緩存進(jìn)來的events,當(dāng)Sink成功的將events發(fā)送到下一跳的channel或最終目的,events從Channel移除。
不同的Channels提供的持久化水平也是不一樣的:
Memory Channel: volatile
File Channel: 基于WAL(預(yù)寫式日志W(wǎng)rite-Ahead Logging)實(shí)現(xiàn)
JDBC Channel: 基于嵌入Database實(shí)現(xiàn)
Channels支持事務(wù)
提供較弱的順序保證
可以和任何數(shù)量的Source和Sink工作
核心概念:Sink
Sink負(fù)責(zé)將events傳輸?shù)较乱惶蜃罱K目的,成功完成后將events從channel移除。
不同類型的Sinks:
存儲(chǔ)events到最終目的的終端Sink. 比如: HDFS, HBase
自動(dòng)消耗的Sinks. 比如: Null Sink
用于Agent間通信的IPC sink: Avro
必須作用與一個(gè)確切的channel
核心概念:Interceptor
用于Source的一組Interceptor,按照預(yù)設(shè)的順序在必要地方裝飾和過濾events。
內(nèi)建的Interceptors允許增加event的headers比如:時(shí)間戳、主機(jī)名、靜態(tài)標(biāo)記等等
定制的interceptors可以通過內(nèi)省event payload(讀取原始日志),在必要的地方創(chuàng)建一個(gè)特定的headers。
核心概念:Channel Selector
Channel Selector允許Source基于預(yù)設(shè)的標(biāo)準(zhǔn),從所有Channel中,選擇一個(gè)或多個(gè)Channel
內(nèi)建的Channel Selectors:
復(fù)制Replicating: event被復(fù)制到相關(guān)的channel
復(fù)用Multiplexing: 基于hearder,event被路由到特定的channel
核心概念:Sink Processor
多個(gè)Sink可以構(gòu)成一個(gè)Sink Group。一個(gè)Sink Processor負(fù)責(zé)從一個(gè)指定的Sink Group中激活一個(gè)Sink。Sink Processor可以通過組中所有Sink實(shí)現(xiàn)負(fù)載均衡;也可以在一個(gè)Sink失敗時(shí)轉(zhuǎn)移到另一個(gè)。
Flume通過Sink Processor實(shí)現(xiàn)負(fù)載均衡(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。這個(gè)動(dòng)作是通過Sink Runner激活的
Sink Processor充當(dāng)Sink的一個(gè)代理
到此,相信大家對(duì)“flume的核心概念介紹”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!