02.網站點擊流數據分析項目_模塊開發_數據采集
阿新 • • 發佈:2018-07-18
includes 訪客 bin nodejs channel ont soc 輕量級 工作
3 模塊開發——數據采集
3.1 需求
數據采集的需求廣義上來說分為兩大部分。
1)是在頁面采集用戶的訪問行為,具體開發工作:
1、開發頁面埋點js,采集用戶訪問行為
2、後臺接受頁面js請求記錄日誌
此部分工作也可以歸屬為“數據源”,其開發工作通常由web開發團隊負責
2)是從web服務器上匯聚日誌到HDFS,是數據分析系統的數據采集,此部分工作由數據分析平臺建設團隊負責,
具體的技術實現有很多方式:
Shell腳本:優點:輕量級,開發簡單;缺點:對日誌采集過程中的容錯處理不便控制
Java采集程序:優點:可對采集過程實現精細控制;缺點:開發工作量大
Flume日誌采集框架:成熟的開源日誌采集系統,且本身就是hadoop生態體系中的一員,與hadoop體系中的
各種框架組件具有天生的親和力,可擴展性強
3.2 Flume日誌采集系統搭建:
1、數據源信息:本項目分析的數據用服務器所生成的流量日誌:/data/flumedata/access.log
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
3、Flume采集實現:配置采集方案:
# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source #a1.sources.r1.type = exec #a1.sources.r1.command = tail -F /home/hadoop/log/test.log 用tail命令獲取數據,下沈到hdfs #a1.sources.r1.channels = c1 # Describe/configure the source a1.sources.r1.type = spooldir a1.sources.r1.spoolDir = /data/flumedata 采集目錄到HDFS a1.sources.r1.fileHeader = false # Describe the sink a1.sinks.k1.type = hdfs a1.sinks.k1.channel = c1 a1.sinks.k1.hdfs.path = /fensiweblog/events/%y-%m-%d/ a1.sinks.k1.hdfs.filePrefix = events- a1.sinks.k1.hdfs.round = true a1.sinks.k1.hdfs.roundValue = 10 a1.sinks.k1.hdfs.roundUnit = minute #指定下沈文件按30分鐘滾動 a1.sinks.k1.hdfs.rollInterval = 30 a1.sinks.k1.hdfs.rollSize = 1024 #指定下沈文件按1000000條數滾動 a1.sinks.k1.hdfs.rollCount = 10000 a1.sinks.k1.hdfs.batchSize = 1 a1.sinks.k1.hdfs.useLocalTimeStamp = true #生成的文件類型,默認是Sequencefile,可用DataStream,則為普通文本 a1.sinks.k1.hdfs.fileType = DataStream # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
如果向目錄/data/flumedata中放入文件,就會將文件下沈到HDFS中;
啟動Flume的Agent: bin/flume-ng agent -c conf -f conf/fensi.conf -n a1 -Dflume.root.logger=INFO,console
註意:啟動命令中的 -n 參數要給配置文件中配置的agent名稱
02.網站點擊流數據分析項目_模塊開發_數據采集