標籤:blog http io ar os 使用 sp java 檔案
Flume的介紹就不多說了,大家可以自己搜尋。但是目前網上大都是Flume 1.4版本或之前的資料,Flume 1.5感覺變化挺大的,如果你準備嘗試一下,我這裡給大家介紹一下最小化搭建方案,並且使用MongoSink將資料存入mongodb。完全單機運行,沒有master,沒有collector(說白了collector也就是一個agent,只是資料來源於多個其他agent),只有一個agent。把這套東西理解了你就可以自由發揮了
Flume是必須要求java運行環境的哈,jdk安裝就不解釋了,推薦yum安裝。
另外JDK安裝好以後不用設定什麼環境變數,flume其實可以自己找到的,只是會發出一個警告而已,無視之
首先去下載Flume 1.5安裝包
http://flume.apache.org/download.html
只需要下載apache-flume-1.5.0.1-bin.tar.gz就可以了,32位64位系統通吃
這裡我們把安裝包放到/home目錄下,然後解壓縮
tar zxvf apache-flume-1.5.0-bin.tar.gz
把解壓得到的apache-flume-1.5.0-bin檔案夾改名成flume,所以我們flume的路徑是/home/flume
網上很多說要設定flume home環境變數,其實不用的
這裡我們新增一個設定檔到/home/flume/conf/netcat.conf(其中的agent2/source2/sink2/channel2都是自己定義的名稱,隨便改)
# 定義組件名稱agent2.sources = source2agent2.sinks = sink2agent2.channels = channel2# 定義資料入口agent2.sources.source2.type = netcatagent2.sources.source2.bind = 192.168.6.198agent2.sources.source2.port = 44444agent2.sources.source2.channels = channel2# 定義資料出口agent2.sinks.sink2.type = org.riderzen.flume.sink.MongoSinkagent2.sinks.sink2.host = 192.168.6.222agent2.sinks.sink2.port = 27017agent2.sinks.sink2.model = singleagent2.sinks.sink2.collection = eventsagent2.sinks.sink2.batch = 100agent2.sinks.sink2.channel = channel2# 使用記憶體管道agent2.channels.channel2.type = memoryagent2.channels.channel2.capacity = 1000agent2.channels.channel2.transactionCapacity = 100
以上設定檔相信大家一看就很明了了,我簡單介紹一下:
資料來源是source2,而source2的定義是接收本機192.168.6.198:44444連接埠發過來的資料,然後存放到channel2緩衝管道裡面去
channel2是什麼呢?看最下面對channel2的定義,它是一個記憶體緩衝隊列,容量是1000條資料,滿100條就會被sink處理掉
那麼sink的定義呢?這裡我們用到了Leon Lee(李龍?可能是國內哪位大神,感謝你哈)編寫的一個MongoSink,作用是把從channel2取出的資料存入MongoDB,並且累計100條資料才提交
MongoSink請到這裡下載:https://github.com/leonlee/flume-ng-mongodb-sink
MongoSink我簡單說一下,只需要把他打成jar包丟到/home/flume/lib裡面就行了,當然別忘了把mongodb驅動也丟進去。以後你要是開發其他擴充包都是丟到lib裡面就好
好,那麼我們就清楚了,flume的作用就是從source擷取資料,存入channel緩衝隊列,最後由sink放入永久儲存
運行以下命令啟動flume
/home/flume/bin/flume-ng agent --conf /home/flume/conf --conf-file /home/flume/conf/netcat.conf --name agent2 -Dflume.monitoring.type=http -Dflume.monitoring.port=34545
大致解釋一下:
--name agent2 指定當前啟動並執行這個agent的名稱
--conf /home/flume/conf 這個參數最好指定絕對路徑,說明你的設定檔存放目錄,不單單指agent的配置,其中還有log4j的配置,不然無法記錄日誌
--conf-file /home/flume/conf/netcat.conf 這個是指當前要啟動並執行agent所使用的設定檔
-Dflume.monitoring.type=http 指定開啟HTTP監控,可以通過瀏覽器直接存取本機HTTP地址查看flume運行狀態
-Dflume.monitoring.port=34545 指定HTTP監控的連接埠
如果你需要在控制台顯示一些調試資訊的話請自行配置/home/flume/conf/log4j.properties
OK,等著成功吧
現目前我們主要是解決了日誌資料不必直接寫mongo庫,只要把IP和連接埠告知其他項目團隊,他們直接往這裡發送資料就行了
後期考慮到mongodb可能有些局限性,我們可以非常靈活的改寫sink,把資料存入hdfs,然後就和高大上的hadoop親密接觸拉
Flume 1.5日誌採集並存入mongodb的安裝搭建