1. 程式人生 > >大數據模塊開發之數據采集

大數據模塊開發之數據采集

容錯能力 follow 部署 nginx 要求 信息 file ref 完全

1. 需求
在網站web流量日誌分析這種場景中,對數據采集部分的可靠性、容錯能力要求通常不會非常嚴苛,因此使用通用的flume日誌采集框架完全可以滿足需求。
2. Flume日誌采集系統2.1. Flume采集
Flume采集系統的搭建相對簡單:
1、在服務器上部署agent節點,修改配置文件
2、啟動agent節點,將采集到的數據匯聚到指定的HDFS目錄中
針對nginx日誌生成場景,如果通過flume(1.6)收集,無論是Spooling Directory Source和Exec Source均不能滿足動態實時收集的需求,在當前flume1.7穩定版本中,提供了一個非常好用的TaildirSource,使用這個source,可以監控一個目錄,並且使用正則表達式匹配該目錄中的文件名進行實時收集。
核心配置如下:
a1.sources = r1
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.positionFile = /var/log/flume/taildir_position.json
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.filegroups.f1 = /var/log/test1/example.log
a1.sources.r1.filegroups.f2 = /var/log/test2/.log.
filegroups:指定filegroups,可以有多個,以空格分隔;(TailSource可以同時監控tail多個目錄中的文件)
positionFile:配置檢查點文件的路徑,檢查點文件會以json格式保存已經tail文件的位置,解決了斷點不能續傳的缺陷。
filegroups.<filegroupName>:配置每個filegroup的文件絕對路徑,文件名可以用正則表達式匹配
通過以上配置,就可以監控文件內容的增加和文件的增加。產生和所配置的文件名正則表達式不匹配的文件,則不會被tail。
2.2. 數據內容樣例
58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
字段解析:
1、訪客ip地址: 58.215.204.118
2、訪客用戶信息: - -
3、請求時間:[18/Sep/2013:06:51:35 +0000]
4、請求方式:GET
5、請求的url:/wp-includes/js/jquery/jquery.js?ver=1.10.2
6、請求所用協議:HTTP/1.1
7、響應碼:304
8、返回的數據流量:0
9、訪客的來源url:http://blog.fens.me/nodejs-socketio-chat/
10、訪客所用瀏覽器:Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0

大數據模塊開發之數據采集