蘇樹鵬
(廣西機電職業(yè)技術(shù)學(xué)院,廣西 南寧 530007)
基于Hadoop的大數(shù)據(jù)解決方案的設(shè)計及應(yīng)用
蘇樹鵬
(廣西機電職業(yè)技術(shù)學(xué)院,廣西 南寧 530007)
隨著信息化技術(shù)和終端智能的迅猛發(fā)展,系統(tǒng)需要處理的數(shù)據(jù)呈現(xiàn)海量化,使得海量數(shù)據(jù)的存儲、挖掘成為當(dāng)前亟待解決的問題。使用云計算技術(shù)構(gòu)建集群系統(tǒng),可有效地解決海量數(shù)據(jù)的存儲、共享和深度挖掘問題。首先,采用平臺Hadoop構(gòu)建主框架,并采用異構(gòu)存儲的方式將各部門的業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)儲到集群系統(tǒng)各節(jié)點上存儲,有效地解決了大數(shù)據(jù)的存儲和備份問題。最后借鑒Hive和Hbase優(yōu)點設(shè)計數(shù)據(jù)挖掘子系統(tǒng),提高了集群系統(tǒng)對海量數(shù)據(jù)的分析能力。實時性分析實驗結(jié)果表明此次采用的方法較之以往的方法再獲得了30%的提升。
Hadoop;Hbase;Hive
隨著物聯(lián)網(wǎng)和智能終端技術(shù)的廣泛應(yīng)用,數(shù)字世界產(chǎn)生了6ZB的數(shù)據(jù),其中95%屬于非結(jié)構(gòu)化數(shù)據(jù),且總量飛速增長。系統(tǒng)在處理大數(shù)據(jù)過程中面臨真正的難題是大數(shù)據(jù)的存儲、高速處理和系統(tǒng)及時響應(yīng)。為了解決大數(shù)據(jù)帶來的難題,柏林工業(yè)大學(xué)博士后Mikio L.Braun[1]提出了大數(shù)據(jù)解決方案:通過可動態(tài)伸縮并無限擴展對大數(shù)據(jù)進行可靠存儲管理,運用知識計算等大數(shù)據(jù)分析技術(shù)挖掘大數(shù)據(jù)潛在價值的信息,但該方案還未解決實時大數(shù)據(jù)遷移等問題。本文在推進信息化智能化數(shù)字校園建設(shè)背景下,針對存在校園網(wǎng)平臺中的各系統(tǒng)處理和存儲的數(shù)據(jù)類型呈現(xiàn)多樣化、異構(gòu)性等問題,而導(dǎo)致無法實時存儲和高效處理的大數(shù)據(jù),利用大數(shù)據(jù)思想和云計算技術(shù)構(gòu)建智能化數(shù)字校園平臺。先對校園各個系統(tǒng)平臺處理的信息生命周期分析,構(gòu)建云計算架構(gòu)的大數(shù)據(jù)解決方案,通過設(shè)計數(shù)據(jù)遷移子系統(tǒng),解決實時將各個服務(wù)器中的數(shù)據(jù)遷移到集群系統(tǒng)中進行統(tǒng)一存儲管理問題,實現(xiàn)校園海量數(shù)據(jù)共享。通過設(shè)計數(shù)據(jù)分析挖掘系統(tǒng),解決數(shù)據(jù)深度挖掘、智能數(shù)據(jù)分析等問題,為處理大數(shù)據(jù)提供新的解決方案。
目前進行云計算研究與大數(shù)據(jù)處理的較為主流的平臺有由Apache公司研發(fā)的Hadoop[2-3]系統(tǒng),其把復(fù)雜的作業(yè)經(jīng)過算法優(yōu)化進行合理切分成若干子作業(yè),然后將子作業(yè)分配到具有所需數(shù)據(jù)的若干節(jié)點進行并行MapReduce計算,節(jié)點間沒有依賴性且可以根據(jù)運行狀況進行調(diào)度,提高處理速度和效率。平臺進行并行處理時,需要位于平臺底層分布式存儲系統(tǒng)中眾多節(jié)點存儲的數(shù)據(jù)和節(jié)點具體操作,眾多節(jié)點中有唯一的主節(jié)點控制其他節(jié)點的協(xié)同操作和存儲信息。HBase[4-6]是利用Hadoop系統(tǒng)另一核心HDFS作為存儲基礎(chǔ),具備存儲海量非關(guān)系數(shù)據(jù)庫,作為眾多節(jié)點進行并行計算任務(wù)的輸入和輸出。Hive[7]是采用類似SQL語言對數(shù)據(jù)進行管理的數(shù)據(jù)倉庫工具,把經(jīng)過解析和編譯的HiveQL命令交給Hadoop平臺中各個子節(jié)點的MapReduce并行執(zhí)行。利用Hbase與Hive兩者的API接口進行通信建立關(guān)聯(lián),對Hbase提供的用鍵值存儲數(shù)據(jù)進行快速的索引查找。
2.1 方案系統(tǒng)需求分析
大數(shù)據(jù)解決方案系統(tǒng)主要分為兩個子系統(tǒng):數(shù)據(jù)遷移子系統(tǒng)和數(shù)據(jù)分析挖掘子系統(tǒng)。數(shù)據(jù)遷移子系統(tǒng)把各個在線業(yè)務(wù)平臺服務(wù)器的數(shù)據(jù)實時遷移到海量數(shù)據(jù)庫中,解決大數(shù)據(jù)的存儲、備份和共享問題;數(shù)據(jù)分析挖掘子系統(tǒng)利用系統(tǒng)集群并行對大數(shù)據(jù)進行快速分析處理,生成有價值的報告。
2.2 系統(tǒng)架構(gòu)設(shè)計
系統(tǒng)架構(gòu)圖如下圖1所示。
本文設(shè)計的大數(shù)據(jù)解決方案系統(tǒng)基于Hadoop平臺的集群,以面向列存儲的HBase作為海量數(shù)據(jù)存儲數(shù)據(jù)庫。數(shù)據(jù)遷移子系統(tǒng)通過基于網(wǎng)絡(luò)的存儲虛擬化整合網(wǎng)絡(luò)異構(gòu),規(guī)避和減少宕機,保證在線數(shù)據(jù)遷移時不需間斷業(yè)務(wù),遷移后由HBase對大數(shù)據(jù)進行高效管理。數(shù)據(jù)分析挖掘子系統(tǒng)則基于密集型離線數(shù)據(jù)分析,通過建立Hive和HBase無縫連接,Hive提供類似SQL查詢,經(jīng)過系統(tǒng)平臺編譯HQL,生成執(zhí)行計劃,交由MapReduce對HBase管理的數(shù)據(jù)進行高效地并行計算,把深度挖掘到有價值的結(jié)果反饋給用戶。
(1)數(shù)據(jù)遷移子系統(tǒng)拓撲圖如圖2所示。
該拓撲圖采用臨時存儲網(wǎng)絡(luò),解決在遷移過程中不需要中斷業(yè)務(wù),且可以控制業(yè)務(wù)的遷移速度問題,同時可以降低因網(wǎng)絡(luò)環(huán)境問題對其他業(yè)務(wù)系統(tǒng)的影響。
(2)數(shù)據(jù)遷移子系統(tǒng)架構(gòu)圖圖3所示
圖3 數(shù)據(jù)遷移系統(tǒng)架構(gòu)圖
遷移功能的主要流程:
①各服務(wù)器原始數(shù)據(jù):基于校園平臺中的各系統(tǒng)在應(yīng)用過程中產(chǎn)生種類繁多且海量化數(shù)據(jù),如何將各個服務(wù)器上的海量數(shù)據(jù)安全、快速地遷移入分布式HDFS,集群系統(tǒng)中的IO性能起著決定性作用,通過實時分析IO讀寫速度和網(wǎng)絡(luò)資源狀況,把任務(wù)分配給IO負載較輕的節(jié)點,實現(xiàn)高效的從客戶端將數(shù)據(jù)導(dǎo)入服務(wù)器的HDFS系統(tǒng)。
②系統(tǒng)Job:根據(jù)系統(tǒng)集群并行處理的需求,編寫代碼生產(chǎn)并行操作的Map/Reduce架包,當(dāng)在運行Map和Reduce時生成一個作業(yè)Job實例,設(shè)計好Map方法讀取數(shù)據(jù)的路徑和格式。
③數(shù)據(jù)解析轉(zhuǎn)換:運行在MapReduce架構(gòu)中的Job,讀取指定路徑中的HDFS中的文件,并在Map方法中將數(shù)據(jù)生成指定的格式。
④通過ZooKeeper在META.表查找存儲大數(shù)據(jù)的RegionServer,通過運行系統(tǒng)jar生成Put對象,使用該對象的add()方法將客戶端的數(shù)據(jù)映射到數(shù)據(jù)庫中對應(yīng)的列,最后將數(shù)據(jù)通過Write方法遷移入指定的HBase數(shù)據(jù)表。
(3)數(shù)據(jù)分析挖掘子系統(tǒng)架構(gòu)如圖4所示。
圖4 挖掘子系統(tǒng)架構(gòu)圖
數(shù)據(jù)分析模塊的主要流程:
①Hive與HBase集成:Hive和Hbase兩個框架通過HBaseStorageHandler架包實現(xiàn)無縫接口整合,在Hive建立的表自動獲取與其建立通信的Hbase中的對應(yīng)的表名、列簇和輸入輸出格式等信息。
②數(shù)據(jù)表映射:運行HQL命令創(chuàng)建Hive的外表,該外表和Hbase的表映射,通過配置信息映射由HBase到Hive,確保HBase和Hive兩者之間列和數(shù)據(jù)類型的一致性。
③HBase表切分:根據(jù)數(shù)據(jù)表對應(yīng)的HRegion,將Region作為InputSplit單位,根據(jù)拆分數(shù)量交給等量的Map操作。
④查詢分析統(tǒng)計:用戶在系統(tǒng)平臺中使用Hive提供的組件,根據(jù)業(yè)務(wù)需求進行編譯、提交HQL命令,然后編譯器對HiveQL命令進行解析,優(yōu)化,最后系統(tǒng)生成Hadoop的MapReduce任務(wù),通過構(gòu)建Scanner對HBase表數(shù)據(jù)進行掃描,對條件進行過濾、排序、去重,最后通過next()獲取數(shù)據(jù),并且把數(shù)據(jù)生產(chǎn)表格、圖表等形式交付給用戶。
集群系統(tǒng)吞吐量和數(shù)據(jù)處理能力需要負載均衡,在集群各設(shè)備中合理分配業(yè)務(wù)量,確保集群中設(shè)備協(xié)同完成作業(yè),步驟如下圖5:
圖5 負載均衡步驟
①集群系統(tǒng)狀態(tài)初始化:存儲系統(tǒng)中的各個Region服務(wù)器在規(guī)定的時間間隔內(nèi)把自身的負載狀況向master匯報,并通過master獲取集群的分配情況且存入數(shù)據(jù)表Map中,存儲方式采用鍵值對,設(shè)置好Region服務(wù)器的負載度以及Memstore內(nèi)存大小等等。
②計算系統(tǒng)是否平衡:先計算系統(tǒng)集群中負載平均值:float average=region數(shù)/server數(shù);再求集群負載最小值floor和最大值ceil,通過遍歷Map中的Value,如果Value的最小值大于floor,并且最大值小于ceil,則不需要進行負載均衡,反之則需要。
③計算開銷:當(dāng)需要平衡時,首先根據(jù)集群分配表生成一個虛擬的集群clusterP,其中clusterState是表的狀態(tài),loads是整個集群的狀態(tài):Cluster clusterP=new Cluster(clusterState,loads,regionFinder);通過對集群中各服務(wù)器計算cost的加權(quán)平均和計算實現(xiàn)開銷重心,然后循環(huán)MaxSteps次,用選號器從集群當(dāng)中隨機選出
④數(shù)據(jù)移動:根據(jù)平衡方案List
為了測試大數(shù)據(jù)解決方案的數(shù)據(jù)分析挖掘子系統(tǒng)性能,實驗中采用了5組不同的數(shù)據(jù)進行測試。本次實驗的重點在于負載均衡方案下評估系統(tǒng)集群協(xié)同處理作業(yè)的耗時測試,集群的每個節(jié)點的配置一樣且沒有失效問題。實驗環(huán)境:系統(tǒng)集群由1臺做NameNode,JobTracker,另外5臺做DataNode,Task-Tracker。服務(wù)器運行用centos操作系統(tǒng),并安裝hadoop-1.0.3,hive-0.9.0,hbase-0.94.2,zookeeper-3.3.5。
實驗內(nèi)容:在實驗中的數(shù)據(jù)都來自存儲在具有唯一主鍵的HBase數(shù)據(jù)庫中,集群通過系統(tǒng)負載均衡方案優(yōu)化,再根據(jù)優(yōu)化結(jié)果向各節(jié)點發(fā)送數(shù)據(jù),然后在各節(jié)點中并發(fā)處理數(shù)據(jù),最后統(tǒng)計發(fā)送和處理數(shù)據(jù)總耗時,為了表明本文所提系統(tǒng)集成之后經(jīng)過系統(tǒng)均衡方案算法的有效性,如表1所示。
表1 數(shù)據(jù)耗時對比
通過表1的實驗數(shù)據(jù)可以看出,本文所提出在Hadoop平臺上集成Hive和HBase,通過本文設(shè)計的系統(tǒng)均衡方案,處理相同容量的數(shù)據(jù)性能平均提高了30%,表明本文算法的可行性,所以在以Hadoop為平臺的集群中,Hive+Hbase數(shù)據(jù)處理時,通過優(yōu)化Hbase能發(fā)揮其海量處理的優(yōu)勢,且隨著處理數(shù)據(jù)量的增大優(yōu)勢更明顯。本方案與Hadoop+Hive架構(gòu)方案最大的不同包含以下兩方面:
一是數(shù)據(jù)存儲方式不同。兩種方案都是采用Master/slaves架構(gòu),Hadoop+Hive架構(gòu)方案中的HDFS會把大文件分割成很多小文件來存儲,保證大數(shù)據(jù)存儲完整性和安全性,并且Hadoop記錄每一個數(shù)據(jù)塊在存儲架構(gòu)中的位置,在Map/Reduce處理作業(yè)時,通過就近原則進行任務(wù)分配,從執(zhí)行任務(wù)的Task機器上讀取最近的數(shù)據(jù)塊,減少了數(shù)據(jù)傳輸和讀取的時間開銷。本方案的數(shù)據(jù)由HBase管理,為了解決HBase會隨機分配數(shù)據(jù)無法存儲在本地機器的難題,在少重啟系統(tǒng)的條件下,每臺機器都裝Hadoop和HBase,確保每個RegionServer都有DataNode,這樣RegionServer具備了從本地機器讀取數(shù)據(jù)的條件,且在測試系統(tǒng)過程中發(fā)現(xiàn)數(shù)據(jù)的存儲地點更穩(wěn)定。
二是讀取數(shù)據(jù)效率不同。Hadoop+Hive架構(gòu)方案讀取數(shù)據(jù)提交給HiveQL,并通過編譯交給Map/Reduce同時對HDFS存儲的數(shù)據(jù)進行處理。本方案設(shè)計系統(tǒng)負載均衡算法,使MasterServer分配Region更合理,確保每個Region被分配給擁有最多RegionBlock的RegionServer。HBase是低延遲,所以通過Hive集成HBase,使MapReduce執(zhí)行效率得到最優(yōu)化。
基于Hadoop平臺系統(tǒng)集群通過協(xié)同作業(yè)是解決大數(shù)據(jù)方案之一,系統(tǒng)集群中存在備份數(shù)據(jù)困難、負載不均衡導(dǎo)致JobTracker的負載過大,系統(tǒng)集群性能遇到瓶頸。本文提出了基于Hadoop大數(shù)據(jù)解決方案,通過設(shè)計數(shù)據(jù)遷子系統(tǒng),實現(xiàn)了實時數(shù)據(jù)遷移功能,解決了海量數(shù)據(jù)備份問題;利用Hadoop平臺構(gòu)建系統(tǒng)集群,使用HBase實現(xiàn)實時存儲數(shù)據(jù)和高效檢索,通過負載均衡方案,使得系統(tǒng)集群中的每個JobTracker實現(xiàn)高效處理海量數(shù)據(jù),大大提高了處理海量數(shù)據(jù)速度和挖掘效率。
[1]朱珠.基于Hadoop的海量數(shù)據(jù)處理模型研究和應(yīng)用[J].北京郵電大學(xué)學(xué)報,2008,11(2):100-102.
[2]周霞.基于云計算的太陽風(fēng)大數(shù)據(jù)挖掘分類算法的研究[J].成都理工大學(xué)學(xué)報,2014,10(5):50-52.
[3]劉士佳.基于MapReduce框架的頻繁項集挖掘算法研究[J].哈爾濱理工大學(xué)學(xué)報,2015,12(2):70-73.
[4]曾大耽,周傲英.Hadoop權(quán)威指南[M].北京:清華大學(xué)出版社,2010:12-15.
[5]范建華.TCP/IP協(xié)議詳解[M].北京:機械工業(yè)出版社,2012.
[6]劉鵬.實戰(zhàn)Hadoop開啟通向云計算的捷徑[M].北京:電子工業(yè)出版社,2011.
[7]易見.Hadoop開發(fā)者[M].北京:清華大學(xué)出版社,2010.
[責(zé)任編輯 韋志巧]
The Design and Application of Big Data Solution Based on Hadoop
SU Shupeng
(Guangxi Technologial College of Machinery and Electricity,Nanning, Guangxi 530007, China)
With the rapid development of information and intelligent terminal technology, the data needed to be processed has grown enormously.How to store and mine the massive data become more essential at present.This article solves the problem of massive data storing,sharing and mining by building cluster system on thebasis of cloud computing technology.First of all,this paper construct a framework with Hadoop platform.then transfer business data to nodes of cluster system in heterogeneous storage mode,finally,with reference to the advantage of Hive and Hbase. a data mining subsystem is designed,that enhance the massive data analytical ability of cluster system.The result of real-time analysis shows that the solution of this article raise 30% in efficiency,which has high practical and reference value
Hadoop; Hbase; Hive
TP31
A
1672-9021(2017)02-0089-05
蘇樹鵬(1980-),男,廣西南寧人,廣西機電職業(yè)技術(shù)學(xué)院講師,碩士,主要研究方向:云計算和軟件設(shè)計。
2016年度廣西高校中青年教師基礎(chǔ)能力提升項目“基于云計算和物聯(lián)網(wǎng)的智能校園的研究與設(shè)計”(KY2016YB650)。
2016-12-25