溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

flume的核心概念介紹

發(fā)布時間:2021-09-15 18:04:14 來源:億速云 閱讀:240 作者:chen 欄目:云計算

本篇內(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ù)學習!

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI