任春華,廖雪花,唐思娩,嚴(yán)余松,孫尉筌
(1.四川師范大學(xué) 計(jì)算機(jī)與科學(xué)技術(shù)學(xué)院,四川 成都 610101;2.西南交通大學(xué) 交通運(yùn)輸與物流學(xué)院,四川 成都 610031;3.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 611756)
?
基于Hive和Impala的物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)研究
任春華1,廖雪花1,唐思娩1,嚴(yán)余松2,孫尉筌3
(1.四川師范大學(xué)計(jì)算機(jī)與科學(xué)技術(shù)學(xué)院,四川成都610101;2.西南交通大學(xué)交通運(yùn)輸與物流學(xué)院,四川成都610031;3.西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川成都611756)
針對(duì)物流行業(yè)中傳統(tǒng)數(shù)據(jù)庫(kù)在海量數(shù)據(jù)存儲(chǔ)和交互性查詢方面的不足,提出了基于Hive和Impala物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建方法,可以實(shí)現(xiàn)快速查詢。最后搭建阿里云上的PC集群,對(duì)海量供應(yīng)鏈數(shù)據(jù)進(jìn)行查詢分析測(cè)試,表明該數(shù)據(jù)倉(cāng)庫(kù)能滿足海量物流運(yùn)力供應(yīng)鏈數(shù)據(jù)存儲(chǔ)以及查詢方面的需求。
Hive;Impala;物流運(yùn)力供應(yīng)鏈;海量數(shù)據(jù);數(shù)據(jù)倉(cāng)庫(kù)
近年來,隨著物流行業(yè)的不斷發(fā)展與進(jìn)步,運(yùn)力供應(yīng)鏈數(shù)據(jù)信息量急劇增加[1],運(yùn)力供應(yīng)鏈?zhǔn)且粭l從頂端貨主到底端司機(jī)的運(yùn)輸流網(wǎng)絡(luò),中間也存在著很多交互性的合作交易環(huán)節(jié)。海量數(shù)據(jù)存儲(chǔ)和交互性查詢分析使得傳統(tǒng)數(shù)據(jù)庫(kù)越來越難適應(yīng)物流行業(yè)信息化的建設(shè)需求。隨著“大數(shù)據(jù)”飛速發(fā)展的Hadoop和Hive應(yīng)運(yùn)而生,Hive海量數(shù)據(jù)存儲(chǔ)技術(shù)基于MapReduce并行計(jì)算模式,能較好地滿足當(dāng)前大數(shù)據(jù)環(huán)境下的高并發(fā)、快增長(zhǎng)的海量數(shù)據(jù)存儲(chǔ)和計(jì)算需求。
因此,本文提出基于Hive的運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建方案,同時(shí),引用Impala的快速交互性查詢,最終通過實(shí)驗(yàn)數(shù)據(jù)檢測(cè),能較好地解決物流運(yùn)力供應(yīng)鏈中不斷增長(zhǎng)的數(shù)據(jù)存儲(chǔ)和查詢分析的需求。
近幾年來,Hive已解決多個(gè)行業(yè)的海量數(shù)據(jù)倉(cāng)庫(kù)建設(shè)方案。但是物流行業(yè)在Hive數(shù)據(jù)倉(cāng)庫(kù)方面未涉及到公開的報(bào)道。文獻(xiàn)《基于Hadoop和Hive的電信行業(yè)數(shù)據(jù)倉(cāng)庫(kù)研究》給出了針對(duì)電信行業(yè)的Hive數(shù)據(jù)倉(cāng)庫(kù)建設(shè)方案[2]。文獻(xiàn)《基于Hadoop/Hive的氣象數(shù)據(jù)分布式處理研究》對(duì)氣象方面的數(shù)據(jù)展開了研究[3]。文獻(xiàn)《基于Hive的水利普查數(shù)據(jù)倉(cāng)庫(kù)》給出了水利行業(yè)的普查數(shù)據(jù)倉(cāng)庫(kù)方案[4]。文獻(xiàn)《基于Hive的電力設(shè)備狀態(tài)信息數(shù)據(jù)倉(cāng)庫(kù)》給出了電力設(shè)備狀態(tài)信息的數(shù)據(jù)倉(cāng)庫(kù)方案[5]。但是這些行業(yè)都只設(shè)計(jì)了基于Hive的數(shù)據(jù)倉(cāng)庫(kù)方案,并且通過了海量數(shù)據(jù)測(cè)試。但是,針對(duì)Hive的IO交互性查詢效率低下的問題,并沒有解決。
3.1Hadoop技術(shù)
Hadoop起源于Google。Google公司在2003年和2004年發(fā)表了兩篇Google技術(shù)的學(xué)術(shù)論文,一篇是谷歌文件系統(tǒng)(GFS)[6],另一篇是MapReduce[7]。它們提供了一個(gè)高效處理極大規(guī)模數(shù)據(jù)的平臺(tái)。Hadoop是一個(gè)可以存儲(chǔ)超大規(guī)模數(shù)據(jù)集的文件系統(tǒng),它是通過向外擴(kuò)展方式構(gòu)建的集群。它有自己獨(dú)特的設(shè)計(jì)和性能特點(diǎn),特別是HDFS以時(shí)延為代價(jià)對(duì)吞吐量進(jìn)行了優(yōu)化,并且通過副本替換冗余達(dá)到了高可靠性。MapReduce是一個(gè)數(shù)據(jù)處理范式,它規(guī)范了數(shù)據(jù)在兩個(gè)處理階段(Map和Reduce)的輸入和輸出,并將其應(yīng)用于任意規(guī)模的大數(shù)據(jù)集。MapReduce與HDFS緊密結(jié)合,確保在任何時(shí)候,MapReduce任務(wù)直接在存儲(chǔ)所需數(shù)據(jù)的HDFS節(jié)點(diǎn)上運(yùn)行[8-9]。
3.2Hive架構(gòu)
Hive是建立在Hadoop上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive定義了簡(jiǎn)單的類SQL查詢語言,稱為HQL,它允許熟悉SQL的用戶查詢數(shù)據(jù)。同時(shí),這個(gè)語言也允許熟悉MapReduce的開發(fā)者開發(fā)自定義的mapper和reducer來處理內(nèi)建的mapper和reducer無法完成的復(fù)雜的分析工作[10]。
3.3Impala系統(tǒng)
Impala是Cloudera公司主導(dǎo)開發(fā)的新型查詢系統(tǒng),它提供SQL語義,能查詢存儲(chǔ)在Hadoop的HDFS和HBase中的PB級(jí)大數(shù)據(jù)。已有的Hive系統(tǒng)雖然也提供了SQL語義,但由于Hive底層執(zhí)行使用的是MapReduce引擎,仍然是一個(gè)批處理過程,難以滿足查詢的交互性。相比之下,Impala的最大特點(diǎn)是查詢速度快[11]。
4.1基于Hive和Impala的物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)結(jié)構(gòu)設(shè)計(jì)
從結(jié)構(gòu)上分析,基于Hive和Impala的物流供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)主要由5層組成:源數(shù)據(jù)層、存儲(chǔ)層、計(jì)算層、數(shù)據(jù)分析層和應(yīng)用層,如圖1所示。
圖1 基于Hive和Impala的物流供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)結(jié)構(gòu)圖
(1)源數(shù)據(jù)層。主要是物流運(yùn)力供應(yīng)鏈中的數(shù)據(jù)源,包括歷史數(shù)據(jù)庫(kù)中的數(shù)據(jù)以及應(yīng)用系統(tǒng)后臺(tái)數(shù)據(jù)等。這些數(shù)據(jù)經(jīng)過人工處理,主要包括冗余數(shù)據(jù)的去除、數(shù)據(jù)精度以及數(shù)據(jù)類型的確定等。然后經(jīng)過ETL工具導(dǎo)入進(jìn)入數(shù)據(jù)存儲(chǔ)層。
(2)存儲(chǔ)層。主要保存數(shù)據(jù)倉(cāng)庫(kù)的所有數(shù)據(jù),存儲(chǔ)層建立在HDFS文件系統(tǒng)之上。使用Sqoop工具將源數(shù)據(jù)層中的供應(yīng)鏈數(shù)據(jù)導(dǎo)入到存儲(chǔ)層,這些數(shù)據(jù)以文件的形式存儲(chǔ)在不同的DataNode上,并執(zhí)行MapReduce操作。
(3)數(shù)據(jù)計(jì)算層。計(jì)算層將接收到的HQL語句轉(zhuǎn)化成MapReduce操作,從而完成查詢、分析等一系列任務(wù),進(jìn)而得到想要的業(yè)務(wù)數(shù)據(jù)。
(4)數(shù)據(jù)分析層。根據(jù)具體業(yè)務(wù)新需求,過濾冗余的、有缺漏的、有異常或者與業(yè)務(wù)無關(guān)的信息。這樣能通過簡(jiǎn)單的HQL語句,得到潛在的信息。這樣操作效率遠(yuǎn)遠(yuǎn)超過單獨(dú)編寫MapReduce函數(shù)來處理。同時(shí)還提供Impala交互性快速查詢。
(5)應(yīng)用層。主要是為后期應(yīng)用程序開發(fā)提供接口層,方便開發(fā)人員調(diào)用。
4.2海量物流運(yùn)力供應(yīng)鏈數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)
基于Hive和Impala的物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行在Clouder的Hadoop集群上,主要由一個(gè)主節(jié)點(diǎn)(NameNode)和若干從節(jié)點(diǎn)(DataNode)組成。物流運(yùn)力供應(yīng)鏈數(shù)據(jù)以文件的形式存儲(chǔ)在Hadoop的HDFS上。主節(jié)點(diǎn)用來控制、操作、運(yùn)行整個(gè)集群,從節(jié)點(diǎn)用來存儲(chǔ)數(shù)據(jù)文件,并執(zhí)行MapReduce計(jì)算任務(wù)。為滿足物流過程中實(shí)時(shí)的交互性,Impala主要用作海量數(shù)據(jù)實(shí)時(shí)查詢分析。物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)的海量數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如圖2所示。
圖2 物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)的海量數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)圖
為了驗(yàn)證上述方案,本文構(gòu)建了基于Hive和Impala的物流供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)實(shí)驗(yàn)平臺(tái)。該平臺(tái)建立在阿里云服務(wù)器上,采用Clouder的Hadoop,該實(shí)驗(yàn)平臺(tái)運(yùn)行在4臺(tái)云服務(wù)器上。具體配置見表1。
表1 實(shí)驗(yàn)平臺(tái)配置
實(shí)驗(yàn)數(shù)據(jù)采用某企業(yè)的兩個(gè)應(yīng)用系統(tǒng)的后臺(tái)運(yùn)力數(shù)據(jù)作為實(shí)驗(yàn)對(duì)象,數(shù)據(jù)經(jīng)過ETL轉(zhuǎn)換進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)。該實(shí)驗(yàn)數(shù)據(jù)滿足大數(shù)據(jù)的特征,所以測(cè)試這些數(shù)據(jù)具有典型的代表性。使用不同數(shù)據(jù)量級(jí)別的數(shù)據(jù)和Mysql、Hive、Impala的查詢效率做對(duì)比,每一個(gè)數(shù)據(jù)量級(jí)采用測(cè)試10次結(jié)果的平均值。實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 實(shí)驗(yàn)結(jié)果圖
通過實(shí)驗(yàn)結(jié)果圖可以得出:在數(shù)據(jù)量4G范圍內(nèi),Mysql數(shù)據(jù)庫(kù)查詢方面具有明顯的優(yōu)勢(shì);在10G以上的數(shù)據(jù)量時(shí),Mysql查詢效率急速下降;而Hive和Imapla在10G數(shù)據(jù)量以上時(shí),仍然表現(xiàn)出良好的性能,而且Impala的查詢效率明顯高于Hive。
綜上實(shí)驗(yàn)分析可得,基于Hive和Impala的物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)能夠?qū)A繑?shù)據(jù)可以在較快速度下完成查詢分析等任務(wù),并且該數(shù)據(jù)倉(cāng)庫(kù)具有海量數(shù)據(jù)存儲(chǔ)能力和較好的擴(kuò)展性。雖然Hive的IO性能較差,但I(xiàn)mpala能彌補(bǔ)Hive的低IO性能,可以更加快速地完成查詢分析等任務(wù)。
本文針對(duì)當(dāng)前物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)存在的海量數(shù)據(jù)存儲(chǔ)以及查詢方面的不足,設(shè)計(jì)并且實(shí)現(xiàn)了基于Hive和Impala的物流運(yùn)力供應(yīng)鏈數(shù)據(jù)倉(cāng)庫(kù)。通過某企業(yè)中的兩個(gè)應(yīng)用系統(tǒng)的運(yùn)力數(shù)據(jù),結(jié)合設(shè)計(jì)的數(shù)據(jù)倉(cāng)庫(kù),實(shí)現(xiàn)了海量物流運(yùn)力數(shù)據(jù)的存儲(chǔ)和查詢分析。實(shí)驗(yàn)結(jié)果表明,該數(shù)據(jù)倉(cāng)庫(kù)在海量物流運(yùn)力數(shù)據(jù)存儲(chǔ)和查詢等方面具有較高的性能。但是,該測(cè)試環(huán)境只是小規(guī)模的集群,接下來將完成在生產(chǎn)環(huán)境下大規(guī)模的集群查詢分析等工作。
[1]梁紅波.云物流和大數(shù)據(jù)對(duì)物流模式的變革[J].中國(guó)流通經(jīng)濟(jì),2014,28(5):41-45.
[2]王蘇衛(wèi).基于Hadoop和Hive的電信行業(yè)數(shù)據(jù)倉(cāng)庫(kù)研究[J].電子技術(shù)與軟件工程,2013,(11):89.
[3]陳效杰,張金泉.基于Hadoop/Hive的氣象數(shù)據(jù)分布式處理研究[J].軟件導(dǎo)刊,2015,14(8):11-13.
[4]陳龍,萬定生,顧昕辰.基于Hive的水利普查數(shù)據(jù)倉(cāng)庫(kù)[J].計(jì)算機(jī)與現(xiàn)代化,2014,(5):127-130.
[5]王德文,肖凱,肖磊.基于Hive的電力設(shè)備狀態(tài)信息數(shù)據(jù)倉(cāng)庫(kù)[J].電力系統(tǒng)保護(hù)與控制,2013,(9):125-130.
[6]Google.谷歌文件系統(tǒng)(GFS)[DB/OL].http://research.google.com/archive/ gfs.html.
[7]Google.MapReduce[DB/OL].http://research.google.com/archive/mapreduce.html.
[8]查禮.基于Hadoop的大數(shù)據(jù)計(jì)算技術(shù)[J].科研信息化技術(shù)與應(yīng)用,2012,(3):26-33.
[9]Garry Turkington,張治起.Hadoop基礎(chǔ)教程[M].北京:人民郵電出版社,2014.
[10]曹坤.Hive編程指南[M].北京:人民郵電出版社,2013.
[11]郭超,劉波,林偉偉.基于Impala的大數(shù)據(jù)查詢分析計(jì)算性能研究[J].計(jì)算機(jī)應(yīng)用研究,2015,(5):1 330-1 334.
Study on Logistics Transportation Supply Chain Data Library Based on Hive and Impala
Ren Chunhua1,Liao Xuehua1,Tang Simian1,Yan Yusong2,Sun Weiquan3
(1. School of Computer Science Technology, Sichuan Normal University, Chengdu 610101;2. School of Transportation Logistics, Southwest Jiaotong University, Chengdu 610031;3. School of Information Science Technology, Southwest Jiaotong University, Chengdu 611756, China)
In this paper, in view of the inadequacy of the traditional logistics data library in terms of mass data storage and interactiveinquiry, we proposed to establish the logistics transportation supply chain data library based on Hive and Impala and at the end set up the PCcluster on the Ali cloud to inquire and analyze the mass supply chain data.
Hive; Impala; logistics transportation supply chain; mass data; data warehouse
TP311.13;F274
A
1005-152X(2016)01-0124-03
10.3969/j.issn.1005-152X.2016.01.032
2015-12-10
四川省科技廳科技支撐項(xiàng)目(2012GZX0090,2014GZX0002)
任春華(1989-),男,研究生,研究方向:計(jì)算機(jī)應(yīng)用技術(shù);廖雪花(1976-),通訊作者,女,碩士,副教授,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)與信息系統(tǒng)、模式識(shí)別;唐思娩(1992-),女,研究生,研究方向:計(jì)算機(jī)應(yīng)用技術(shù);嚴(yán)余松(1963-),男,博士,教授,研究方向:物流工程、交通運(yùn)輸工程;孫尉筌(1989-),男,研究生,研究方向:交通運(yùn)輸工程。