flume介紹與原理(轉(zhuǎn)載)

1 .背景?

flume是由cloudera軟件公司產(chǎn)出的可分布式日志收集系統(tǒng),后與2009年被捐贈(zèng)了apache軟件基金會(huì),為hadoop相關(guān)組件之一。尤其近幾年隨著flume的不斷被完善以及升級(jí)版本的逐一推出,特別是flume-ng;同時(shí)flume內(nèi)部的各種組件不斷豐富,用戶在開發(fā)的過程中使用的便利性得到很大的改善,現(xiàn)已成為apache top項(xiàng)目之一.

2 .概述

1. ?什么是flume?

apache Flume 是一個(gè)從可以收集例如日志,事件等數(shù)據(jù)資源,并將這些數(shù)量龐大的數(shù)據(jù)從各項(xiàng)數(shù)據(jù)資源中集中起來存儲(chǔ)的工具/服務(wù),或者數(shù)集中機(jī)制。flume具有高可用,分布式,配置工具,其設(shè)計(jì)的原理也是基于將數(shù)據(jù)流,如日志數(shù)據(jù)從各種網(wǎng)站服務(wù)器上匯集起來存儲(chǔ)到HDFS,HBase等集中存儲(chǔ)器中。其結(jié)構(gòu)如下圖所示:

2.應(yīng)用場(chǎng)景

比如我們?cè)谧鲆粋€(gè)電子商務(wù)網(wǎng)站,然后我們想從消費(fèi)用戶中訪問點(diǎn)特定的節(jié)點(diǎn)區(qū)域來分析消費(fèi)者的行為或者購(gòu)買意圖. 這樣我們就可以更加快速的將他想要的推送到界面上,實(shí)現(xiàn)這一點(diǎn),我們需要將獲取到的她訪問的頁(yè)面以及點(diǎn)擊的產(chǎn)品數(shù)據(jù)等日志數(shù)據(jù)信息收集并移交給Hadoop平臺(tái)上去分析.而Flume正是幫我們做到這一點(diǎn)?,F(xiàn)在流行的內(nèi)容推送,比如廣告定點(diǎn)投放以及新聞私人定制也是基于次,不過不一定是使用FLume,畢竟優(yōu)秀的產(chǎn)品很多,比如facebook的Scribe,還有Apache新出的另一個(gè)明星項(xiàng)目chukwa,還有淘寶Time Tunnel。

3.Flume的優(yōu)勢(shì)

1. ?Flume可以將應(yīng)用產(chǎn)生的數(shù)據(jù)存儲(chǔ)到任何集中存儲(chǔ)器中,比如HDFS,HBase

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

3. ? 提供上下文路由特征

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

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

4. Flume具有的特征:

1. Flume可以高效率的將多個(gè)網(wǎng)站服務(wù)器中收集的日志信息存入HDFS/HBase中

2. 使用Flume,我們可以將從多個(gè)服務(wù)器中獲取的數(shù)據(jù)迅速的移交給Hadoop中

3. 除了日志信息,F(xiàn)lume同時(shí)也可以用來接入收集規(guī)模宏大的社交網(wǎng)絡(luò)節(jié)點(diǎn)事件數(shù)據(jù),比如facebook,twitter,電商網(wǎng)站如亞馬遜,flipkart等

4. 支持各種接入資源數(shù)據(jù)的類型以及接出數(shù)據(jù)類型

5. 支持多路徑流量,多管道接入流量,多管道接出流量,上下文路由等

6. 可以被水平擴(kuò)展

3. Flume的結(jié)構(gòu)

1. flume的外部結(jié)構(gòu):

如上圖所示,數(shù)據(jù)發(fā)生器(如:facebook,twitter)產(chǎn)生的數(shù)據(jù)被被單個(gè)的運(yùn)行在數(shù)據(jù)發(fā)生器所在服務(wù)器上的agent所收集,之后數(shù)據(jù)收容器從各個(gè)agent上匯集數(shù)據(jù)并將采集到的數(shù)據(jù)存入到HDFS或者HBase中

2. Flume 事件

事件作為Flume內(nèi)部數(shù)據(jù)傳輸?shù)淖罨締卧?它是由一個(gè)轉(zhuǎn)載數(shù)據(jù)的字節(jié)數(shù)組(該數(shù)據(jù)組是從數(shù)據(jù)源接入點(diǎn)傳入,并傳輸給傳輸器,也就是HDFS/HBase)和一個(gè)可選頭部構(gòu)成.

