那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Flume的基本架構(gòu)以及使用案例

jf_78858299 ? 來(lái)源:基礎(chǔ)技術(shù)研究 ? 作者:張利龍 ? 2023-03-29 13:39 ? 次閱讀

在大數(shù)據(jù)時(shí)代背景下,如何采集出有用的信息已經(jīng)是大數(shù)據(jù)發(fā)展的關(guān)鍵因素之一,數(shù)據(jù)采集可以說(shuō)是大數(shù)據(jù)產(chǎn)業(yè)的基石。Flume作為開源的數(shù)據(jù)采集系統(tǒng),受到了業(yè)界的認(rèn)可與廣泛應(yīng)用。本文將帶你了解Flume的基本架構(gòu)以及使用案例等。

01

Flume簡(jiǎn)介

1.1 Flume是什么?

Flume是Apache Software Foundation的頂級(jí)項(xiàng)目。它是一個(gè)分布式,可靠且可用的系統(tǒng),主要用于高效地收集,聚合大量日志數(shù)據(jù)并將其從不同的源移動(dòng)到集中式數(shù)據(jù)存儲(chǔ)中。

Flume的使用不僅限于日志數(shù)據(jù)聚合。由于數(shù)據(jù)源是可定制的,因此Flume可用于傳輸大量事件數(shù)據(jù),包括但不限于網(wǎng)絡(luò)流量數(shù)據(jù),社交媒體數(shù)據(jù),電子郵件消息以及幾乎所有可能的數(shù)據(jù)源。

1.2 Flume外部結(jié)構(gòu)

數(shù)據(jù)發(fā)生器產(chǎn)生的數(shù)據(jù)被所在服務(wù)器上的agent收集,之后數(shù)據(jù)收容器從各個(gè)agent上匯集數(shù)據(jù)并將采集到的數(shù)據(jù)存入到HDFS或者HBase中。同時(shí),F(xiàn)lume還有如下特點(diǎn):

  • 使用Flume,我們可以將多個(gè)服務(wù)器中獲取的數(shù)據(jù)迅速的移交給Hadoop中;
  • 支持各種接入數(shù)據(jù)的類型以及接出數(shù)據(jù)類型;
  • 支持多路徑流量,多管道接入流量,多管道接出流量,上下文路由等;
  • 支持水平擴(kuò)展。

02

Flume的一些核心概念

Client:客戶端,生產(chǎn)數(shù)據(jù),運(yùn)行在一個(gè)獨(dú)立的線程。

Event:事件,是一個(gè)數(shù)據(jù)單元,由消息頭和消息體組成。

Agent:一個(gè)獨(dú)立的Flume進(jìn)程,包含組件Source、 Channel、 Sink。

Source:數(shù)據(jù)的收集端,負(fù)責(zé)將數(shù)據(jù)捕獲后進(jìn)行特殊的格式化,將數(shù)據(jù)封裝到Event里,然后推入Channel中。

Channel:中轉(zhuǎn)Event的一個(gè)臨時(shí)存儲(chǔ),保存由Source組件傳遞過(guò)來(lái)的Event。

Sink:從Channel中讀取并移除Event, 將Event傳遞到下一個(gè)Agent。

2.1 Flume Agent結(jié)構(gòu)

Flume內(nèi)部有一個(gè)或者多個(gè)Agent,它是Flume 運(yùn)行的核心。然而對(duì)于每一個(gè)Agent來(lái)說(shuō),它就是一個(gè)獨(dú)立的守護(hù)進(jìn)程(JVM),它從客戶端或者其他的 Agent接收數(shù)據(jù),然后迅速的傳給下一個(gè)目的節(jié)點(diǎn)Sink,或者Agent。

Flume以Agent為最小的獨(dú)立運(yùn)行單位。它是一個(gè)完整的數(shù)據(jù)收集工具,含有三個(gè)核心組件,分別是Source、 Channel、 Sink。其工作流程為:把數(shù)據(jù)從數(shù)據(jù)源(Source)收集過(guò)來(lái),在將收集到的數(shù)據(jù)送到指定的目的地(Sink)。為了保證輸送的過(guò)程一定成功,在送到目的地之前,會(huì)先緩存數(shù)據(jù)(Channel),待數(shù)據(jù)真正到達(dá)目的地(Sink)后,F(xiàn)lume再刪除緩存的數(shù)據(jù)。

2.2 Source

