Flume 入門

一: Flume是什么:

1. 有Cloudera公司開源
2. 分布式政敢,可靠,高可用的海量日志采集系統(tǒng);
3. 數(shù)據(jù)源可定制恢氯,可擴(kuò)展;
4.  數(shù)據(jù)存儲(chǔ)系統(tǒng)可定制,可擴(kuò)展;
5. 中間件嚼吞,屏蔽了數(shù)據(jù)源和數(shù)據(jù)存儲(chǔ)之間的耦合。

二: 特點(diǎn):

1. 可靠性
      可以根據(jù)對(duì)可靠性的要求設(shè)置不同的數(shù)據(jù)存儲(chǔ)來保證數(shù)據(jù)的可靠性蹬碧,比如可以保存在內(nèi)容舱禽,保存到磁盤;
2. 可擴(kuò)展性
      各組件數(shù)據(jù)可擴(kuò)展恩沽, source, channel, sink都可擴(kuò)展
3.  高性能
      高吞吐率誊稚,可以滿足海量數(shù)據(jù)的收集需求
4.可管理性
      可動(dòng)態(tài)的增加和刪除節(jié)點(diǎn)
5.活躍的社區(qū)

三: Flume版本介紹

 1. Flume OG: Original Generation
      o.9.x或cdh3以及更早版本 
     主要由agent, collector, master等組件構(gòu)成。

 2. Flume NG: NEW Generation
       1.x或cdh4以后的版本
       主要有Agent,Client等組件構(gòu)成
       NG版本的退出主要是為了簡(jiǎn)化代碼,簡(jiǎn)化架構(gòu)里伯;

四: Flume NG基本架構(gòu)

20160530190347644.png

五: Flume NG核心概念

1.a(chǎn)gent: agent本身是一個(gè)java進(jìn)程城瞎,運(yùn)行在日志收集節(jié)點(diǎn)—所謂日志收集節(jié)點(diǎn)就是服務(wù)器節(jié)點(diǎn).
           source—->channel—–>sink,類似生產(chǎn)者、倉庫疾瓮、消費(fèi)者的架構(gòu)
2.source:source組件是專門用來收集數(shù)據(jù)的脖镀,可以處理各種類型、各種格式的日志數(shù)據(jù),
           包括avro狼电、thrift蜒灰、exec、jms肩碟、spooling directory强窖、netcat、sequence generator削祈、syslog翅溺、http、legacy髓抑、自定義未巫。 
3.channel:source組件把數(shù)據(jù)收集來以后,臨時(shí)存放在channel中;
            即channel組件在agent中是專門用來存放臨時(shí)數(shù)據(jù)的——對(duì)采集到的數(shù)據(jù)進(jìn)行簡(jiǎn)單的緩存启昧,可以存放在memory、jdbc劈伴、file等等密末。
4.sink:  sink組件是用于把數(shù)據(jù)發(fā)送到目的地的組件,目的地包括hdfs跛璧、logger严里、avro、thrift追城、ipc刹碾、file、null座柱、hbase迷帜、solr、自定義色洞。

六:  Flume 運(yùn)行機(jī)制

flume的核心就是一個(gè)agent戏锹,這個(gè)agent對(duì)外有兩個(gè)進(jìn)行交互的地方,一個(gè)是接受數(shù)據(jù)的輸入——source火诸,一個(gè)是數(shù)據(jù)的輸出sink锦针;
sink負(fù)責(zé)將數(shù)據(jù)發(fā)送到外部指定的目的地。source接收到數(shù)據(jù)之后,將數(shù)據(jù)發(fā)送給channel奈搜;
chanel作為一個(gè)數(shù)據(jù)緩沖區(qū)會(huì)臨時(shí)存放這些數(shù)據(jù)悉盆,隨后sink會(huì)將channel中的數(shù)據(jù)發(fā)送到指定的地方—-例如HDFS等;
注意:只有在sink將channel中的數(shù)據(jù)成功發(fā)送出去之后馋吗,channel才會(huì)將臨時(shí)數(shù)據(jù)進(jìn)行刪除焕盟,這種機(jī)制保證了數(shù)據(jù)傳輸?shù)目煽啃耘c安全性。

七: Event

    flume的核心是把數(shù)據(jù)從數(shù)據(jù)源(source)收集過來耗美,在將收集到的數(shù)據(jù)送到指定的目的地(sink)京髓。
