張有義
基于Hadoop的大數(shù)據(jù)處理與挖掘分析
張有義
(貴州江南航天信息網(wǎng)絡(luò)通信有限公司 貴州遵義 563000)
大數(shù)據(jù)能夠為數(shù)據(jù)挖掘,提供更為豐富的數(shù)據(jù)源,并從中挖掘出更加具有商業(yè)價值的相關(guān)信息。以Hadoop的大數(shù)據(jù)處理作為核心項目,通過查找相關(guān)文獻資料,分析大數(shù)據(jù)的相應(yīng)處理策略,為大數(shù)據(jù)處理路徑的發(fā)展提出更好指導(dǎo)。
Hadoop;大數(shù)據(jù);處理;挖掘
在數(shù)據(jù)爆炸的背景下,云計算技術(shù)逐漸流行起來,而隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與成熟,傳統(tǒng)產(chǎn)業(yè)自動化、信息化的提升,以及人們生活的數(shù)字化發(fā)展,都體現(xiàn)出了大數(shù)據(jù)在日常生產(chǎn)生活中的應(yīng)用優(yōu)勢。而數(shù)據(jù)增長在給人們帶來巨大價值的同時,也帶來了很大挑戰(zhàn),逐漸成為許多大型企業(yè)關(guān)注的焦點。
2.1 概況
目前,大數(shù)據(jù)處理逐漸發(fā)展起來,而數(shù)據(jù)更是成為企業(yè)發(fā)展的核心,為企業(yè)經(jīng)營決策方面提供了重要依據(jù)。Hadoop、NoSQL等開源大數(shù)據(jù)解決方案,可以有效節(jié)約資源、提高系統(tǒng)的利用率,具有很高的性價比。Hadoop主要是由5大構(gòu)造模塊構(gòu)成的,分別是:名字節(jié)點(NameNode)、次名字節(jié)點(Secondary NameNode)、數(shù)據(jù)節(jié)點(DataNode)、任務(wù)跟蹤(TaskTracker)、作業(yè)跟蹤(JobTracker)。每個模塊具備不同的功能,共同完成分布式數(shù)據(jù)處理任務(wù)。
2.2 Hadoop基本原理
Hadoop的建立,屬于一種具有分布式系統(tǒng)的基礎(chǔ)架構(gòu),是一個能夠用于處理大規(guī)模數(shù)據(jù)的軟件平臺,其特點在于具有海量的存儲(能夠處理PB級別的數(shù)據(jù))、成本低、高效率和可靠性等,其核心功能則主要包括兩部分:HDFS和MapReduce。
2.2.1 HDFS
HDFS是一個運行在普通PC之上的分布式文件系統(tǒng)。它采用主/從結(jié)構(gòu)來搭建集群系統(tǒng),通常由一個Master節(jié)點與多個Slave節(jié)點共同構(gòu)成的,可使用兩個節(jié)點充當(dāng)Master,一個為Active,另一個為Standby,如果Active節(jié)點出現(xiàn)失效,則會自動切換至Standby節(jié)點上。Master節(jié)點又被稱為名字節(jié)點,主要責(zé)任是管理元數(shù)據(jù),包括文件系統(tǒng)名空間管理、客戶機對文件的訪問操作等;Slave節(jié)點又被稱為數(shù)據(jù)節(jié)點,主要負(fù)責(zé)對節(jié)點數(shù)據(jù)實施存儲管理,并響應(yīng)客戶端讀寫請求。
2.2.2 Map/Reduce
Map/Reduce作為Hadoop平臺上,用以實施海量數(shù)據(jù),并行運算的計算模型。該模型在處理數(shù)據(jù)時,主要有2個階段:先進行Map階段,后進行Reduce階段。其大概計算過程如下:先將數(shù)據(jù)分為若干份,然后對每一份進行處理,該過程即為Map,歸并每一份的處理結(jié)果,并對歸并后的數(shù)據(jù)進行處理,該過程稱為Reduce。
3.1 核心架構(gòu)設(shè)計
以Hadoop為基礎(chǔ),建立交互式的大數(shù)據(jù)分析查詢核心架構(gòu),具體結(jié)構(gòu)如圖1所示,其中包括了遠程訪問模塊、SQL解析器、查詢優(yōu)化器、任務(wù)計劃執(zhí)行引擎、存儲插件接口、分布式緩存模塊等。
圖1 核心架構(gòu)圖
(1)遠程訪問模塊,該模塊屬于一種低開的銷通信協(xié)議,通常適用于遠程過程調(diào)用。此外,C++和Java API層也用于客戶端應(yīng)用程序與系統(tǒng)進行交互,在提交查詢請求之前,客戶端既可以直接與特定節(jié)點進行通信,也能通過zookeeper發(fā)現(xiàn)集群節(jié)點,從而更方便地管理維護復(fù)雜的集群。
(2)SQL解析器?;跇?biāo)準(zhǔn)SQL語句解析傳入的查詢請求,通過元數(shù)據(jù)應(yīng)用程序接口請求模式信息,然后產(chǎn)生標(biāo)準(zhǔn)邏輯計劃以供優(yōu)化器進行優(yōu)化,其語法樹提供用戶操作接口,靈活性高且該解析器的組件與語言無關(guān)。
(3)查詢優(yōu)化器。優(yōu)化器將邏輯計劃轉(zhuǎn)化為物理計劃,包含有子查詢的SELECT語句是作為半連接執(zhí)行的,所以子查詢中每條記錄返回最少的實例,優(yōu)化器可以對表的掃描最小化并且有利于匹配內(nèi)外表的SELECT記錄。
(4)任務(wù)計劃執(zhí)行引擎。為了實現(xiàn)高性能的查詢處理,引入一種分布式可擴展的執(zhí)行引擎。該引擎提供數(shù)據(jù)本地化、容錯以及基于行列的等級處理。
(5)存儲插件接口。存儲插件可以與數(shù)據(jù)源進行交互,數(shù)據(jù)的位置和優(yōu)化規(guī)則有助于提升查詢效率。
(6)分布式緩存模塊。采用分布式緩存,提高查詢性能,通過動態(tài)地增減集群節(jié)點來調(diào)節(jié)數(shù)據(jù)訪問負(fù)載,從而提高資源利用率。
3.2 數(shù)據(jù)清洗模型
3.2.1 格式清洗
在挖掘服務(wù)器日志文件時,其挖掘的重點在于文本內(nèi)容,此外還包括:音頻、視頻、圖片等多媒體文件,必要的情況下,需要清洗掉文件后綴名是 avi.、mp3.、jpg.、gif.等的多媒體文件日志記錄。當(dāng)用戶訪問服務(wù)器系統(tǒng)時,期間所產(chǎn)生的腳本文件,也不足以反應(yīng)出用戶的關(guān)聯(lián)行為,因而需要將JS等腳本文件清洗掉。
3.2.2 URL清洗
在某些情況下進行的服務(wù)器請求會產(chǎn)生一些無關(guān)的URL記錄,所以需要對這些無關(guān)URL進行清洗。URL清洗的主要方式,是預(yù)先建立相應(yīng)的URL表格,對不在表格內(nèi)的URL內(nèi)容,進行全面的清洗。
3.2.3 通信方式清洗
正常情況下,用戶對服務(wù)器的請求方式有三種,即GET、POST和HEAD。但是,真正能夠反映用戶請求行為的,只有GET請求,因此必須針對其他的兩種通信方式請求進行清洗,而僅保留GET請求。
3.2.4 狀態(tài)清洗
并非每一次的客戶請求,都屬于成功的請求,若遇到網(wǎng)絡(luò)不暢通、服務(wù)器故障等問題所造成的請求不成功問題,則需要連同相應(yīng)的日志內(nèi)容也一并進行清洗。經(jīng)過以上四步清洗后,日志數(shù)據(jù)的規(guī)模已經(jīng)大大減小,即可針對其輸出內(nèi)容實施下一步的操作。
3.3 數(shù)據(jù)查詢流程
當(dāng)用戶向系統(tǒng)提交了一個查詢請求時,客戶端或應(yīng)用程序就會將查詢的SQL語句發(fā)送給集群中的節(jié)點。系統(tǒng)的進程在集群的節(jié)點上執(zhí)行協(xié)調(diào)、規(guī)劃、最大化查詢??蛻舳撕蛻?yīng)用程序查詢后端節(jié)點,然后驅(qū)動查詢的組件。具體過程如下:
(1)使用SQL解析器,對所查詢的請求實施解析,所解析的內(nèi)容則包括詞法、語義等的分析。在查詢解析器中的查詢請求會被解析為邏輯計劃,而邏輯計劃描述了查詢操作的基本數(shù)據(jù)流。
(2)使用優(yōu)化器來讀取邏輯計劃,然后將其轉(zhuǎn)換成物理計劃。存儲引擎和特定的數(shù)據(jù)源進行交互,提供讀寫功能,將元數(shù)據(jù)信息提供給元數(shù)據(jù)庫,將原生功能告知執(zhí)行引擎。
(3)物理計劃的執(zhí)行通常由執(zhí)行引擎進行,而執(zhí)行引擎的運行需要依賴組件,執(zhí)行器負(fù)責(zé)轉(zhuǎn)換數(shù)據(jù)流,功能函數(shù)將數(shù)據(jù)流轉(zhuǎn)換為單獨的數(shù)據(jù),掃描器和寫詞器負(fù)責(zé)讀寫數(shù)據(jù)。元數(shù)據(jù)庫查詢執(zhí)行框架并提供元數(shù)據(jù)信息,即時編譯器將部分物理計劃轉(zhuǎn)換成本地代碼。
3.4 基于Hadoop的網(wǎng)絡(luò)大數(shù)據(jù)挖掘應(yīng)用
3.4.1 挖掘工具選擇
Mahout作為ASF旗下的開源項目之一,Myhout能夠提供一些可擴展機器學(xué)習(xí)領(lǐng)域經(jīng)典算法,旨在幫助相關(guān)的開發(fā)人員,能夠更加方便快捷地進行智能應(yīng)用程序的創(chuàng)建,從而實現(xiàn)聚類、分類、推薦過濾、頻繁子項的挖掘。另外,通過運用Apache的Hadoop庫,Mahout可有效擴展至云中。在算法上,Mahout具有很強的針對性,因而適用于小數(shù)量級別上的運行控制,但是,當(dāng)計算機硬盤容量全部消耗完成之后,則可能會發(fā)生崩潰。
3.4.2 數(shù)據(jù)挖掘過程
利用所搭建的平臺,采用數(shù)據(jù)挖掘技術(shù),可設(shè)計為以下幾個重要步驟:①針對所指定的訓(xùn)練數(shù)據(jù),通過相應(yīng)的算法進行訓(xùn)練;②在評測過程中,可以將待測試數(shù)據(jù)進行類型的劃分;③保證統(tǒng)計分類的正確率。依據(jù)實驗內(nèi)容、實驗要求等,采用合適的算法,所選擇的算法應(yīng)當(dāng)能夠?qū)崿F(xiàn)對訓(xùn)練數(shù)據(jù)的訓(xùn)練和對測試數(shù)據(jù)的預(yù)測,并進行與原始測試數(shù)據(jù)的計算正確率比對。
Hadoop的內(nèi)部工作機制非常復(fù)雜,且相互依存,其運行基礎(chǔ)為分布式系統(tǒng)原理、實用技術(shù)以及相關(guān)常識。所以,能夠合理運用Hadoop的過程是一個較為漫長的過程,需要在學(xué)習(xí)過程中進行經(jīng)驗的積累與總結(jié),從而在實際工作中進行有效的運用。
[1]宋廷山,郭思亮,韓 偉.基于HADOOP的大數(shù)據(jù)描述統(tǒng)計分析[J].統(tǒng)計與信息論壇,2015(11):32~38.
[2]王劍宇,劉鳳良,姜薇.基于Hadoop的大數(shù)據(jù)增量計算探討[J].電腦知識與技術(shù),2015,11(18):8~10.
[3]肖 露,王 晶.一種基于Hadoop的大數(shù)據(jù)流量經(jīng)營系統(tǒng)解決方案[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2015(2):87~92.
TP311.13
A
1004-7344(2016)33-0263-02
2016-11-10