Source 負(fù)責(zé)數(shù)據(jù)的產(chǎn)生或搜集,并將數(shù)據(jù)捕獲后進(jìn)行特殊的格式化,封裝到Event,然后再推入Channel。一般是對(duì)接一些RPC的程序或者是其他的Flume節(jié)點(diǎn)的Sink,從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以Event格式傳遞給一個(gè)或者多個(gè)通道Channel,F(xiàn)lume提供多種數(shù)據(jù)接收的方式,比如avro、thrift、netcat、sequence generator、syslog、http等,如果內(nèi)置的Source無(wú)法滿足需要, Flume還支持自定義。

2.3Channel

Channel 是一種短暫的存儲(chǔ)容器,負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)持久化,可以持久化到j(luò)dbc,file,memory,將從Source接收到的Event格式的數(shù)據(jù)緩存起來(lái),直到它們被Sink消費(fèi)掉,可以把Channel看成是一個(gè)隊(duì)列,隊(duì)列的優(yōu)點(diǎn)是先進(jìn)先出,放好后尾部一個(gè)個(gè)Event出來(lái),F(xiàn)lume比較看重?cái)?shù)據(jù)的傳輸,因此幾乎沒(méi)有數(shù)據(jù)的解析預(yù)處理。僅僅是數(shù)據(jù)的產(chǎn)生,封裝成Event然后傳輸。數(shù)據(jù)只有存儲(chǔ)在下一個(gè)存儲(chǔ)位置,數(shù)據(jù)才會(huì)從當(dāng)前的Channel中刪除。這個(gè)過(guò)程是通過(guò)事務(wù)來(lái)控制的,這樣就保證了數(shù)據(jù)的可靠性。

不過(guò)Flume的持久化也是有容量限制的,比如內(nèi)存如果超過(guò)一定的量,不夠分配,也一樣會(huì)爆掉。

2.4 Sink

Sink負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā),將數(shù)據(jù)存儲(chǔ)到集中存儲(chǔ)器比如Hbase和HDFS,它從Channel消費(fèi)數(shù)據(jù)并將其傳遞給目標(biāo)地。目標(biāo)地可能是另一個(gè)Sink,也可能是hdfs、logger、avro、thrift、file、Hbase、solr或者自定義等。

Sink從Channel中取出事件,然后將數(shù)據(jù)發(fā)到別處,可以向文件系統(tǒng)、數(shù)據(jù)庫(kù)、 hadoop存數(shù)據(jù), 也可以是其他agent的Source。在日志數(shù)據(jù)較少時(shí),可以將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)中,并且設(shè)定一定的時(shí)間間隔保存數(shù)據(jù)。

Sink支持設(shè)置存儲(chǔ)數(shù)據(jù)位置,在日志數(shù)據(jù)較少時(shí),可以將數(shù)據(jù)存儲(chǔ)在文件系中,并且設(shè)定一定的時(shí)間間隔保存數(shù)據(jù)。在日志數(shù)據(jù)較多時(shí),可以將相應(yīng)的日志數(shù)據(jù)存儲(chǔ)到Hadoop中,便于日后進(jìn)行相應(yīng)的數(shù)據(jù)分析。

2.5 Event

Flume使用Event對(duì)象作為傳遞數(shù)據(jù)的格式,特點(diǎn)如下:

① Event將傳輸?shù)臄?shù)據(jù)進(jìn)行封裝,是Flume傳輸數(shù)據(jù)的基本單位,如果是文本文件,通常是一行記錄。

② Event也是事務(wù)的基本單位。

③ Event從Source,流向Channel,再到Sink,本身為一個(gè)字節(jié)數(shù)組,并可攜帶headers(頭信息)信息。

④ Event代表著一個(gè)數(shù)據(jù)的最小完整單元,從外部數(shù)據(jù)源來(lái),向外部的目的地去。

一個(gè)完整的Event包括:headers、body、Event信息(即文本文件中的單行記錄)。其中body是一個(gè)字節(jié)數(shù)組,包含了實(shí)際的內(nèi)容,如下圖所示:

圖片

03

Flume攔截器、數(shù)據(jù)流以及可靠性

3.1 Flume攔截器

當(dāng)我們需要對(duì)數(shù)據(jù)進(jìn)行過(guò)濾時(shí),除了在Source、 Channel和Sink進(jìn)行代碼修改之外, Flume為我們提供了攔截器,位于Source和Channel之間,在日志進(jìn)入到Source之前,對(duì)日志進(jìn)行一些包裝、清洗過(guò)濾等動(dòng)作。