典型的Flume 事件如下面結(jié)構(gòu)所示:

我們?cè)趯vent在私人定制插件時(shí)比如:flume-hbase-sink插件是,獲取的就是event然后對(duì)其解析,并依據(jù)情況做過濾等,然后在傳輸給HBase或者HDFS.

3.Flume Agent

我們?cè)诹私饬薋lume的外部結(jié)構(gòu)之后,知道了Flume內(nèi)部有一個(gè)或者多個(gè)Agent,然而對(duì)于每一個(gè)Agent來說,它就是一共獨(dú)立的守護(hù)進(jìn)程(JVM),它從客戶端哪兒接收收集,或者從其他的 Agent哪兒接收,然后迅速的將獲取的數(shù)據(jù)傳給下一個(gè)目的節(jié)點(diǎn)sink,或者agent.?如下圖所示flume的基本模型

Agent主要由:source,channel,sink三個(gè)組件組成.

Source:

從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以Flume的event格式傳遞給一個(gè)或者多個(gè)通道channal,Flume提供多種數(shù)據(jù)接收的方式,比如Avro,Thrift,twitter1%等

Channel:

channal是一種短暫的存儲(chǔ)容器,它將從source處接收到的event格式的數(shù)據(jù)緩存起來,直到它們被sinks消費(fèi)掉,它在source和sink間起著一共橋梁的作用,channal是一個(gè)完整的事務(wù),這一點(diǎn)保證了數(shù)據(jù)在收發(fā)的時(shí)候的一致性. 并且它可以和任意數(shù)量的source和sink鏈接. 支持的類型有: JDBC channel , File System channel , Memort channel等.

sink:

sink將數(shù)據(jù)存儲(chǔ)到集中存儲(chǔ)器比如Hbase和HDFS,它從channals消費(fèi)數(shù)據(jù)(events)并將其傳遞給目標(biāo)地. 目標(biāo)地可能是另一個(gè)sink,也可能HDFS,HBase.

它的組合形式舉例:

以上介紹的flume的主要組件,下面介紹一下Flume插件:

1. Interceptors攔截器

用于source和channel之間,用來更改或者檢查Flume的events數(shù)據(jù)

2. 管道選擇器 channels Selectors

在多管道是被用來選擇使用那一條管道來傳遞數(shù)據(jù)(events).?管道選擇器又分為如下兩種:

默認(rèn)管道選擇器: ?每一個(gè)管道傳遞的都是相同的events

多路復(fù)用通道選擇器: ?依據(jù)每一個(gè)event的頭部header的地址選擇管道.

3.sink線程

用于激活被選擇的sinks群中特定的sink,用于負(fù)載均衡.

----------------------------------------------------<完>-------------------------------------------------------

參考資料:

http://www.tutorialspoint.com/apache_flume/apache_flume_data_flow.htm

作者: gongxijun

請(qǐng)注明轉(zhuǎn)載自 http://www.cnblogs.com/gongxijun/p/5656778.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 博客原文 翻譯作品,水平有限,如有錯(cuò)誤,煩請(qǐng)留言指正。原文請(qǐng)見 官網(wǎng)英文文檔 引言 概述 Apache Flume...
    rabbitGYK閱讀 11,708評(píng)論 13 34
  • 介紹 概述 Apache Flume是為有效收集聚合和移動(dòng)大量來自不同源到中心數(shù)據(jù)存儲(chǔ)而設(shè)計(jì)的可分布,可靠的,可用...
    ximengchj閱讀 3,670評(píng)論 0 13
  • Flume的下載方式: wget http://www.apache.org/dyn/closer.lua/flu...
    晴天哥_王志閱讀 710評(píng)論 0 1
  • 1. Flume簡(jiǎn)介 Apache Flume是一個(gè)分布式的、可靠的、可用的,從多種不同的源收集、聚集、移動(dòng)大量日...
    奉先閱讀 4,584評(píng)論 2 5
  • 第一聲積雪化為浮云 蟈蟈還沒睡醒 我,鋪開萬(wàn)里無(wú)云 一日長(zhǎng)三寸 一寸懵懂 一寸相思,還有 一寸六月里的笛音 我日日...
    藍(lán)朵世界閱讀 745評(píng)論 44 49

友情鏈接更多精彩內(nèi)容