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