當(dāng)我們?yōu)镾ource指定攔截器后,會(huì)在其中得到Event,根據(jù)需求我們可以對(duì)Event進(jìn)行保留還是拋棄,拋棄的數(shù)據(jù)不會(huì)進(jìn)入Channel中。

3.2 Flume數(shù)據(jù)流

Flume 的核心是把數(shù)據(jù)從數(shù)據(jù)源收集過(guò)來(lái),再送到目的地。為了保證輸送成功,在送到目的地之前,會(huì)先緩存數(shù)據(jù),待數(shù)據(jù)真正到達(dá)目的地后,刪除緩存的數(shù)據(jù)。

Flume 傳輸數(shù)據(jù)的基本單位是 Event,如果是文本文件,通常是一行記錄。Event 從 Source,流向 Channel,再到Sink,本身為一個(gè)byte數(shù)組,并可攜帶 headers 信息。Event 代表著一個(gè)數(shù)據(jù)流的最小完整單元,從外部數(shù)據(jù)源來(lái),向外部的目的地去。

值得注意的是,F(xiàn)lume提供了大量?jī)?nèi)置的Source、Channel和Sink類型。不同類型之間可以自由組合。組合方式基于用戶設(shè)置的配置文件,非常靈活。比如:Channel可以把事件暫存在內(nèi)存里,也可以持久化到本地硬盤上。Sink可以把日志寫入HDFS、HBase或其它Source等。Flume支持用戶建立多級(jí)流,也就是說(shuō),多個(gè)agent可以協(xié)同工作,這也是Flume強(qiáng)大之處。

3.3 Flume可靠性

Flume可以通過(guò)以下方式保證其可靠性:

① Flume保證單次跳轉(zhuǎn)可靠性的方式:傳送完成后,該事件才會(huì)從通道中移除;

② Flume使用事務(wù)性的方法來(lái)保證事件交互的可靠性;

③ Flume可以將數(shù)據(jù)可暫存,當(dāng)目標(biāo)不可訪問(wèn)后,數(shù)據(jù)會(huì)暫存在Channel中,等目標(biāo)可訪問(wèn)之后,再進(jìn)行傳輸;

④ 數(shù)據(jù)處理過(guò)程中,如果因?yàn)榫W(wǎng)絡(luò)中斷或者其他原因,在某一步被迫結(jié)束了,這個(gè)數(shù)據(jù)會(huì)在下一次重新傳輸;

⑤ Source和Sink封裝在一個(gè)事務(wù)的存儲(chǔ)和檢索中,即事件的放置或者提供由一個(gè)事務(wù)通過(guò)通道來(lái)分別提供,保證了事件集在流中可靠地進(jìn)行端到端的傳遞。

04

Flume使用場(chǎng)景****

Flume在英文中的意思是水道,它更像是可以隨意組裝的消防水管,下面根據(jù)官方文檔,展示幾種Flow。

4.1 單個(gè)agent采集數(shù)據(jù)

單個(gè)Agent收集數(shù)據(jù)源,存儲(chǔ)到最終的外部系統(tǒng)中,這是最簡(jiǎn)單的情況。

4.2 多個(gè)agent順序連接

圖片

多個(gè)Agent順序連接起來(lái),將最初的數(shù)據(jù)源經(jīng)過(guò)收集,最終存儲(chǔ)到外部系統(tǒng)中。一般情況下,應(yīng)該控制這種順序連接的Agent 的數(shù)量,因?yàn)閿?shù)據(jù)流經(jīng)的路徑變長(zhǎng)了,如果出現(xiàn)故障將影響整個(gè)服務(wù)。

4.3 多個(gè)Agent數(shù)據(jù)匯集

圖片

日志收集中的一個(gè)非常常見(jiàn)的情況是,大量的日志生成客戶端將數(shù)據(jù)發(fā)送到連接存儲(chǔ)子系統(tǒng)的使用方代理。例如,從數(shù)百臺(tái)Web服務(wù)器收集的日志發(fā)送到多個(gè)寫入HDFS群集的代理。

這可以在Flume中實(shí)現(xiàn),方法是為多個(gè)第一層代理配置一個(gè)avro接收器,它們均指向單個(gè)代理的avro源。第二層代理上的此源將接收到的事件合并到一個(gè)通道中,該通道由接收器消耗到其最終目地的。

4.4 多級(jí)流

圖片

Flume支持多級(jí)流,那么什么是多級(jí)流呢?我們舉個(gè)例子,當(dāng)syslog, java, nginx、 tomcat等混合在一起的日志流開始流入一個(gè)agent后,可以在agent中將混雜的日志流分開,然后給每種日志建立一個(gè)自己的傳輸通道。

