【分布式计算】分布式日志导入工具-Flume
背景
Flume是Apache贊助的一個(gè)分布式日志管理系統(tǒng),主要功能就是把集群中每個(gè)worker產(chǎn)生的日志log,collect到特定的地點(diǎn)。
為什么要寫這篇文章呢,因?yàn)楝F(xiàn)在搜索出來的文獻(xiàn)大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出現(xiàn)了很大的改動(dòng),市面上的很多文檔都已經(jīng)過時(shí)了,大家看的時(shí)候一定要注意這點(diǎn),稍后我會(huì)提供幾個(gè)比較新的,有參考價(jià)值的文章。
flume的優(yōu)勢(shì)有一下幾個(gè)方面:
* JAVA實(shí)現(xiàn),跨平臺(tái)性能好
* 有一定的容錯(cuò)機(jī)制,和防止數(shù)據(jù)保障的機(jī)制
* 提供了很多的agent
* 方便開發(fā),有developer選項(xiàng)
功能
單機(jī)版是如上形式的,有三個(gè)部件組成,分別是source,channel,sink。在使用的時(shí)候,只要安裝flume,然后配置好對(duì)應(yīng)的conf文件,就可以了。
source:主要是配置日志文件的來源(提供多種agent,支持多種數(shù)據(jù)源)
channel:類似于一個(gè)隊(duì)列,暫存收到的日志數(shù)據(jù)
sink:將日志文件輸出(有很多方式,可以投影到屏幕上,也可以讀到數(shù)據(jù)庫(kù)或者指定的文件中)
下面就針對(duì)這三點(diǎn),詳細(xì)介紹下
Flume workflow
agent支持多種輸入的source,幾個(gè)比較常用的type。
*HTTP,可以監(jiān)聽http端口,拿log
*netcat,可以監(jiān)聽類似于telnet的端口數(shù)據(jù)
*Spooling ,監(jiān)聽某個(gè)文件目錄下新增的文件
*Avro Source,發(fā)送指定文件,這個(gè)不支持實(shí)時(shí)監(jiān)控,也就是說比方說我們監(jiān)控a.log文件,當(dāng)a.log改變了,我們無法拿到改變的日志
*Exec Source,這個(gè)可以實(shí)時(shí)監(jiān)控某個(gè)文件
重點(diǎn)說下Exec Source,這個(gè)功能非常酷,它允許在agent上執(zhí)行shell命令,這樣我們就能用tail命令來監(jiān)控某個(gè)文件新增的內(nèi)容。
tail -f log.txtDevelop
*首先是利用官方的sdk包,開發(fā)打包jar文件
*把jar放到flume的lib文件目錄下
*配置conf文件
*啟動(dòng)agent:flume-ng agent --conf conf --conf-file ./conf/my.conf -name a1 -Dflume.root.logger=INFO,console
*啟動(dòng)數(shù)據(jù)源:flume-ng avro-client -H localhost -p 44444 -F /home/garvin/log.txt -Dflume.root.logger=INFO,console
推薦幾篇有用的東西:
一個(gè)代碼實(shí)現(xiàn)的例子:https://github.com/waqulianjie/odps_sink
開發(fā)者document:http://flume.apache.org/FlumeUserGuide.html
一個(gè)比較完整的介紹:http://www.aboutyun.com/thread-8917-1-1.html
本文來自博客 “李博Garvin“
轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/buptgshengod]
總結(jié)
以上是生活随笔為你收集整理的【分布式计算】分布式日志导入工具-Flume的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode从零单排】No.135
- 下一篇: PM九步法