日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Flume 1.7 源码分析(二)整体架构

發(fā)布時(shí)間:2024/2/28 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flume 1.7 源码分析(二)整体架构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Flume 1.7 源碼分析(一)源碼編譯
Flume 1.7 源碼分析(二)整體架構(gòu)
Flume 1.7 源碼分析(三)程序入口
Flume 1.7 源碼分析(四)從Source寫數(shù)據(jù)到Channel

3 整體架構(gòu)

Flume有三大組件:Source、Channel、Sink。

  • Source就是數(shù)據(jù)來(lái)源,例如Web Server產(chǎn)生日志后,可使用ExecSource執(zhí)行tail -F命令后不斷監(jiān)聽日志文件新生成的數(shù)據(jù),然后傳給Channel。
  • Channel就是一個(gè)緩存隊(duì)列,由于讀取數(shù)據(jù)和寫入數(shù)據(jù)的速度可能不匹配,假如用同步完成的方式可能效率低下,所以Source把數(shù)據(jù)寫到Channel這個(gè)隊(duì)列里面,Sink再用另外的線程去讀取。
  • Sink就是最終的存儲(chǔ),例如可以是HDFS或LOG文件輸出等,Sink負(fù)責(zé)去Channel里面讀取數(shù)據(jù),并存儲(chǔ)。

在程序啟動(dòng)時(shí),會(huì)啟動(dòng)所有的SourceRunner、Channel、SinkRunner。其中Channel的啟動(dòng),沒(méi)做什么特別的事情,就是初始化一下狀態(tài)、創(chuàng)建一下計(jì)數(shù)器,算做一個(gè)被動(dòng)的角色。比較重要的是SourceRunner和SinkRunner。

  • SourceRunner會(huì)調(diào)用Source的start方法。以ExecSource為例,其start方法就是啟動(dòng)一個(gè)線程,去不斷獲取標(biāo)準(zhǔn)輸出流寫入一個(gè)列表(eventList),同時(shí)再啟動(dòng)一個(gè)線程去定期批量地把列表中的數(shù)據(jù)往Channel發(fā),如下圖所示。
  • SinkRunner則是不斷循環(huán)調(diào)用SinkProcess的process的方法,SinkProcess有幾種類型,用于決定選擇哪個(gè)Sink進(jìn)行存儲(chǔ)(Sink可以有多個(gè)),選擇了Sink后,調(diào)用其process方法。Sink的process方法,主要做的就是去Channel中讀取數(shù)據(jù),并寫入對(duì)應(yīng)的存儲(chǔ),如下圖所示。

總結(jié)

以上是生活随笔為你收集整理的Flume 1.7 源码分析(二)整体架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。