上面的示例顯示了來(lái)自代理“ foo”的源,將流擴(kuò)展到三個(gè)不同的通道。

值得注意的是,當(dāng)多個(gè)agent級(jí)聯(lián)時(shí),一個(gè)Source可以對(duì)接多個(gè)chanel,但是一個(gè)chanel只能對(duì)接一個(gè)Sink。

05

Flume優(yōu)缺點(diǎn)

5.1 優(yōu)點(diǎn)

① Flume可以將應(yīng)用產(chǎn)生的數(shù)據(jù)存儲(chǔ)到多種集中存儲(chǔ)器;

② Flume提供上下文路由特征;

③ Flume的管道是基于事務(wù),保證了數(shù)據(jù)在傳送和接收時(shí)的一致性;

④ Flume是可靠的,容錯(cuò)性高的,可升級(jí)的,易管理的,并且可定制的;

⑤ Flume可以實(shí)時(shí)的將分析數(shù)據(jù)并將數(shù)據(jù)保存在數(shù)據(jù)庫(kù)或者其他系統(tǒng)中;

⑥ 當(dāng)收集數(shù)據(jù)的速度超過(guò)將寫入數(shù)據(jù)的時(shí)候,也就是當(dāng)收集信息遇到峰值時(shí),收集的信息非常大,甚至超過(guò)了系統(tǒng)的寫入數(shù)據(jù)能力,這時(shí)候,F(xiàn)lume會(huì)在數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)收容器間做出調(diào)整,保證其能夠在兩者之間提供一個(gè)平穩(wěn)的數(shù)據(jù)。

5.2 缺點(diǎn)

