陳耀旺+朱寧+施揚朋
摘 要: 隨著傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)的快速匹配,企業(yè)面對大量堆積的業(yè)務(wù)數(shù)據(jù)和用戶數(shù)據(jù)而無從下手,用戶的查詢需求也越來越復(fù)雜且涉及跨庫、跨表的大數(shù)據(jù)量綜合分析查詢,傳統(tǒng)關(guān)系型數(shù)據(jù)庫的方式已無法滿足企業(yè)大數(shù)據(jù)在線分析處理的要求。文章提出基于Hive的大數(shù)據(jù)在線分析的系統(tǒng)架構(gòu),研究數(shù)據(jù)倉庫的主題構(gòu)建、多維分析以及數(shù)據(jù)可視化的綜合分析處理方案,滿足在線查詢分析結(jié)果的用戶需求,相比于傳統(tǒng)數(shù)據(jù)庫的OLAP方案,查詢的時間效率得到顯著提升。
關(guān)鍵詞: Hadoop; Hive; 數(shù)據(jù)倉庫; 在線分析
中圖分類號:TP399 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2018)01-01-03
Online analytic processing of big data based on Hive
Chen Yaowang1, Zhu Ning2, Shi Yangpeng2
(1. Hangzhou Dianzi University·School of Computer, Hangzhou, Zhejiang 310018, China; 2. Zhejiang Topcheer Information Technology Co., Ltd)
Abstract: Along with the traditional industry and the Internet fast matching, enterprises face large volumes of business data and user data but cannot handle, the user's query requirements are more and more complex and involve comprehensive analytical query of large cross-database data, the traditional way of using relational database has been unable to meet the requirements of enterprises online analysis and processing. In this paper, the system architecture of online data analysis based on Hive is proposed. The theme building and multidimensional analysis of data warehouse, and the comprehensive analysis of data visualization are studied to meet the needs of online query and analysis of the results. Compared with the OLAP of traditional database, the query time efficiency has been significantly improved.
Key words: Hadoop; Hive; data warehouse; online analysis
0 引言
隨著傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)的快速匹配,運營模式迭代更新與用戶量的飛速增長,企業(yè)面對大量堆積的業(yè)務(wù)數(shù)據(jù)和用戶數(shù)據(jù)無從下手,在處理TB級別以上的數(shù)據(jù),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在擴展性方面有一定的局限性,對于企業(yè)海量數(shù)據(jù)的存儲和在線分析的需求已經(jīng)無法滿足,這是各行各業(yè)急需解決的問題。
1 現(xiàn)狀分析
隨著數(shù)據(jù)庫的廣泛應(yīng)用,企業(yè)的數(shù)據(jù)海量增長,用戶的查詢需求也越來越復(fù)雜且涉及跨庫跨表的大數(shù)據(jù)量的綜合分析查詢。同時數(shù)據(jù)倉庫和商業(yè)智能(DW/BI)行業(yè)[1]逐漸成熟,商業(yè)智能主要是數(shù)據(jù)倉庫、多維分析技術(shù)[2]、可視化技術(shù)的綜合應(yīng)用。
聯(lián)機分析處理(OLAP)是數(shù)據(jù)倉庫[3]系統(tǒng)重中之重的應(yīng)用技術(shù),用于服務(wù)繁瑣的分析操作,按照決策者的業(yè)務(wù)需求,從初始的數(shù)據(jù)轉(zhuǎn)換到能夠展現(xiàn)企業(yè)真實面貌的多維特性數(shù)據(jù),使用戶能準(zhǔn)確、迅速、一致的從多角度對信息和數(shù)據(jù)進(jìn)行分析處理,并且能夠依據(jù)主題構(gòu)建多維查詢,靈活準(zhǔn)確的進(jìn)行大數(shù)據(jù)處理,直觀清晰的展現(xiàn)給決策人員所需的查詢處理結(jié)果,以便可以直觀準(zhǔn)確的把握企業(yè)各方面的現(xiàn)狀。目前的離線數(shù)據(jù)的解決方案是在Hive數(shù)據(jù)倉庫的基礎(chǔ)上的多維分析系統(tǒng),將多維分析操作利用HQL語句轉(zhuǎn)化成Map/Reduce任務(wù)運行以后得到分析結(jié)果。
大數(shù)據(jù)技術(shù)不局限于結(jié)構(gòu)化數(shù)據(jù),它能處理各種非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),并且整個過程都是基于分布式存儲的數(shù)據(jù)進(jìn)行分析,Hadoop以及全部hadoop生態(tài)系統(tǒng)也給商業(yè)智能供應(yīng)了一套完備的、高效率的解決方案。雖然基于 hive 的數(shù)據(jù)倉庫可用于離線數(shù)據(jù)的處理,但對于在線數(shù)據(jù)處理存在查詢速度較慢的問題,以及如何解決查詢分析結(jié)果的實時顯示,使企業(yè)能快速的從海量數(shù)據(jù)中得到數(shù)據(jù)各個維度的分析結(jié)果,這是本文需要解決的問題。
2 在線分析架構(gòu)設(shè)計
基于對大批量數(shù)據(jù)統(tǒng)計和分析的考慮,選用建立在hadoop生態(tài)圈[4]上的Hive作為數(shù)據(jù)倉庫,它提供了一些用于對hadoop文件中的數(shù)據(jù)集進(jìn)行數(shù)據(jù)過濾、特殊查詢和分析存儲的工具。Hive提供的是一種結(jié)構(gòu)化數(shù)據(jù)的機制[5-6],可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析,但Hive的執(zhí)行速度慢,不能支持用戶實時的查詢,所以在Hive的基礎(chǔ)上結(jié)合使用HBase。endprint
基于用戶對統(tǒng)計分析結(jié)果[7]快速展示在頁面上的考慮,選用了HBase數(shù)據(jù)庫,它是一個分布式、面向列的開源數(shù)據(jù)庫,能提供低延遲的數(shù)據(jù)庫訪問。它能提供實時計算服務(wù)主要原因是由其架構(gòu)和底層的數(shù)據(jù)結(jié)構(gòu)決定的,即由LSM-Tree(Log-Structured Merge-Tree)+HTable(region分區(qū))+Cache決定的,客戶端可以直接定位到要查數(shù)據(jù)所在的HRegion server服務(wù)器,然后直接在服務(wù)器的一個region上查找要匹配的數(shù)據(jù),并且這些數(shù)據(jù)部分是經(jīng)過cache緩存的。讀取速度快是因為它使用LSM樹型結(jié)構(gòu),而不是B或B+樹。磁盤的順序讀取速度很快,但是相比而言,尋找磁道的速度就要慢很多。HBase的存儲結(jié)構(gòu)將磁盤尋道時間控制在可預(yù)測范圍內(nèi),并且讀取與所要查詢的rowkey連續(xù)的任意數(shù)量的記錄都不會引發(fā)額外的尋道開銷。故選用HBase作為實時查詢統(tǒng)計分析后的結(jié)果。
數(shù)據(jù)處理采用Ajax+Servlet進(jìn)行前后端交互,Hive技術(shù)用于對海量的原始數(shù)據(jù)進(jìn)行ETL處理,并將分析結(jié)果存入HBase數(shù)據(jù)庫中,HBase數(shù)據(jù)庫用于實時查詢統(tǒng)計結(jié)果返回前臺。具體架構(gòu)設(shè)計如圖1所示。
本文數(shù)據(jù)可視化采用EChart前端框架,能夠生成包括曲線圖、區(qū)域圖、柱狀圖、餅狀圖、散狀點圖在內(nèi)的多種動態(tài)圖表[8],清晰鮮明地展現(xiàn)數(shù)據(jù)內(nèi)容指標(biāo)。數(shù)據(jù)處理采用Hive預(yù)處理+HBase實時查詢的方式,首先利用后臺離線操作將hive中的數(shù)據(jù)進(jìn)行ETL處理,對原始數(shù)據(jù)進(jìn)行主題的維度項與指標(biāo)項的CUBE構(gòu)建分析,并得出結(jié)果存入HBase數(shù)據(jù)庫中,然后提供在線實時查詢,即從HBase數(shù)據(jù)庫中提取所需的統(tǒng)計信息返回前臺展示,并且響應(yīng)時間能夠達(dá)到毫秒級,因此可以帶來良好的用戶體驗。
3 ETL處理與DataCube構(gòu)建
ETL是數(shù)據(jù)抽?。‥xtract)、清洗(Cleaning)、轉(zhuǎn)換(Transform)、裝載(Load)的過程。用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),需要對導(dǎo)入的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗工作,對數(shù)據(jù)進(jìn)行去重,清除錯誤的、無關(guān)的數(shù)據(jù),清除相關(guān)表中與主題無關(guān)的多余列,將多表連接成最大維度的事實表,最終按照預(yù)先定義好的數(shù)據(jù)倉庫模型,將數(shù)據(jù)加載到hive數(shù)據(jù)倉庫。Hive沒有專門的數(shù)據(jù)存儲格式,只需要在創(chuàng)建表的時候告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,Hive 就可以解析數(shù)據(jù)。Hive中所有的數(shù)據(jù)都存儲在 HDFS 中,Hive中包含以下數(shù)據(jù)模型:表(Table),外部表(External Table),分區(qū)(Partition),桶(Bucket) [9]。
本文選定某省人力社保系統(tǒng)的數(shù)據(jù)集,異地系統(tǒng)中單表數(shù)據(jù)量級為百萬級,需統(tǒng)計的表數(shù)為十多張,因此,異地系統(tǒng)總的數(shù)據(jù)量為千萬級別[10]。通過業(yè)務(wù)問題分析得到多維分析的維度:年份、縣、年齡、險種、參保人數(shù)、平均保費。XY軸設(shè)計,如圖2所示,X軸:年份、縣、年齡、險種,Y軸:參保人數(shù)、平均保費。
事實表與維度表以最典型的星型模型進(jìn)行關(guān)聯(lián)構(gòu)建,是為事實表為中心,維度表向外擴散的幾個角度,通過關(guān)鍵字來聯(lián)系。如圖3所示。
經(jīng)過ETL數(shù)據(jù)處理和主題構(gòu)建,實驗采用四條SQL查詢語句進(jìn)行對比操作,具體語句如表1。
實驗采用3臺物理機測試,配置如下:Intel(R) Core (TM) i7-4500u 1.8GHz,內(nèi)存4.0GB,操作系統(tǒng)是,Master和Slave節(jié)點均使用ubuntu12.04,hadoop2.2.0、HBase0.96.0、hive0.13.0,JDK1.7.0,2G數(shù)據(jù)量。進(jìn)行Hive與oracle數(shù)據(jù)庫查詢測試對比,隨著查詢的字段及分組(Group)操作的字段增加,查詢時間效率的差別顯著。如表2及圖4的對比結(jié)果。
因為通過DataCube的構(gòu)建,查詢分析結(jié)果保存在HBase中,經(jīng)過測試,首次業(yè)務(wù)操作界面響應(yīng)速度在6秒以內(nèi),之后業(yè)務(wù)普通查詢、跨多表綜合查詢的業(yè)務(wù)操作界面響應(yīng)速度均在 0.05秒以內(nèi)。
4 結(jié)束語
本文基于Hive的技術(shù)特點,進(jìn)行數(shù)據(jù)處理和構(gòu)建多維數(shù)據(jù)的主題,采用HBase數(shù)據(jù)庫存儲分析結(jié)果,滿足實時展現(xiàn)的需求。實驗表明,在Hive上構(gòu)建多維數(shù)據(jù)主題后的數(shù)據(jù)倉庫對比Oracle數(shù)據(jù)庫,查詢效率得到顯著提升,并且HBase的響應(yīng)時間能夠達(dá)到毫秒級,因此可以帶來良好的用戶體驗。
參考文獻(xiàn)(References):
[1] 范東來.Hadoop海量數(shù)據(jù)處理[M].人民郵電出版社,2015.
[2] 沙倩.基于云平臺的多維數(shù)據(jù)分析的研究與應(yīng)用[D].北京郵
電大學(xué),2013.
[3] (美)金博爾(Kimball, R.),(美)羅斯(Ross).數(shù)據(jù)倉庫工具箱[M].
清華大學(xué)出版社,2015.
[4] 陸嘉恒.Hadoop實戰(zhàn)[M].機械工業(yè)出版社,2011.
[5] 唐榕蔚.基于HIVE電子商務(wù)多維分析技術(shù)應(yīng)用研究[D].北方
工業(yè)大學(xué)碩士學(xué)位論文,2015.
[6] Hu P. The Cooperative Study Between the Hadoop Big
Data Platform and the Traditional Data Warehouse[J]. Open Automation & Control Systems Journal,2015.7(1):1144-1152
[7] 吳明禮,唐榕蔚,李也白.基于HIVE面向多企業(yè)的經(jīng)營分析
技術(shù)應(yīng)用研究[J].工業(yè)技術(shù)創(chuàng)新,2014.5:609-613
[8] 左譜軍,朱曉民.基于Hive的數(shù)據(jù)管理圖形化界面的設(shè)計與
實現(xiàn)[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2014.1:89-92
[9] Thusoo A, Sarma J S, Jain N, et al. Hive: a warehousing
solution over a map-reduce framework[J].Proceedings of the Vldb Endowment,2010.2:1626-1629
[10] 秦玉蘭.基于HIVE的海量數(shù)據(jù)報表服務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[D].北京郵電大學(xué)碩士學(xué)位論文,2014.endprint