1. 程式人生 > >02.網站點擊流數據分析項目_模塊開發_數據采集

02.網站點擊流數據分析項目_模塊開發_數據采集

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.網站點擊流數據分析項目_模塊開發_數據采集