為了保證輸送的過程一定成功,在送到目的地(sink)之前商架,會(huì)先緩存數(shù)據(jù)(channel),待數(shù)據(jù)真正到達(dá)目的地(sink)后堰怨,flume在刪除自己緩存的數(shù)據(jù)。 
在整個(gè)數(shù)據(jù)的傳輸?shù)倪^程中蛇摸,流動(dòng)的是event备图,即事務(wù)保證是在event級(jí)別進(jìn)行的。那么什么是event呢赶袄?—–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ù)源來撰茎,向外部的目的地去嵌牺。 為了方便大家理解,給出一張event的數(shù)據(jù)流向圖: 
20160530163300022.png

八: Client

Client是一個(gè)將原始log包裝成events并且發(fā)送他們到一個(gè)或者多個(gè)agent.
其目的是從解耦龄糊, 但不是必須的逆粹;

九: Agent

一個(gè)Agent包含Source,Channel,Sink和其他組件;
它利用這些組件將event從一個(gè)節(jié)點(diǎn)傳輸?shù)搅硪粋€(gè)節(jié)點(diǎn);
agent是flume流的基礎(chǔ)部分;

十: Agent->Source, 概述

Sources負(fù)責(zé)接收event或通過特殊機(jī)制產(chǎn)生event,并將events批量的放到一個(gè)或者多個(gè)Channel
包含event驅(qū)動(dòng)和輪詢2種類型
不同類型的Sources:
與系統(tǒng)集成的Sources: 
  Syslog:
  Netcat:指定的網(wǎng)絡(luò)端口炫惩,即只要應(yīng)用程序向這個(gè)端口里面寫數(shù)據(jù)枯饿,這個(gè)source組件就可以獲取到信息
  Exec:  監(jiān)聽一個(gè)指定的命令,獲取一條命令的結(jié)果作為它的數(shù)據(jù)源
  TailDir: 監(jiān)聽文件內(nèi)容诡必, 一旦新寫入一行新數(shù)據(jù)奢方,則讀取之搔扁; 支持?jǐn)帱c(diǎn)續(xù)讀, 定期將最新讀取數(shù)據(jù)的偏移量寫入json文件蟋字, 根據(jù)文件修改時(shí)間覺得讀取優(yōu)先級(jí)稿蹲, 最新的文件優(yōu)先讀取鹊奖;目前只支持文本文件苛聘;
  Spooling Directory Source:監(jiān)聽一個(gè)指定的目錄,即只要應(yīng)用程序向這個(gè)指定的目錄中添加新的文件忠聚,source組件就可以獲取到該信息设哗,并解析該文件的內(nèi)容,然后寫入到channle两蟀。寫入完成后网梢,標(biāo)記該文件已完成或者刪除該文件。
  Avro, Thrift: 監(jiān)聽一個(gè)指定的Avro 端口赂毯,通過Avro 端口可以獲取到Avro client發(fā)送過來的文件 战虏。
      即只要應(yīng)用程序通過Avro 端口發(fā)送文件,source組件就可以獲取到該文件中的內(nèi)容党涕。 
      (注:Avro和Thrift都是一些序列化的網(wǎng)絡(luò)端口–通過這些網(wǎng)絡(luò)端口可以接受或者發(fā)送信息烦感,
      Avro可以發(fā)送一個(gè)給定的文件給Flume,Avro 源使用AVRO RPC機(jī)制) 
Sources 必須要和一個(gè)channel關(guān)聯(lián).

十一: Agent->Channel

Channel位于Source和Sink之間膛堤,用于緩存event;
當(dāng)Source接收到數(shù)據(jù)之后手趣,將數(shù)據(jù)發(fā)送給Channel,Chanel作為一個(gè)數(shù)據(jù)緩沖區(qū)會(huì)臨時(shí)存放這些數(shù)據(jù)肥荔,
隨后sink會(huì)將Channel中的數(shù)據(jù)發(fā)送到指定的地方—-例如HDFS等回懦,
注意:只有在sink將Channel中的數(shù)據(jù)成功發(fā)送出去之后,Channel才會(huì)將臨時(shí)數(shù)據(jù)進(jìn)行刪除次企,這種機(jī)制保證了數(shù)據(jù)傳輸?shù)目煽啃耘c安全性

