基于大數(shù)據(jù)處理技術(shù)Hadoop的論壇日志分析_謝樹銘.caj
//
使用 HBase 框架對(duì)用戶的【消費(fèi)記錄可以實(shí)現(xiàn)毫秒級(jí)查詢】粘衬。
淘寶的【推薦系統(tǒng)和自定義篩選使用的是 Hive】,可以精確地查詢海量的數(shù)據(jù)。
//
//
2.2.1
功能概述
論壇日志分析系統(tǒng)主要用于通過【收集】到的日志信息咳促,【清洗】數(shù)據(jù)后稚新,
【統(tǒng)計(jì)】出頁面
的瀏覽量
PV(Page View)
、注冊(cè)用戶數(shù)褂删、網(wǎng)站訪問的 ip 數(shù)、網(wǎng)站訪問的跳出率冲茸。
論壇的總瀏覽量可以發(fā)現(xiàn)論壇的受歡迎程度屯阀,用戶對(duì)網(wǎng)站的
興趣程度,就好比【電視收視率】對(duì)于電視劇一樣噪裕,
PV
的統(tǒng)計(jì)就是簡(jiǎn)單的計(jì)算每個(gè)日志
文件中記錄的總和蹲盘。
//流程
論壇系統(tǒng)每天產(chǎn)生的日志文件,是
Apache Commong 格式膳音,每行記錄有 5 部分組
成召衔,分別是訪問 ip、訪問時(shí)間祭陷、訪問資源苍凛、訪問狀態(tài)、本次流量兵志。利用
Flume 把日志文件導(dǎo)入到Hadoop的文件系統(tǒng)HDFS上醇蝴,然后用
Map Reduce程序?qū)?shù)據(jù)進(jìn)行清洗,
清洗完后再利用 Hive
對(duì)數(shù)據(jù)根據(jù)需求和指標(biāo)進(jìn)行統(tǒng)計(jì)分析想罕,若想查詢所有的數(shù)據(jù)信息悠栓,
利用
HBase
查詢展現(xiàn)所有的數(shù)據(jù),分析后的數(shù)據(jù)再利用
sqoop
導(dǎo)入到集群外的數(shù)據(jù)庫(kù)
中按价。
把系統(tǒng)腳本放入
linux
調(diào)度器上惭适,設(shè)定每天凌晨 1 點(diǎn)的時(shí)候自動(dòng)運(yùn)行項(xiàng)目,處理
昨天的日志文件數(shù)據(jù)楼镐。
公司決策者次日就可以得到想要的數(shù)據(jù)癞志。
從上可得出論壇日志分析系統(tǒng)可以分為五個(gè)功能模塊,文件上傳功能模塊框产、數(shù)據(jù)
清洗功能模塊凄杯、數(shù)據(jù)統(tǒng)計(jì)分析功能模塊错洁、數(shù)據(jù)導(dǎo)出功能模塊、數(shù)據(jù)展現(xiàn)功能模塊戒突。
//
Hadoop
的整個(gè)體系結(jié)構(gòu)就是構(gòu)建在
RPC
之上
的屯碴,無論框架如何封裝,底層都是通過
RPC
進(jìn)行交互的妖谴。如下圖示:
//
3.2.2
客戶端與
HDFS
遠(yuǎn)程交互的
RPC
機(jī)制算法實(shí)現(xiàn)
通過查看源碼窿锉,分析可得,
Hadoop
的
RPC
算法實(shí)現(xiàn)主要由三個(gè)類完成膝舅,
RPC
嗡载、
Client
、
Server
仍稀,分別提供對(duì)外
RPC
編程接口洼滚、客戶端實(shí)現(xiàn)和服務(wù)器端的實(shí)現(xiàn)。
Hadoop RPC
對(duì)外提供的接口方法主要有
public static Versioned Protocol wait For Proxy(),
負(fù)責(zé)創(chuàng)建客
戶端的代理對(duì)象技潘,向服務(wù)器端發(fā)起
RPC
請(qǐng)求遥巴。
public static Server get Server(),
負(fù)責(zé)創(chuàng)建
服務(wù)器端對(duì)象,用來處理客戶端發(fā)起的請(qǐng)求
[28]
享幽。
Hadoop
的主節(jié)點(diǎn)
Name Node
是
Hadoop RPC
的服務(wù)端铲掐,底層調(diào)用
get Server()
方法,
實(shí)現(xiàn)了很多接口以滿足不同通信的需要值桩,如
Client Protocol
是客戶端
(File System)
與
Name Node
通信的接口摆霉,
Datanode Protocol
是
Data Node
與
Name Node
通信的接口,
Namenode Protocol
是
Secondary Name Node
與
Name Node
通信的接口奔坟。這些接口都繼
承了
versionedprotocol
接口携栋。
客戶端不是直接通過調(diào)用
getproxy()
或
waitfoproxy()
方法與服務(wù)器端通信的,而是
用
File System
類操作的咳秉,
filesystem
調(diào)用了
Distributed File System,Distributed File System
調(diào)用
DFSClient
對(duì)象婉支,
DFSClient
是直接調(diào)用
Name Node
接口的對(duì)象與
Name Node
打
交道的。具體算法步驟如下表:
//p35
//