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