不同的Channel提供的持久化水平也是不一樣的:
Memory Channel:; volatile
File Channel: 基于WAL(預(yù)寫式日志)實(shí)現(xiàn)
JDBC Channel: 基于Database實(shí)現(xiàn)

十二: Agent->Sink

Sink負(fù)責(zé)將event傳輸?shù)阶罱K目的地,成功后將event從Channel移除.
不同類型的Sink:
存儲(chǔ)event到最終目的終端Sink: 比如:HDFS,HBase
自動(dòng)消耗Sink: Null Sink
用于Agent間通信: Avro

十三: 數(shù)據(jù)庫全量和增量導(dǎo)入系統(tǒng)

全量導(dǎo)入:
    Sqoop
增量導(dǎo)入:
    Canal(https://github.com/alibaba/canal)
    DataBus(https://github.com/linkedin/databus)

十四: Sqoop: SQL-to-Hadoop

連接傳統(tǒng)關(guān)系型數(shù)據(jù)庫和Hadoop的橋梁
把關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入到Hadoop(Hdfs, Hbase, Hive)中;
利用MapReduce加快數(shù)據(jù)傳輸速度潜圃;
批處理方式進(jìn)行數(shù)據(jù)傳輸缸棵;
優(yōu)勢(shì):
    1. 高效,可控地利用資源
          任務(wù)并行度谭期,超時(shí)時(shí)間等堵第;
    2.   數(shù)據(jù)類型映射與轉(zhuǎn)換
          可自動(dòng)進(jìn)行,用戶也可以自定義
    3.支持多種數(shù)據(jù)庫
          Mysql, Oracle, PostgreSQL
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隧出,一起剝皮案震驚了整個(gè)濱河市踏志,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胀瞪,老刑警劉巖针余,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饲鄙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡圆雁,警方通過查閱死者的電腦和手機(jī)忍级,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伪朽,“玉大人轴咱,你說我怎么就攤上這事×忆蹋” “怎么了朴肺?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)坚洽。 經(jīng)常有香客問我戈稿,道長(zhǎng),這世上最難降的妖魔是什么酪术? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任器瘪,我火速辦了婚禮,結(jié)果婚禮上绘雁,老公的妹妹穿的比我還像新娘橡疼。我一直安慰自己,他們只是感情好庐舟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布欣除。 她就那樣靜靜地躺著,像睡著了一般挪略。 火紅的嫁衣襯著肌膚如雪历帚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天杠娱,我揣著相機(jī)與錄音挽牢,去河邊找鬼。 笑死摊求,一個(gè)胖子當(dāng)著我的面吹牛禽拔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播室叉,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼睹栖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了茧痕?” 一聲冷哼從身側(cè)響起野来,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎踪旷,沒想到半個(gè)月后曼氛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豁辉,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年搪锣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秋忙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡构舟,死狀恐怖灰追,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狗超,我是刑警寧澤弹澎,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站努咐,受9級(jí)特大地震影響苦蒿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渗稍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一佩迟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竿屹,春花似錦报强、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碗誉,卻和暖如春召嘶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哮缺。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工弄跌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尝苇。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓铛只,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親茎匠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一押袍、安裝 1诵冒、必備條件 因?yàn)橐讶罩旧蟼鞯絟dfs上,所以需要以下hadoop依賴包: commons-confi...
    Bottle丶Fish閱讀 340評(píng)論 0 1
  • 博客原文 翻譯作品谊惭,水平有限汽馋,如有錯(cuò)誤侮东,煩請(qǐng)留言指正。原文請(qǐng)見 官網(wǎng)英文文檔 引言 概述 Apache Flume...
    rabbitGYK閱讀 11,455評(píng)論 13 34
  • hue:Hadoop User Experience Hue是一個(gè)開源的Apache Hadoop UI系統(tǒng)豹芯,最早...
    時(shí)待吾閱讀 2,505評(píng)論 0 1
  • 介紹 概述 Apache Flume是為有效收集聚合和移動(dòng)大量來自不同源到中心數(shù)據(jù)存儲(chǔ)而設(shè)計(jì)的可分布悄雅,可靠的,可用...
    ximengchj閱讀 3,518評(píng)論 0 13
  • 1. Flume簡(jiǎn)介 Apache Flume是一個(gè)分布式的铁蹈、可靠的宽闲、可用的,從多種不同的源收集握牧、聚集容诬、移動(dòng)大量日...
    奉先閱讀 4,464評(píng)論 2 5