陳耀旺+朱寧+施揚(yáng)朋
摘 要: 隨著傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)的快速匹配,企業(yè)面對(duì)大量堆積的業(yè)務(wù)數(shù)據(jù)和用戶數(shù)據(jù)而無(wú)從下手,用戶的查詢需求也越來(lái)越復(fù)雜且涉及跨庫(kù)、跨表的大數(shù)據(jù)量綜合分析查詢,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的方式已無(wú)法滿足企業(yè)大數(shù)據(jù)在線分析處理的要求。文章提出基于Hive的大數(shù)據(jù)在線分析的系統(tǒng)架構(gòu),研究數(shù)據(jù)倉(cāng)庫(kù)的主題構(gòu)建、多維分析以及數(shù)據(jù)可視化的綜合分析處理方案,滿足在線查詢分析結(jié)果的用戶需求,相比于傳統(tǒng)數(shù)據(jù)庫(kù)的OLAP方案,查詢的時(shí)間效率得到顯著提升。
關(guān)鍵詞: Hadoop; Hive; 數(shù)據(jù)倉(cāng)庫(kù); 在線分析
中圖分類號(hào):TP399 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):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ùn)營(yíng)模式迭代更新與用戶量的飛速增長(zhǎng),企業(yè)面對(duì)大量堆積的業(yè)務(wù)數(shù)據(jù)和用戶數(shù)據(jù)無(wú)從下手,在處理TB級(jí)別以上的數(shù)據(jù),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在擴(kuò)展性方面有一定的局限性,對(duì)于企業(yè)海量數(shù)據(jù)的存儲(chǔ)和在線分析的需求已經(jīng)無(wú)法滿足,這是各行各業(yè)急需解決的問(wèn)題。
1 現(xiàn)狀分析
隨著數(shù)據(jù)庫(kù)的廣泛應(yīng)用,企業(yè)的數(shù)據(jù)海量增長(zhǎng),用戶的查詢需求也越來(lái)越復(fù)雜且涉及跨庫(kù)跨表的大數(shù)據(jù)量的綜合分析查詢。同時(shí)數(shù)據(jù)倉(cāng)庫(kù)和商業(yè)智能(DW/BI)行業(yè)[1]逐漸成熟,商業(yè)智能主要是數(shù)據(jù)倉(cāng)庫(kù)、多維分析技術(shù)[2]、可視化技術(shù)的綜合應(yīng)用。
聯(lián)機(jī)分析處理(OLAP)是數(shù)據(jù)倉(cāng)庫(kù)[3]系統(tǒng)重中之重的應(yīng)用技術(shù),用于服務(wù)繁瑣的分析操作,按照決策者的業(yè)務(wù)需求,從初始的數(shù)據(jù)轉(zhuǎn)換到能夠展現(xiàn)企業(yè)真實(shí)面貌的多維特性數(shù)據(jù),使用戶能準(zhǔn)確、迅速、一致的從多角度對(duì)信息和數(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ù)倉(cāng)庫(kù)的基礎(chǔ)上的多維分析系統(tǒng),將多維分析操作利用HQL語(yǔ)句轉(zhuǎn)化成Map/Reduce任務(wù)運(yùn)行以后得到分析結(jié)果。
大數(shù)據(jù)技術(shù)不局限于結(jié)構(gòu)化數(shù)據(jù),它能處理各種非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),并且整個(gè)過(guò)程都是基于分布式存儲(chǔ)的數(shù)據(jù)進(jìn)行分析,Hadoop以及全部hadoop生態(tài)系統(tǒng)也給商業(yè)智能供應(yīng)了一套完備的、高效率的解決方案。雖然基于 hive 的數(shù)據(jù)倉(cāng)庫(kù)可用于離線數(shù)據(jù)的處理,但對(duì)于在線數(shù)據(jù)處理存在查詢速度較慢的問(wèn)題,以及如何解決查詢分析結(jié)果的實(shí)時(shí)顯示,使企業(yè)能快速的從海量數(shù)據(jù)中得到數(shù)據(jù)各個(gè)維度的分析結(jié)果,這是本文需要解決的問(wèn)題。
2 在線分析架構(gòu)設(shè)計(jì)
基于對(duì)大批量數(shù)據(jù)統(tǒng)計(jì)和分析的考慮,選用建立在hadoop生態(tài)圈[4]上的Hive作為數(shù)據(jù)倉(cāng)庫(kù),它提供了一些用于對(duì)hadoop文件中的數(shù)據(jù)集進(jìn)行數(shù)據(jù)過(guò)濾、特殊查詢和分析存儲(chǔ)的工具。Hive提供的是一種結(jié)構(gòu)化數(shù)據(jù)的機(jī)制[5-6],可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的sql查詢功能,可以通過(guò)類SQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開(kāi)發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析,但Hive的執(zhí)行速度慢,不能支持用戶實(shí)時(shí)的查詢,所以在Hive的基礎(chǔ)上結(jié)合使用HBase。endprint
基于用戶對(duì)統(tǒng)計(jì)分析結(jié)果[7]快速展示在頁(yè)面上的考慮,選用了HBase數(shù)據(jù)庫(kù),它是一個(gè)分布式、面向列的開(kāi)源數(shù)據(jù)庫(kù),能提供低延遲的數(shù)據(jù)庫(kù)訪問(wèn)。它能提供實(shí)時(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ù)器的一個(gè)region上查找要匹配的數(shù)據(jù),并且這些數(shù)據(jù)部分是經(jīng)過(guò)cache緩存的。讀取速度快是因?yàn)樗褂肔SM樹(shù)型結(jié)構(gòu),而不是B或B+樹(shù)。磁盤的順序讀取速度很快,但是相比而言,尋找磁道的速度就要慢很多。HBase的存儲(chǔ)結(jié)構(gòu)將磁盤尋道時(shí)間控制在可預(yù)測(cè)范圍內(nèi),并且讀取與所要查詢的rowkey連續(xù)的任意數(shù)量的記錄都不會(huì)引發(fā)額外的尋道開(kāi)銷。故選用HBase作為實(shí)時(shí)查詢統(tǒng)計(jì)分析后的結(jié)果。
數(shù)據(jù)處理采用Ajax+Servlet進(jìn)行前后端交互,Hive技術(shù)用于對(duì)海量的原始數(shù)據(jù)進(jìn)行ETL處理,并將分析結(jié)果存入HBase數(shù)據(jù)庫(kù)中,HBase數(shù)據(jù)庫(kù)用于實(shí)時(shí)查詢統(tǒng)計(jì)結(jié)果返回前臺(tái)。具體架構(gòu)設(shè)計(jì)如圖1所示。
本文數(shù)據(jù)可視化采用EChart前端框架,能夠生成包括曲線圖、區(qū)域圖、柱狀圖、餅狀圖、散狀點(diǎn)圖在內(nèi)的多種動(dòng)態(tài)圖表[8],清晰鮮明地展現(xiàn)數(shù)據(jù)內(nèi)容指標(biāo)。數(shù)據(jù)處理采用Hive預(yù)處理+HBase實(shí)時(shí)查詢的方式,首先利用后臺(tái)離線操作將hive中的數(shù)據(jù)進(jìn)行ETL處理,對(duì)原始數(shù)據(jù)進(jìn)行主題的維度項(xiàng)與指標(biāo)項(xiàng)的CUBE構(gòu)建分析,并得出結(jié)果存入HBase數(shù)據(jù)庫(kù)中,然后提供在線實(shí)時(shí)查詢,即從HBase數(shù)據(jù)庫(kù)中提取所需的統(tǒng)計(jì)信息返回前臺(tái)展示,并且響應(yīng)時(shí)間能夠達(dá)到毫秒級(jí),因此可以帶來(lái)良好的用戶體驗(yàn)。
3 ETL處理與DataCube構(gòu)建
ETL是數(shù)據(jù)抽?。‥xtract)、清洗(Cleaning)、轉(zhuǎn)換(Transform)、裝載(Load)的過(guò)程。用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),需要對(duì)導(dǎo)入的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗工作,對(duì)數(shù)據(jù)進(jìn)行去重,清除錯(cuò)誤的、無(wú)關(guān)的數(shù)據(jù),清除相關(guān)表中與主題無(wú)關(guān)的多余列,將多表連接成最大維度的事實(shí)表,最終按照預(yù)先定義好的數(shù)據(jù)倉(cāng)庫(kù)模型,將數(shù)據(jù)加載到hive數(shù)據(jù)倉(cāng)庫(kù)。Hive沒(méi)有專門的數(shù)據(jù)存儲(chǔ)格式,只需要在創(chuàng)建表的時(shí)候告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,Hive 就可以解析數(shù)據(jù)。Hive中所有的數(shù)據(jù)都存儲(chǔ)在 HDFS 中,Hive中包含以下數(shù)據(jù)模型:表(Table),外部表(External Table),分區(qū)(Partition),桶(Bucket) [9]。
本文選定某省人力社保系統(tǒng)的數(shù)據(jù)集,異地系統(tǒng)中單表數(shù)據(jù)量級(jí)為百萬(wàn)級(jí),需統(tǒng)計(jì)的表數(shù)為十多張,因此,異地系統(tǒng)總的數(shù)據(jù)量為千萬(wàn)級(jí)別[10]。通過(guò)業(yè)務(wù)問(wèn)題分析得到多維分析的維度:年份、縣、年齡、險(xiǎn)種、參保人數(shù)、平均保費(fèi)。XY軸設(shè)計(jì),如圖2所示,X軸:年份、縣、年齡、險(xiǎn)種,Y軸:參保人數(shù)、平均保費(fèi)。
事實(shí)表與維度表以最典型的星型模型進(jìn)行關(guān)聯(lián)構(gòu)建,是為事實(shí)表為中心,維度表向外擴(kuò)散的幾個(gè)角度,通過(guò)關(guān)鍵字來(lái)聯(lián)系。如圖3所示。
經(jīng)過(guò)ETL數(shù)據(jù)處理和主題構(gòu)建,實(shí)驗(yàn)采用四條SQL查詢語(yǔ)句進(jìn)行對(duì)比操作,具體語(yǔ)句如表1。
實(shí)驗(yàn)采用3臺(tái)物理機(jī)測(cè)試,配置如下:Intel(R) Core (TM) i7-4500u 1.8GHz,內(nèi)存4.0GB,操作系統(tǒng)是,Master和Slave節(jié)點(diǎn)均使用ubuntu12.04,hadoop2.2.0、HBase0.96.0、hive0.13.0,JDK1.7.0,2G數(shù)據(jù)量。進(jìn)行Hive與oracle數(shù)據(jù)庫(kù)查詢測(cè)試對(duì)比,隨著查詢的字段及分組(Group)操作的字段增加,查詢時(shí)間效率的差別顯著。如表2及圖4的對(duì)比結(jié)果。
因?yàn)橥ㄟ^(guò)DataCube的構(gòu)建,查詢分析結(jié)果保存在HBase中,經(jīng)過(guò)測(cè)試,首次業(yè)務(wù)操作界面響應(yīng)速度在6秒以內(nèi),之后業(yè)務(wù)普通查詢、跨多表綜合查詢的業(yè)務(wù)操作界面響應(yīng)速度均在 0.05秒以內(nèi)。
4 結(jié)束語(yǔ)
本文基于Hive的技術(shù)特點(diǎn),進(jìn)行數(shù)據(jù)處理和構(gòu)建多維數(shù)據(jù)的主題,采用HBase數(shù)據(jù)庫(kù)存儲(chǔ)分析結(jié)果,滿足實(shí)時(shí)展現(xiàn)的需求。實(shí)驗(yàn)表明,在Hive上構(gòu)建多維數(shù)據(jù)主題后的數(shù)據(jù)倉(cāng)庫(kù)對(duì)比Oracle數(shù)據(jù)庫(kù),查詢效率得到顯著提升,并且HBase的響應(yīng)時(shí)間能夠達(dá)到毫秒級(jí),因此可以帶來(lái)良好的用戶體驗(yàn)。
參考文獻(xiàn)(References):
[1] 范東來(lái).Hadoop海量數(shù)據(jù)處理[M].人民郵電出版社,2015.
[2] 沙倩.基于云平臺(tái)的多維數(shù)據(jù)分析的研究與應(yīng)用[D].北京郵
電大學(xué),2013.
[3] (美)金博爾(Kimball, R.),(美)羅斯(Ross).數(shù)據(jù)倉(cāng)庫(kù)工具箱[M].
清華大學(xué)出版社,2015.
[4] 陸嘉恒.Hadoop實(shí)戰(zhàn)[M].機(jī)械工業(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)營(yíng)分析
技術(shù)應(yīng)用研究[J].工業(yè)技術(shù)創(chuàng)新,2014.5:609-613
[8] 左譜軍,朱曉民.基于Hive的數(shù)據(jù)管理圖形化界面的設(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ù)報(bào)表服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué)碩士學(xué)位論文,2014.endprint