本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理領(lǐng)域,具體涉及一種基于Hadoop的海量日志數(shù)據(jù)處理方法。
背景技術(shù):
現(xiàn)有的日志處理方式一般是采用EMC、IBM和ORACLE存儲(chǔ)設(shè)備和數(shù)據(jù)庫(kù)存儲(chǔ)。當(dāng)數(shù)據(jù)量到達(dá)日志系統(tǒng)處理的上限時(shí),廠家推出新的軟硬件供用戶升級(jí)。而隨著用戶的增多日志總量在成指數(shù)上升,通過(guò)傳統(tǒng)的改善硬件指標(biāo)的方式來(lái)解決,從根本上不能解決問(wèn)題。
現(xiàn)有的日志處理方式是集中式的,無(wú)法支持各個(gè)應(yīng)用系統(tǒng)中的日志收集,另外,現(xiàn)有的日志處理方式無(wú)法對(duì)日志支持跨節(jié)點(diǎn)查詢。
同時(shí),日志數(shù)據(jù)不僅數(shù)據(jù)量龐大,且大多數(shù)是非結(jié)構(gòu)化的數(shù)據(jù),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)很難通過(guò)添加信息條目的方式記錄這種行為,以往的基礎(chǔ)架構(gòu)逐漸顯得力不從心。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題:針對(duì)現(xiàn)有的日志處理機(jī)制在對(duì)海量日志數(shù)據(jù)情況下所顯露出來(lái)的缺點(diǎn),提供一種能夠從各個(gè)應(yīng)用系統(tǒng)中收集日志數(shù)據(jù),集中起來(lái)用于查詢、統(tǒng)計(jì)和分析,提高應(yīng)用系統(tǒng)日志的處理速度和效率的基于Hadoop的海量日志數(shù)據(jù)處理方法。
為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:
一種基于Hadoop的海量日志數(shù)據(jù)處理方法,實(shí)施步驟包括:
1)建立Hadoop分布式集群平臺(tái),所述Hadoop分布式集群平臺(tái)安裝有分布式文件系統(tǒng)HDFS、非關(guān)系型數(shù)據(jù)庫(kù)Redis、Mysql數(shù)據(jù)庫(kù)、HBase分布式數(shù)據(jù)庫(kù)、Kafka分布式消息緩存系統(tǒng)、REST接口以及Strom流式計(jì)算框架;將待進(jìn)行海量日志處理的目標(biāo)應(yīng)用系統(tǒng)服務(wù)器和所述Hadoop分布式集群平臺(tái)相連,并預(yù)先在目標(biāo)應(yīng)用系統(tǒng)服務(wù)器中部署用于定時(shí)上傳服務(wù)器軟件訪問(wèn)日志文件的SHELL腳本;
2)針對(duì)目標(biāo)應(yīng)用系統(tǒng)服務(wù)器中的服務(wù)器軟件訪問(wèn)日志、業(yè)務(wù)日志兩種日志,通過(guò)SHELL腳本定時(shí)上傳推送服務(wù)器軟件訪問(wèn)日志文件給Hadoop分布式集群平臺(tái),所述Hadoop分布式集群平臺(tái)將服務(wù)器軟件訪問(wèn)日志文件存儲(chǔ)到分布式文件系統(tǒng)HDFS;所述Hadoop分布式集群平臺(tái)通過(guò)REST接口接收目標(biāo)應(yīng)用系統(tǒng)服務(wù)器的業(yè)務(wù)日志,并將業(yè)務(wù)日志數(shù)據(jù)推送到Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中進(jìn)行緩存;
3)針對(duì)存儲(chǔ)到分布式文件系統(tǒng)HDFS中的服務(wù)器軟件訪問(wèn)日志文件,Hadoop分布式集群平臺(tái)首先對(duì)服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,對(duì)清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析得到統(tǒng)計(jì)數(shù)據(jù),將統(tǒng)計(jì)數(shù)據(jù)存放在分布式文件系統(tǒng)HDFS中,然后將存放在分布式文件系統(tǒng)HDFS中存放的統(tǒng)計(jì)數(shù)據(jù)導(dǎo)出到Mysql數(shù)據(jù)庫(kù)中;針對(duì)緩存到Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中的業(yè)務(wù)日志數(shù)據(jù),Hadoop分布式集群平臺(tái)首先采用Strom流式計(jì)算框架對(duì)Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中緩存的業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分析處理得到實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù),并將得到的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)存放在非關(guān)系型數(shù)據(jù)庫(kù)Redis中;然后將實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)通過(guò)分布式文件系統(tǒng)HDFS提供的 API 來(lái)持久化存儲(chǔ)數(shù)據(jù)到HBase分布式數(shù)據(jù)庫(kù)中并建立主鍵和索引;
4)Hadoop分布式集群平臺(tái)響應(yīng)用戶的查詢,當(dāng)收到用戶的查詢請(qǐng)求時(shí),對(duì)HBase分布式數(shù)據(jù)庫(kù)中的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)或Mysql數(shù)據(jù)庫(kù)中的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行查詢并顯示查詢結(jié)果。
優(yōu)選地,步驟1)中的Hadoop分布式集群平臺(tái)包括Server1~Server7共七個(gè)服務(wù)器節(jié)點(diǎn),服務(wù)器節(jié)點(diǎn)Server1為安裝有分布式文件系統(tǒng)HDFS的HDFS服務(wù)器,服務(wù)器節(jié)點(diǎn)Server2為安裝有HBase分布式數(shù)據(jù)庫(kù)的HBase服務(wù)器,服務(wù)器節(jié)點(diǎn)Server3為安裝有Kafka分布式消息緩存系統(tǒng)以及Strom流式計(jì)算框架的Kafka Strom服務(wù)器,服務(wù)器節(jié)點(diǎn)Server4為用于對(duì)HDFS服務(wù)器中清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的離線分析數(shù)據(jù)庫(kù),服務(wù)器節(jié)點(diǎn)Server5為安裝有Mysql數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)Redis的數(shù)據(jù)庫(kù)服務(wù)器,服務(wù)器節(jié)點(diǎn)Server6為用于接收上傳服務(wù)器軟件訪問(wèn)日志文件并進(jìn)行備份的NFS服務(wù)器,服務(wù)器節(jié)點(diǎn)Server7為用于通過(guò)REST接口接收業(yè)務(wù)日志以及響應(yīng)用戶的查詢并顯示查詢結(jié)果的接口服務(wù)器。
優(yōu)選地,步驟3)中對(duì)服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換具體是指使用MapReduce數(shù)據(jù)清洗算法進(jìn)行清洗轉(zhuǎn)換。
優(yōu)選地,步驟3)中對(duì)清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析得到的統(tǒng)計(jì)數(shù)據(jù)包括瀏覽量PV、獨(dú)立IP數(shù)、被傳輸頁(yè)面的總字節(jié)數(shù)、統(tǒng)計(jì)來(lái)源網(wǎng)站與跳出率、每個(gè)小時(shí)頁(yè)面訪問(wèn)量中的至少一種。
本發(fā)明在建立Hadoop分布式集群平臺(tái)的基礎(chǔ)上,針對(duì)目標(biāo)應(yīng)用系統(tǒng)服務(wù)器中的服務(wù)器軟件訪問(wèn)日志、業(yè)務(wù)日志兩種日志進(jìn)行分類(lèi)處理,針對(duì)存儲(chǔ)到分布式文件系統(tǒng)HDFS中的服務(wù)器軟件訪問(wèn)日志文件,Hadoop分布式集群平臺(tái)首先對(duì)服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,對(duì)清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析得到統(tǒng)計(jì)數(shù)據(jù),將統(tǒng)計(jì)數(shù)據(jù)存放在分布式文件系統(tǒng)HDFS中,然后將存放在分布式文件系統(tǒng)HDFS中存放的統(tǒng)計(jì)數(shù)據(jù)導(dǎo)出到Mysql數(shù)據(jù)庫(kù)中;針對(duì)緩存到Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中的業(yè)務(wù)日志數(shù)據(jù),Hadoop分布式集群平臺(tái)首先采用Strom流式計(jì)算框架對(duì)Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中緩存的業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分析處理得到實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù),并將得到的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)存放在非關(guān)系型數(shù)據(jù)庫(kù)Redis中;然后將實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)通過(guò)分布式文件系統(tǒng)HDFS提供的 API 來(lái)持久化存儲(chǔ)數(shù)據(jù)到HBase分布式數(shù)據(jù)庫(kù)中并建立主鍵和索引;基于Hadoop分布式集群平臺(tái)響應(yīng)用戶的查詢,當(dāng)收到用戶的查詢請(qǐng)求時(shí),對(duì)HBase分布式數(shù)據(jù)庫(kù)中的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)或Mysql數(shù)據(jù)庫(kù)中的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行查詢并顯示查詢結(jié)果,使得本發(fā)明基于Hadoop的海量日志數(shù)據(jù)處理方法具有下述優(yōu)點(diǎn):1、可支持分布式的日志收集;2、可支持跨節(jié)點(diǎn)的日志查詢;3、能統(tǒng)計(jì)網(wǎng)站各大關(guān)鍵指標(biāo)數(shù)據(jù),如瀏覽量PV、獨(dú)立IP數(shù)、被傳輸頁(yè)面的總字節(jié)數(shù)、統(tǒng)計(jì)來(lái)源網(wǎng)站與跳出率、每個(gè)小時(shí)頁(yè)面訪問(wèn)量;4、為進(jìn)一步數(shù)據(jù)挖掘提供有效途徑,在此基礎(chǔ)上開(kāi)發(fā)數(shù)據(jù)監(jiān)控、廣告反饋、分類(lèi)統(tǒng)計(jì)等功能。綜上所述,本發(fā)明基于Hadoop的海量日志數(shù)據(jù)處理方法是一種可支持分布式日志管理、支持跨節(jié)點(diǎn)查詢、能統(tǒng)計(jì)網(wǎng)站各打指標(biāo)數(shù)據(jù)、為進(jìn)一步數(shù)據(jù)挖掘提供有效途徑的基于Hadoo的海量日志數(shù)據(jù)處理方法,本發(fā)明突破傳統(tǒng)數(shù)據(jù)處理方式的瓶頸,使得海量數(shù)據(jù)的收集、存儲(chǔ)、計(jì)算變得更加容易、更加高效。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例方法的基本原理示意圖。
圖2為本發(fā)明實(shí)施例中建立的Hadoop分布式集群平臺(tái)架構(gòu)示意圖。
具體實(shí)施方式
如圖1所示,本實(shí)施例基于Hadoop的海量日志數(shù)據(jù)處理方法的實(shí)施步驟包括:
1)建立Hadoop分布式集群平臺(tái),Hadoop分布式集群平臺(tái)安裝有分布式文件系統(tǒng)HDFS、非關(guān)系型數(shù)據(jù)庫(kù)Redis、Mysql數(shù)據(jù)庫(kù)、HBase分布式數(shù)據(jù)庫(kù)、Kafka分布式消息緩存系統(tǒng)、REST接口以及Strom流式計(jì)算框架;將待進(jìn)行海量日志處理的目標(biāo)應(yīng)用系統(tǒng)服務(wù)器和Hadoop分布式集群平臺(tái)相連,并預(yù)先在目標(biāo)應(yīng)用系統(tǒng)服務(wù)器中部署用于定時(shí)上傳服務(wù)器軟件訪問(wèn)日志文件的SHELL腳本;
2)針對(duì)目標(biāo)應(yīng)用系統(tǒng)服務(wù)器中的服務(wù)器軟件訪問(wèn)日志、業(yè)務(wù)日志兩種日志,通過(guò)SHELL腳本定時(shí)上傳推送服務(wù)器軟件訪問(wèn)日志文件給Hadoop分布式集群平臺(tái),Hadoop分布式集群平臺(tái)將服務(wù)器軟件訪問(wèn)日志文件存儲(chǔ)到分布式文件系統(tǒng)HDFS;Hadoop分布式集群平臺(tái)通過(guò)REST接口接收目標(biāo)應(yīng)用系統(tǒng)服務(wù)器的業(yè)務(wù)日志,并將業(yè)務(wù)日志數(shù)據(jù)推送到Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中進(jìn)行緩存;
3)針對(duì)存儲(chǔ)到分布式文件系統(tǒng)HDFS中的服務(wù)器軟件訪問(wèn)日志文件,Hadoop分布式集群平臺(tái)首先對(duì)服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,對(duì)清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析得到統(tǒng)計(jì)數(shù)據(jù),將統(tǒng)計(jì)數(shù)據(jù)存放在分布式文件系統(tǒng)HDFS中,然后將存放在分布式文件系統(tǒng)HDFS中存放的統(tǒng)計(jì)數(shù)據(jù)導(dǎo)出到Mysql數(shù)據(jù)庫(kù)中;針對(duì)緩存到Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中的業(yè)務(wù)日志數(shù)據(jù),Hadoop分布式集群平臺(tái)首先采用Strom流式計(jì)算框架對(duì)Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中緩存的業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分析處理得到實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù),并將得到的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)存放在非關(guān)系型數(shù)據(jù)庫(kù)Redis中;然后將實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)通過(guò)分布式文件系統(tǒng)HDFS提供的 API 來(lái)持久化存儲(chǔ)數(shù)據(jù)到HBase分布式數(shù)據(jù)庫(kù)中并建立主鍵和索引(以便為數(shù)據(jù)展現(xiàn)提供高效的數(shù)據(jù)訪問(wèn)能力);
4)Hadoop分布式集群平臺(tái)響應(yīng)用戶的查詢,當(dāng)收到用戶的查詢請(qǐng)求時(shí),對(duì)HBase分布式數(shù)據(jù)庫(kù)中的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)或Mysql數(shù)據(jù)庫(kù)中的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行查詢并顯示查詢結(jié)果。
本實(shí)施例方法在具體實(shí)現(xiàn)時(shí)包含了日志數(shù)據(jù)采集模塊、日志數(shù)據(jù)清洗模塊、日志數(shù)據(jù)分析模塊、日志數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)導(dǎo)出模塊和數(shù)據(jù)展現(xiàn)模塊。本實(shí)施例中,日志數(shù)據(jù)采集模塊使用REST架構(gòu)和SHELL腳本;日志數(shù)據(jù)清洗模塊使用MapReduce數(shù)據(jù)清洗算法;日志數(shù)據(jù)分析模塊使用MapReduce分析算法和Strom流式計(jì)算框架,分析計(jì)算網(wǎng)站各大關(guān)鍵指標(biāo),如瀏覽量PV、獨(dú)立IP數(shù)、被傳輸頁(yè)面的總字節(jié)數(shù)、統(tǒng)計(jì)來(lái)源網(wǎng)站與跳出率、每個(gè)小時(shí)頁(yè)面訪問(wèn)量,以供運(yùn)營(yíng)者決策;日志數(shù)據(jù)存儲(chǔ)模塊使用HBase框架;數(shù)據(jù)導(dǎo)出模塊使用SQOOP框架,將得到的各個(gè)指標(biāo)導(dǎo)出到集群外的關(guān)系型數(shù)據(jù)庫(kù)Mysql中;數(shù)據(jù)展現(xiàn)模塊使用ZooKeeper和HBase框架,Mysql關(guān)系型數(shù)據(jù)庫(kù)實(shí)現(xiàn)海量數(shù)據(jù)的毫秒級(jí)查詢。
其中針對(duì)服務(wù)器軟件訪問(wèn)日志,需要使用日志數(shù)據(jù)采集模塊、日志數(shù)據(jù)清洗模塊、日志數(shù)據(jù)分析模塊、日志數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)導(dǎo)出模塊和數(shù)據(jù)展現(xiàn)模塊;日志數(shù)據(jù)采集模塊通過(guò)SHELL腳本定時(shí)上傳推送服務(wù)器軟件訪問(wèn)日志文件給Hadoop分布式集群平臺(tái),日志數(shù)據(jù)清洗模塊對(duì)服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,日志數(shù)據(jù)分析模塊對(duì)清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析得到統(tǒng)計(jì)數(shù)據(jù),日志數(shù)據(jù)存儲(chǔ)模塊將統(tǒng)計(jì)數(shù)據(jù)存放在分布式文件系統(tǒng)HDFS中,數(shù)據(jù)導(dǎo)出模塊將存放在分布式文件系統(tǒng)HDFS中存放的統(tǒng)計(jì)數(shù)據(jù)導(dǎo)出到Mysql數(shù)據(jù)庫(kù)中;數(shù)據(jù)展現(xiàn)模塊基于Mysql數(shù)據(jù)庫(kù)中的數(shù)據(jù)提供查詢,并顯示查詢結(jié)果。針對(duì)業(yè)務(wù)日志,則需要使用日志數(shù)據(jù)采集模塊、日志數(shù)據(jù)分析模塊、日志數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)導(dǎo)出模塊和數(shù)據(jù)展現(xiàn)模塊;日志數(shù)據(jù)采集模塊通過(guò)REST接口接收目標(biāo)應(yīng)用系統(tǒng)服務(wù)器的業(yè)務(wù)日志,并將業(yè)務(wù)日志數(shù)據(jù)推送到Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中進(jìn)行緩存,日志數(shù)據(jù)分析模塊采用Strom流式計(jì)算框架對(duì)Kafka分布式消息緩存系統(tǒng)的Kafka消息隊(duì)列中緩存的業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分析處理得到實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù),日志數(shù)據(jù)存儲(chǔ)模塊將得到的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)存放在非關(guān)系型數(shù)據(jù)庫(kù)Redis中,數(shù)據(jù)導(dǎo)出模塊將實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)通過(guò)分布式文件系統(tǒng)HDFS提供的 API 來(lái)持久化存儲(chǔ)數(shù)據(jù)到HBase分布式數(shù)據(jù)庫(kù)中并建立主鍵和索引,數(shù)據(jù)展現(xiàn)模塊基于HBase分布式數(shù)據(jù)庫(kù)中的數(shù)據(jù)提供查詢,并顯示查詢結(jié)果。
本實(shí)施例中,步驟3)中對(duì)服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換具體是指使用MapReduce數(shù)據(jù)清洗算法進(jìn)行清洗轉(zhuǎn)換。本實(shí)施例中進(jìn)行清洗轉(zhuǎn)換時(shí),具體步驟包括檢查數(shù)據(jù)一致性,處理無(wú)效值和缺失值,清洗轉(zhuǎn)換后的數(shù)據(jù)存放在分布式文件系統(tǒng)HDFS中。
本實(shí)施例中,步驟3)中對(duì)清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析得到的統(tǒng)計(jì)數(shù)據(jù)包括瀏覽量PV、獨(dú)立IP數(shù)、被傳輸頁(yè)面的總字節(jié)數(shù)、統(tǒng)計(jì)來(lái)源網(wǎng)站與跳出率、每個(gè)小時(shí)頁(yè)面訪問(wèn)量,此外也可以根據(jù)需要選擇其中至少一種或者更多其他本實(shí)施例中未提及的統(tǒng)計(jì)數(shù)據(jù),其原理與本實(shí)施例相同。
如圖2所示,步驟1)中的Hadoop分布式集群平臺(tái)包括Server1~Server7共七個(gè)服務(wù)器節(jié)點(diǎn),服務(wù)器節(jié)點(diǎn)Server1為安裝有分布式文件系統(tǒng)HDFS的HDFS服務(wù)器,服務(wù)器節(jié)點(diǎn)Server2為安裝有HBase分布式數(shù)據(jù)庫(kù)的HBase服務(wù)器,服務(wù)器節(jié)點(diǎn)Server3為安裝有Kafka分布式消息緩存系統(tǒng)以及Strom流式計(jì)算框架的Kafka Strom服務(wù)器,服務(wù)器節(jié)點(diǎn)Server4為用于對(duì)HDFS服務(wù)器中清洗轉(zhuǎn)換后的服務(wù)器軟件訪問(wèn)日志文件數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的離線分析數(shù)據(jù)庫(kù),服務(wù)器節(jié)點(diǎn)Server5為安裝有Mysql數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)Redis的數(shù)據(jù)庫(kù)服務(wù)器,服務(wù)器節(jié)點(diǎn)Server6為用于接收上傳服務(wù)器軟件訪問(wèn)日志文件并進(jìn)行備份的NFS服務(wù)器,服務(wù)器節(jié)點(diǎn)Server7為用于通過(guò)REST接口接收業(yè)務(wù)日志以及響應(yīng)用戶的查詢并顯示查詢結(jié)果的接口服務(wù)器。本實(shí)施例中,
參見(jiàn)圖2,本實(shí)施例中,目標(biāo)應(yīng)用系統(tǒng)服務(wù)器上運(yùn)行了web服務(wù)器,目標(biāo)應(yīng)用系統(tǒng)服務(wù)器的web服務(wù)器會(huì)主動(dòng)發(fā)送業(yè)務(wù)日志,同時(shí)每天通過(guò)SHELL腳本推送服務(wù)器軟件日志到Hadoop分布式集群平臺(tái)的NFS服務(wù)器。同時(shí),目標(biāo)應(yīng)用系統(tǒng)服務(wù)器還基于web服務(wù)器對(duì)管理員提供查詢管理日志服務(wù),管理員可以通過(guò)該服務(wù)查詢和管理日志;目標(biāo)應(yīng)用系統(tǒng)服務(wù)器還基于web服務(wù)器對(duì)網(wǎng)站用戶提供訪問(wèn)登陸,登陸鑒權(quán)通過(guò)后普通用戶訪問(wèn)業(yè)務(wù)系統(tǒng)可以查詢業(yè)務(wù)日志詳情、查詢?nèi)罩痉治鼋Y(jié)果等。
本實(shí)施例中,針對(duì)Server1~Server7共七個(gè)服務(wù)器節(jié)點(diǎn)的進(jìn)行配置的步驟如下:
S1)對(duì)Linux進(jìn)行基礎(chǔ)環(huán)境搭建,如修改Linux主機(jī)名、固定Linux機(jī)器IP、修改主機(jī)名和IP的映射關(guān)系、ssh免登陸、安裝JDK,配置JDK環(huán)境變量等。
S2)搭建Hadoop分布式集群平臺(tái)(包括Hadoop +zooekeeper集群)。
服務(wù)器節(jié)點(diǎn)Server1:安裝軟件jdk、hadoop,運(yùn)行進(jìn)程為NameNode、DFSZKFailoverController(zkfc),其中NameNode為提供Hadoop的名稱服務(wù)進(jìn)程,DFSZKFailoverController進(jìn)程為故障轉(zhuǎn)移進(jìn)程;本實(shí)施例中服務(wù)器節(jié)點(diǎn)Server1具有下述用途:1、為HBase分布式數(shù)據(jù)庫(kù)做基礎(chǔ)服務(wù);2、為推送的服務(wù)器軟件日志做存儲(chǔ)。
服務(wù)器節(jié)點(diǎn)Server2:安裝軟件jdk、hadoop,運(yùn)行進(jìn)程為NameNode、DFSZKFailoverController(zkfc) ,其中NameNode為提供Hadoop集群的名稱服務(wù)進(jìn)程,DFSZKFailoverController進(jìn)程為故障轉(zhuǎn)移進(jìn)程;本實(shí)施例中服務(wù)器節(jié)點(diǎn)Server2具有下述用途:為HBase分布式數(shù)據(jù)庫(kù)存儲(chǔ)業(yè)務(wù)日志。
服務(wù)器節(jié)點(diǎn)Server3:安裝軟件jdk、hadoop,運(yùn)行進(jìn)程為ResourceManager,其中ResourceManager為hadoop的管理服務(wù)進(jìn)程;本實(shí)施例中服務(wù)器節(jié)點(diǎn)Server3具有下述用途:1、Kafka分布式消息緩存系統(tǒng)對(duì)業(yè)務(wù)日志做消息隊(duì)列;2、Strom流式計(jì)算框架一方面存儲(chǔ)業(yè)務(wù)日志到Hbase分布式數(shù)據(jù)庫(kù),另一方面對(duì)業(yè)務(wù)日志做實(shí)時(shí)計(jì)算分析。
服務(wù)器節(jié)點(diǎn)Server4:安裝軟件jdk、hadoop,運(yùn)行進(jìn)程為ResourceManager,其中ResourceManager為hadoop的管理服務(wù)進(jìn)程;本實(shí)施例中服務(wù)器節(jié)點(diǎn)Server4具有下述用途:對(duì)存儲(chǔ)在分布式文件系統(tǒng)HDFS和HBase數(shù)據(jù)庫(kù)上的數(shù)據(jù)進(jìn)行離線數(shù)據(jù)分析。
服務(wù)器節(jié)點(diǎn)Server5:安裝軟件jdk、hadoop、zookeeper,運(yùn)行進(jìn)程為DataNode、NodeManager、JournalNode、QuorumPeerMain,其中DataNode為hadoop的數(shù)據(jù)節(jié)點(diǎn)服務(wù)進(jìn)程;NodeManager為節(jié)點(diǎn)管理進(jìn)程,JournalNode為NameNode之間共享數(shù)據(jù)的進(jìn)程,QuorumPeerMain為zooekeeper的服務(wù)進(jìn)程;服務(wù)器節(jié)點(diǎn)Server5還包含有Memcached數(shù)據(jù)庫(kù)和Mysql數(shù)據(jù)庫(kù)Memcached數(shù)據(jù)庫(kù)用于保存實(shí)時(shí)計(jì)算分析結(jié)果,Mysql數(shù)據(jù)庫(kù)用于保存離線計(jì)算分析后的數(shù)據(jù)。
服務(wù)器節(jié)點(diǎn)Server6:安裝軟件jdk、hadoop、zookeeper,運(yùn)行進(jìn)程為DataNode、NodeManager、JournalNode、QuorumPeerMain,其中DataNode為hadoop的數(shù)據(jù)節(jié)點(diǎn)服務(wù)進(jìn)程;NodeManager為節(jié)點(diǎn)管理進(jìn)程,JournalNode為NameNode之間共享數(shù)據(jù)的進(jìn)程,QuorumPeerMain為zooekeeper的服務(wù)進(jìn)程;本實(shí)施例中服務(wù)器節(jié)點(diǎn)Server6具有下述用途:1、備份每天的服務(wù)器軟件日志;2、接收業(yè)務(wù)系統(tǒng)推送的目標(biāo)應(yīng)用系統(tǒng)服務(wù)器的軟件日志后,推送到分布式文件系統(tǒng)HDFS的集群上。
服務(wù)器節(jié)點(diǎn)Server7:安裝軟件jdk、hadoop、zookeeper,運(yùn)行進(jìn)程為DataNode、NodeManager、JournalNode、QuorumPeerMain,其中DataNode為hadoop的數(shù)據(jù)節(jié)點(diǎn)服務(wù)進(jìn)程;NodeManager為節(jié)點(diǎn)管理進(jìn)程,JournalNode為NameNode之間共享數(shù)據(jù)的進(jìn)程,QuorumPeerMain為zooekeeper的服務(wù)進(jìn)程;本實(shí)施例中服務(wù)器節(jié)點(diǎn)Server7具有下述用途:1、對(duì)業(yè)務(wù)系統(tǒng)請(qǐng)求鑒權(quán)。2、采用webservice+SDK發(fā)布接口,接收業(yè)務(wù)系統(tǒng)的請(qǐng)求(查詢、存儲(chǔ))。
本實(shí)施例中,Hadoop集群由兩個(gè)NameNode組成,一個(gè)處于active狀態(tài),另一個(gè)處于standby狀態(tài)。Active NameNode對(duì)外提供服務(wù),而Standby NameNode則不對(duì)外提供服務(wù),僅同步active namenode的狀態(tài),以便能夠在它失敗時(shí)快速進(jìn)行切換。Hadoop集群的HDFS HA的采用QJM解決方案,在該方案中,主備N(xiāo)ameNode之間通過(guò)一組JournalNode同步元數(shù)據(jù)信息,一條數(shù)據(jù)只要成功寫(xiě)入多數(shù)JournalNode即認(rèn)為寫(xiě)入成功。通常配置奇數(shù)個(gè)JournalNode;同時(shí),本實(shí)施例中還配置了一個(gè)zookeeper集群,用于ZKFC(DFSZKFailoverController)故障轉(zhuǎn)移,當(dāng)Active NameNode掛掉了,會(huì)自動(dòng)切換Standby NameNode為standby狀態(tài);兩個(gè)ResourceManager,一個(gè)是Active,一個(gè)是Standby,狀態(tài)由zookeeper進(jìn)行協(xié)調(diào)。
S3)在Hadoop集群上搭建所需的分布式數(shù)據(jù)框架HBase,得到HBase分布式數(shù)據(jù)庫(kù)。首先啟動(dòng)ZooKeeper集群,然后啟動(dòng)Hadoop分布式集群, 最后在Master(元數(shù)據(jù)節(jié)點(diǎn))上啟動(dòng)HBase集群。
S4)在Hadoop集群上搭建分布式Strom流式計(jì)算框架和Kafka分布式消息緩存系統(tǒng)。
S5)安裝配置Mysql數(shù)據(jù)庫(kù)、redis數(shù)據(jù)庫(kù),并且搭建SQOOP數(shù)據(jù)導(dǎo)出框架。
S6)搭建一個(gè)REST接口服務(wù),供日志數(shù)據(jù)接收與分析結(jié)果的可視化展示功能。
S7)在分布式文件系統(tǒng)HDFS根目錄下創(chuàng)建目標(biāo)應(yīng)用系統(tǒng)服務(wù)器對(duì)應(yīng)的文件夾,通過(guò)REST接口服務(wù)與集群通過(guò)RPC(遠(yuǎn)程過(guò)程調(diào)用協(xié)議)通信交互,讓業(yè)務(wù)日志推送到Kafka分布式消息緩存系統(tǒng)的kafka消息隊(duì)列中,服務(wù)器軟件訪問(wèn)日志同步到分布式文件系統(tǒng)HDFS中對(duì)應(yīng)的目標(biāo)應(yīng)用系統(tǒng)服務(wù)器對(duì)應(yīng)的文件夾下。
S8)對(duì)分布式文件系統(tǒng)HDFS中的服務(wù)器軟件訪問(wèn)日志文件通過(guò)起送清洗模塊進(jìn)行數(shù)據(jù)清洗,清洗完畢后,使用數(shù)據(jù)統(tǒng)計(jì)分析模塊對(duì)服務(wù)器軟件訪問(wèn)日志進(jìn)行網(wǎng)站各大關(guān)鍵指標(biāo)的統(tǒng)計(jì)分析,如瀏覽量PV、獨(dú)立IP數(shù)、被傳輸頁(yè)面的總字節(jié)數(shù)、統(tǒng)計(jì)來(lái)源網(wǎng)站與跳出率、每個(gè)小時(shí)頁(yè)面訪問(wèn)量;業(yè)務(wù)日志推送到Kafka分布式消息緩存系統(tǒng)的kafka消息隊(duì)列中后,就可以通過(guò)實(shí)時(shí)流式計(jì)算Storm對(duì)kafka中業(yè)務(wù)日志進(jìn)行業(yè)務(wù)日志數(shù)據(jù)統(tǒng)計(jì)分析,得到需要的實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù),將實(shí)時(shí)性業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)存放在非關(guān)系型數(shù)據(jù)庫(kù)Redis中。
S9)將業(yè)務(wù)日志數(shù)據(jù)通過(guò)分布式文件系統(tǒng)HDFS提供的 API 來(lái)持久化存儲(chǔ)數(shù)據(jù)到HBase中,以便后續(xù)的業(yè)務(wù)日志數(shù)據(jù)查詢與離線統(tǒng)計(jì)分析。使用數(shù)據(jù)導(dǎo)出模塊(SQOOP服務(wù))把分析匯總的數(shù)據(jù)導(dǎo)出到Mysql數(shù)據(jù)庫(kù)中。配置完畢以后,即可通過(guò)REST接口服務(wù)將日志分析結(jié)果進(jìn)行可視化展示,如以柱狀圖、餅狀圖、折線圖等可視化形式在 Web 頁(yè)面上展示。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。