Flume的配置比較繁瑣,Source,Channel,Sink的關(guān)系在配置文件里面交織在一起,不便于管理。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    運(yùn)動(dòng)控制系統(tǒng)基本架構(gòu)及控制軌跡要點(diǎn)簡(jiǎn)述

    運(yùn)動(dòng)控制起源于早期的伺服控制,本文與讀者分享的是運(yùn)動(dòng)控制的定義、運(yùn)動(dòng)控制系統(tǒng)的基本架構(gòu)組成以及在運(yùn)動(dòng)控制方面幾項(xiàng)運(yùn)動(dòng)所需控制軌跡等
    發(fā)表于 04-07 10:47 ?3973次閱讀

    Xilinx FPGA:Virtex-II基本架構(gòu)

    Xilinx FPGA:Virtex-II基本架構(gòu)
    發(fā)表于 08-02 23:12

    Flume的運(yùn)行機(jī)制和安裝使用

    (一)Flume的安裝
    發(fā)表于 04-02 06:49

    flume原理介紹

    flume是Apache的一款開源日志收集軟件。在flume中,主要有三個(gè)重要的角色:source、channel和sink。source負(fù)責(zé)收集日志,日志可以是來(lái)自任何地方,例如socket,本地
    發(fā)表于 07-10 06:04

    Flume使用方法

    Flume學(xué)習(xí)筆記
    發(fā)表于 09-23 10:51

    LabVIEW串行通訊的基本架構(gòu)

    LabVIEW串行通訊的基本架構(gòu)串行通訊的基本架構(gòu)是什么?解答: 串口通訊架構(gòu)每一個(gè)異步串行系統(tǒng)的核心都是一個(gè)UART(通用異步接收機(jī)/發(fā)送機(jī))。UART不僅控制傳輸?shù)臄?shù)據(jù),相應(yīng)的電平,同時(shí)也控制
    發(fā)表于 05-12 21:08

    TFT基本架構(gòu)及原理

    TFT基本架構(gòu)及原理TFT ON / OFF TFT ON / OFF假想示意圖GE 信號(hào)OFF時(shí)Source和Drain是一斷路狀態(tài)電流無(wú)法流通使pixel充電GEG-SiNxa-SiSourceDrain電流GE 信號(hào)ON時(shí)Source和Drain是一通路狀態(tài)電流由Drai
    發(fā)表于 11-01 15:10 ?35次下載
    TFT基<b class='flag-5'>本架構(gòu)</b>及原理

    詳解SOA五種基本架構(gòu)模式

    本文詳細(xì)解說(shuō)了SOA五種基本架構(gòu)模式,面向服務(wù)的架構(gòu)(SOA)已成為連接復(fù)雜服務(wù)系統(tǒng)的主要解決方案。雖然SOA的理論很容易理解,但要部署一個(gè)設(shè)計(jì)良好、真正實(shí)用的SOA系統(tǒng)卻非常困難。本文試圖通過(guò)解析SOA的模式,提供與架構(gòu)相關(guān)的
    的頭像 發(fā)表于 02-07 14:41 ?2.2w次閱讀
    詳解SOA五種基<b class='flag-5'>本架構(gòu)</b>模式

    51單片機(jī)的C程序基本架構(gòu)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)的C程序基本架構(gòu)詳細(xì)說(shuō)明。
    發(fā)表于 08-15 17:32 ?7次下載
    51單片機(jī)的C程序基<b class='flag-5'>本架構(gòu)</b>詳細(xì)說(shuō)明

    MT-016: DAC基本架構(gòu)III:分段DAC

    MT-016: DAC基本架構(gòu)III:分段DAC
    發(fā)表于 03-20 09:03 ?10次下載
    MT-016: DAC基<b class='flag-5'>本架構(gòu)</b>III:分段DAC

    MT-014:DAC基本架構(gòu)I, DAC串和溫度計(jì)(完全解碼)DAC

    MT-014:DAC基本架構(gòu)I, DAC串和溫度計(jì)(完全解碼)DAC
    發(fā)表于 03-20 10:28 ?7次下載
    MT-014:DAC基<b class='flag-5'>本架構(gòu)</b>I, DAC串和溫度計(jì)(完全解碼)DAC

    MT-015: DAC基本架構(gòu)II:二進(jìn)制DAC

    MT-015: DAC基本架構(gòu)II:二進(jìn)制DAC
    發(fā)表于 03-21 03:49 ?8次下載
    MT-015: DAC基<b class='flag-5'>本架構(gòu)</b>II:二進(jìn)制DAC

    無(wú)線網(wǎng)絡(luò)協(xié)議的基本架構(gòu)解析

    許多新興物聯(lián)網(wǎng)(IoT)無(wú)線網(wǎng)絡(luò)協(xié)議的基礎(chǔ)是兩種基本架構(gòu):星形網(wǎng)絡(luò)和網(wǎng)狀網(wǎng)絡(luò)。
    的頭像 發(fā)表于 04-16 16:29 ?4105次閱讀
    無(wú)線網(wǎng)絡(luò)協(xié)議的基<b class='flag-5'>本架構(gòu)</b>解析

    三相正弦波逆變電源電原理圖(基本架構(gòu))REV1.0

    弦波逆變電源電原理圖(基本架構(gòu)) ?REV1[1].0
    發(fā)表于 01-29 09:48 ?3次下載

    智能座艙的基本架構(gòu)有哪些

    智能座艙是指通過(guò)集成信息技術(shù),將智能化設(shè)備和系統(tǒng)應(yīng)用于飛機(jī)座艙的一種新的航空技術(shù)發(fā)展趨勢(shì)。其目的是提升航空安全、提高飛行效率、增強(qiáng)乘客體驗(yàn)、降低維護(hù)成本等。智能座艙的基本架構(gòu)包括以下幾個(gè)方面: 機(jī)載
    的頭像 發(fā)表于 12-19 10:34 ?1986次閱讀
    安桌百家乐游戏百家乐| 免佣百家乐官网赌场优势| 什么百家乐九宫三路| 索罗门百家乐官网的玩法技巧和规则 | 新全讯网777| 网上百家乐危险| 皇冠足球现金网| 百家乐蔬菜配送公司| 百家乐官网翻天超清| 单双和百家乐官网游戏机厂家| 六合彩开奖时间| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 百家乐官网游戏网址| 大发888老虎机技巧| 百家乐赌博技巧论坛| 金世豪百家乐官网的玩法技巧和规则| 百家乐官网统计概率| 大发888为什么这么卡| 百家乐出千的方法| 做生意开店风水| 百家乐官网真人游戏娱乐平台| 泰兴市| 冠通棋牌大厅下载| 黄金城百家乐手机版| 百家乐园棋牌| 夜总会百家乐官网的玩法技巧和规则| 长寿区| bet365在线体育| 新全讯网3| 百家乐纯技巧打| 百家乐公式球打法| 荷规则百家乐官网的玩法技巧和规则 | 澳门百家乐路单| 百家乐最好的平台是哪个| 澳门玩百家乐官网赢1000万| 百家乐官网能赚大钱吗| 百家乐官网的路单怎样看| 在线百家乐官网电脑| 波浪百家乐官网游戏中| 星期八娱乐| 网上娱乐城注册送彩金|