









摘要:基于快速發展的并行數據庫技術、云計算MapReduce技術及其混合技術,分析了這些技術的優缺點,對并行計算架構、分布式存儲系統之上的索引以及其他方面進行了研究,提出了一種被稱為數據立方的大數據處理系統。通過與大數據處理系統Hive和HadoopDB的對比實驗表明,數據立方的大數據處理系統在入庫、查詢、并發、擴展等多方面有明顯的優勢。
關鍵詞: 云計算;實時;大數據;并行計算
Abstract: In this paper, we discuss parallel database technology, MapReduce for cloud computing, and hybrid (parallel and MapReduce) technology. We discuss the advantages and disadvantages of all these technologies. We discuss parallel architecture and indexing on distributed storage system. We also discuss other aspects of big-data processing technology and propose a big-data processing system called Datacube. Datacube ios shown to have advantages over Hive and HadoopDB in terms of in query, concurrency, and expansibility.
Key words: cloud computing; real-time; large-data; parallel computing
中圖分類號:TN915.03; TP393.03 文獻標志碼:A 文章編號:1009-6868 (2013) 04-0025-007
近年來,隨著計算機技術的發展,各領域數據的增長越來越快。這些數據來自方方面面,從搜集天氣情況的感測器、接入社交媒體網站的指令、數碼圖片、在線的視頻資料,到網絡購物的交易記錄、手機的全球定位系統信號等。隨著數據規模的急劇膨脹,各行業累積的數據量越來越巨大,數據類型也越來越多、越來越復雜,已經超越了傳統數據管理系統、處理模式的能力范圍,傳統的串行數據庫系統已經難以適應這種飛速增長的應用需求。在這種需求的驅動下,云計算中的MapReduce[1]技術、并行數據庫技術以及云計算與數據庫相結合的技術應運而生。
本文在大數據的背景下,對大數據處理技術進行了探討,將其分為三類:MapReduce技術、并行數據庫技術和云計算與數據庫相結合的技術。通過研究這些技術的架構、適用環境,本文提出了一種全新的云計算數據庫——數據立方。
1 云計算相關技術
1.1 大數據處理技術——MapReduce
MapReduce計算架構把運行在大規模集群上的并行計算過程簡單抽象為兩個函數:Map和Reduce,也就是分解與規約。簡單地說,MapReduce就是“任務的分解與結果的匯總”。程序將大數據分解為多個數據塊由Map函數處理,Reduce把分解后多任務處理產生的中間結果匯總起來,得到最終結果。適合MapReduce處理的任務特征為:待處理的大規模數據集可以切分為多個小的數據集,并且每一個小數據集都可以完全并行地進行處理。
圖1介紹了用MapReduce處理大數據集的過程。一個MapReduce操作可以分為兩個階段:Map階段和Reduce階段。
在映射階段,MapReduce并行計算架構將用戶的輸入數據切分為M個數據段,每個數據段對應1個Map任務。每一個Map函數的輸入是數據段中的鍵值對
這種簡潔的并行計算模型在系統層面解決了可用性、擴展性、容錯性等問題,是非關系數據管理和分析技術的典型代表。MapReduce是面向廉價計算機組成的大規模集群設計的,其非共享結構、松耦合性和較強的容錯能力帶來了較強的擴展能力,同時,MapReduce在工業界被廣泛應用,Google、twitter、Facebook、Yahoo等廠商對其進行了深度的改進和擴展。此外,MapReduce的
1.2 并行數據庫技術
在20世紀80年代,數據庫流行的同時并行數據庫也開始起源,早期并行數據庫(如Gamma[4]和Grace[5])的基礎架構被沿用至今,當前的并行數據庫主要有Oracle的Exdata[6]、EMC的Greenplum[7]、Teradata[8],這些數據庫都支持標準SQL。并行數據庫一般可以分為無共享架構(Shared-nothing)和磁盤共享存儲架構(Shared-disk)兩種存儲架構,如圖2所示。這兩種架構有各自的優缺點,在Shared-nothing系統中,數據集被切分成為了多個子集[9-11],集群中每個節點分別存儲一個子集在本地磁盤上,一般來說,Shared-nothing系統可以提供很高的并行I/O和并行計算能力,但是也有多節點事務處理[12-13]、數據傳輸以及數據傾斜[14]等問題。在Shared-disk系統中,數據被集中存儲,所有的數據庫節點都可以訪問存儲系統的任意一個磁盤,因此數據也沒有必要被切分,這也避免了數據傾斜的問題,這種系統主要的缺陷在于較低的I/O帶寬和擴展能力。
1.3 云計算與數據庫相結合的技術
與數據庫相結合的云計算技術一般指的是MapReduce技術,當前主要有Teradata公司的Aster Data[15]和耶魯大學提出的HadoopDB[16]。
Aster Data將MapReduce與SQL引擎相結合,針對大數據處理和分析提出了SQL/MapReduce框架,用戶可以使用JAVA、C++等多種語言在Aster Data的并行框架上編寫MapReduce函數,編寫的函數可以作為一個子查詢在SQL中使用,從而獲得SQL的易用性和MapReduce的開放性。同時Aster Data能夠對多結構化數據、原始數據進行處理和分析,并擁有豐富的統計軟件包可以講數據分析推向數據庫內進行,提升了數據分析性能。
在HadoopDB中,系統清晰地分成兩層,上層使用Hadoop進行任務的分解和調度,下層用RDBMS(Postgresql)進行數據的查詢和處理,在處理查詢時,執行的是SQL to mapReduce to SQL操作過程(SMS planner)。該工作的創新之處是:試圖利用Hadoop的任務調度機制提高系統的擴展性和容錯性,以解決大數據分析的橫向擴展問題;利用RDBMS實現數據存儲和查詢處理,以解決性能問題。在其性能實驗中,HadoopDB的性能仍然落后于關系數據庫系統。如何提升MapReduce的性能,已引起研究人員的高度重視,研究人員提出了MapReduce的各種優化技術,獲得了重要的性能改進。Yale大學Abadi領導的小組正在使用包括列存儲、持續裝載和分析等技術,以改進HadoopDB的性能[17]。
圖3所示是HadoopDB的一個結構圖,在原來的Hadoop與hive的基礎上,增加了一些組件[18]:其中SMS Planner的作用是在hive解析SQL語句生成MapReduce任務樹之后,對MapReduce任務樹進行優化,指導Hadoop去并行數據庫中執行SQL。Catalog里面存儲了并行數據庫的一些信息。Data loader負責把原始數據加載到并行數據庫中,需要完成的工作是對原始數據的劃分。Database Connector用于向各個節點傳遞信息,包含了節點里面數據庫的鏈接信息和需要執行的SQL語句。Paralled DataBase用于代替HDFS在各個節點上存儲數據。
2 云計算數據庫
——數據立方
通過對MapReduce、并行數據庫和兩者的混合技術研究,南京云創存儲科技有限公司推出了實施云計算數據庫——數據立方,該系統通過引入索引模塊、并行執行架構以及讀取本地磁盤的執行方式,使查詢達到了實時完成、簡單易用、高可靠安全的效能,使艾字節級的數據能夠秒級處理,極大地提高了用戶執行查詢操作后的使用效率,不僅在查詢和檢索這部分數據的時候具有非常高的性能優勢,數據立方還可以支持數據倉庫存儲、數據深度挖掘和商業智能分析等業務。
2.1 數據立方的體系架構
數據立方(DataCube)的結構分為用戶接口、索引、SQL解析器、作業生成器、元數據管理、并行計算架構、分布式文件系統等部分,如圖4所示。用戶接口主要有兩個:JDBC和Shell。JDBC主要執行數據的定義操作,即建立數據庫、建表、建分區,對數據庫、表和分區的刪改等,同時可執行數據查詢的SQL語句,暫不支持單條記錄的增刪改;數據立方提供友好的Shell交互界面,Shell支持數據庫、表的增刪改以及數據查詢的SQL語句。數據在入庫的同時與數據對應的索引也在同時建立,索引是一顆B樹,數據插入到內存的同時,索引B樹也在生成,當達到設置上限時,數據和索引會刷新到分布式文件系統上成為文件。數據立方的元數據存儲在數據庫中。其中包括,數據庫的名字和屬性,數據庫中的表,表的名字,表的列和分區及其屬性,表的屬性,表的數據所在目錄等等。SQL解析器接收從JDBC和Shell傳來的SQL查詢語句,同時對SQL進行詞法分析、語法分析、編譯、優化。作業生成器根據SQL語法樹生成查詢作業,分析所要處理的數據表對應的索引文件的所在存儲子節點位置,并將作業發送給并行計算架構。并行計算架構接收到作業生成器生成的作業,根據索引文件的位置切分查詢作業形成子任務,然后將子任務發送給數據所在的存儲子節點,每個節點執行這些子任務查詢索引得到結果記錄所在的數據文件名與偏移量,并以廣播的方式發送查詢子任務到數據文件所在的節點,在執行完畢后將結果返回。數據立方可以使用HDFS和cStor[19]作為底層存儲系統,cStor是一個主從結構的分布式文件系統,不僅具有HDFS的高吞吐率、高讀寫性能等特性,還支持HDFS所不具備的對文件修改等功能,并且支持POXIS接口。
2.2 分布式并行計算架構(DPCA)
數據立方的分布式并行架構(DPCA)是典型的主從結構,如圖5所示。主Master與從Master分別部署在HDFS的主從NameNode物理節點上,而Slave部署在DataNode物理節點上,主從Master使用Zookeeper同步,并共享系統日志,Master與Slave之間用心跳信息保持信息交換。
相對于MapReduce架構,DPCA具有實時性、計算的數據本地性以及數據平衡性。MapReduce架構的作業(Job)提交過程較為復雜,客戶端將Job提交到JobTracker有較長的延遲,JobTracker將Job處理為MapReduce Task后,通過TaskTracker的心跳信息將Task任務返回給TaskTracker,此過程中也存在延遲。
MapReduce架構雖然也遵循數據本地性,但仍會有很大比例的數據處理不是本地的,相對于MapReduce架構,DPCA的Job提交是實時性的,在提交Job之前所需程序Jar包已經分發到所有計算節點,在Job提交之后,Master在初始化處理之后即將Task直接分發到所有Slave節點上,如圖6所示,在Job提交后,Master根據數據文件所在位置分配Task,這樣在每個計算節點上要處理的HDFS上的數據塊就在本地,這樣避免了數據的移動,極大地減少了網絡IO負載,縮短了計算時間,每個計算節點會根據Task中SQL解析器生成的執行計劃對Task執行的結果進行分發,分發的方式有3種:分發所有中間數據到所有計算節點、分發所有中間數據到部分節點、根據數據所在位置分發,如圖7所示。并行計算架構能夠周期性地對HDFS上的數據表進行維護,保持數據表在所有的DataNode節點上所存儲的數據量的平衡,減少因數據負載的不平衡而導致的計算負載的不平衡。
舉一個典型的小表與大表Join連接的實例,如圖8所示,Master解析Job中的執行計劃,判斷小表的位置后,將Task0發送給了Slave0,指令Slave0發送小表到所有節點,而其他節點接收到的子任務是等待接受小表的數據,接收到數據后將小表與大表連接并將數據返回給Master,當所有數據返回完成則這個Job完成。
2.3 分布式索引
MapReduce是對每個查詢都是直接從分布式文件系統中讀入原始數據文件,I/O代價遠高于數據庫,相對于MapReduce架構以及在其之上的SQL解析器Hive,數據立方引入了一種高效的分布式索引機制,不同于并行數據庫的Shared-nothing和Shared-disk架構,數據立方的數據文件與索引文件都存放在分布式文件系統之上。
數據在入庫的同時B樹索引在內存中同步生成,B樹中的葉子節點存儲的是數據文件路徑與記錄在文件中的偏移量,如圖9所示,在B樹中的葉子節點達到設置上限后,索引將被序列化到分布式文件系統之上,在根據條件進行單表查詢的時,Job被提交到并行計算框架,Master節點首先分析該表的索引文件根據索引文件所在的節點將Task發送到相應的節點,每個節點在查詢本地的索引文件之后將符合條件的數據文件路徑+偏移量打包成Task根據數據文件位置進行再次分發,在數據文件中的記錄查詢出來之后將結果返回,如圖9所示。
3 實驗與評估
3.1 實驗環境
實驗環境搭建在兩個機架的12臺物理機組成的集群上。每臺物理機使用Ubuntu9.04 server系統,JDK版本為1.6.0.18,使用的Hadoop版本為2.0.0,將HDFS作為分布式存儲環境。軟硬件配置如表1、表2所示。
當前與數據立方類似的產品有分布式數據庫和數據倉庫,如:開源的HIVE、HadoopDB等,因此我們在數據入庫、查詢、查詢的并發量以及線性擴展等多方面對數據立方、HIVE和HadoopDB做了對比實驗。
3.2 數據入庫實驗
數據立方能夠快速進行數據入庫同時實時建立索引,相對于基于傳統數據庫的HadoopDB來說具有天然的優勢,但由于HIVE在數據入庫的同時并沒有建立索引使其在查詢的過程中沒有優勢。實驗結果如圖10所示。
3.3 單表查詢實驗
對于簡單的單表查詢來說,數據量較小時,HadoopDB與數據立方的查詢速度都是比較快的,但在大數據量下,數據立方的高效分布式查詢更有優勢,而HIVE的底層是基于MapReduce,所以速度較慢。實驗結果如下圖11所示。
3.4 多表查詢實驗
在多表查詢方面,在小表與小表、大表與小表之間的關聯查詢,數據立方和HadoopDB都是較快的,但在大表與大表之間做關聯查詢時,數據立方相對于HadoopDB更快,而HIVE是最慢的。多表查詢實驗結果如圖12所示。
3.5 并發查詢實驗
數據立方的每個節點支持200個并發查詢,同時每個查詢均是秒級響應,HadoopDB由于是SMS的中間層,由于MapReduce架構本身的心跳機制而導致了較大的延遲,所以是很難達到秒級響應的,HIVE的任務并發數取決于MapReduce的并發任務數,所以會更低。實驗結果如圖13所示。
3.6 線性擴展實驗
數據立方、HadoopDB和HIVE均支持線性擴展,而數據立方的擴展效率更高,即對系統的軟硬件做擴展后,性能也能夠達到類似線性的增長。實驗結果如圖14所示。
4 結束語
Hadoop是一種流行的MapReduce計算模型的開源實現,用于大規模數據集的并行化分析處理,并行數據庫是在單機數據庫基礎之上發展而來的數據庫集群,本文通過研究MapReduce技術、并行數據庫技術以及混合技術探討了一系列相關的大數據處理技術,更深一步探索了基于分布式文件系統的并行計算架構和分布式海量數據實時索引機制,以此為基礎并輔以其他技術形成了一個支持非結構化、結構化和半結構化數據高效存儲,支持離線數據分析和在線專題應用,支持結構化數據與非結構化、半結構化數據之間的復雜計算的實時云計算數據庫數據立方。最后,本文通過實驗驗證了數據立方相對于其他系統的優勢。
參考文獻
[1] DEAN J, GHEMAWAT S. MapReduce:Simplified data processing on large clusters [C]//Proceedings of the 6th USENIX Symposium on Operation Systems Design and Implementation (OSDI’04), Dec 6-8, 2004, San Francisco, CA USA. New York, NY, USA: ACM, 2004:137-150.
[2] PAVLO A, PAULSON E, RASIN A, et al. A comparison of approaches to large scale data analysis [C]//Proceedings of the ACM SIGMOD International Conference on Management of Data (SIGMOD’09), Jun 29-Jul 2, 2009,Providence,Rhode Island, USA. New York, NY, USA: ACM, 2009:165-178.
[3] JIANG D, OOI B C, SHI L, et al. The performance of MapReduce: An in-depth study [J]. Proceedings of the VLDB Endowment (PVLDB), 2010, 3 (1): 472-483.
[4] DEWITT D J, GERBER R H, GRAEFE G, et al. GAMMA- A high performance dataflow database machine [C]//Proceedings of the 12th International Conference on Very Large Data Bases (VLDB’86 ), Aug 15-18, 1986, Kyoto, Japan. San Francisco, CA,USA: Morgan Kaufmann Publishers, 1986: 228-237.
[5] FUSHIMI S, KITSUREGAWA M, TANAKA H. An overview of the system software of a parallel relational database machine [C]//Proceedings of the 12th International Conference on Very Large Data Bases(VLDB’86), Aug 15-18, 1986, Kyoto,Japan. San Francisco, CA,USA: Morgan Kaufmann Publishers, 1986:209-219.
[6] EMC Corporation. Greenplum [EB/OL]. [2013-04-02]. http://www. greenplum.com/.
[7] Oracle Exadata [EB/OL]. [2013-04-09]. http://www.oracle.com/cn/products/database/ exadata/overview/index.html/.
[8] Teradata Corporation. Teradata [EB/OL]. [2013-04-10]. http://www.teradata.com/.
[9] DEWITT D, GRAY J. Parallel database systems: The future of high performance database systems [J]. Communications of the ACM, 1992,35(6):85-98.
[10] MEHTA M, DEWITT D J. Data placement in Shared-nothing parallel database systems [J]. The VLDB Journal, 1997,6(1):53-72.
[11] CHAMBERLIN D D, SCHMUCK F B. Dynamic data distribution(D3) in a Shared-nothing multiprocessor data store [C]//Proceedings of the 18th International Conference on Very Large Data Bases(VLDB’92), Aug 23-27, 1992,Vancouver, Canada. San Francisco, CA, USA: Morgan Kaufmann Publishers, 1992:163-174.
[12] MAREK R, RAHM E. Performance evaluation of parallel transaction processing in Shared nothing database systems [C]//Proceedings of the 4th International Conference on Parallel Architectures and Languages Europe(PARLE’92), Jun 15-18, 1992, Paris, France. Berlin, Germany: Springer-Verlag,1992:295-310.
[13] JENQ B C, TWICHELL B C, KELLER T W. Locking performance in a Shared nothing parallel database machine [J]. IEEE Transactions on Knowledge and Data Engineering, 1989,1(4): 530-543.
[14] LEE C, CHANG Z A. Workload balance and page access scheduling for parallel JOINs in Shared-nothing systems [C]//Proceedings of the 9th International Conference on Data Engineering, Apr 19-23, 1993, Vienna, Austria. Washington, DC, USA: IEEE Computer Society, 1993:411-418.
[15] Asterdata Corporation. Asterdata [EB/OL]. [2013-04-10]. http://www. asterdata.com/.
[16] ABOUZEID A, BAJDA-PAWLIKOWSKI K, ABADI D J, et al. HadoopDB: An architectural hybrid of MapReduce and DBMS technologies for analytical workloads [C]//Proceedings of the 35th International Conference on Very Large Data Bases (VLDB’09), Lyon,France.2009: 733-743.
[17] ABOUZIED A, BAJDA-PAWLIKOWSKI K, HUANG J W, et al. HadoopDB in action: Building real world applications [C]//Proceedings of the ACM SIGMOD International Conference on Management of Data(SIGMOD’10), Jun 6-10, 2010,Indianapolis, IA, USA. New York, NY, USA: ACM, 2010:1111-1114.
[18] HadoopDB 數據倉庫簡介 [EB/OL]. [2013-04-10]. http://blog.csdn.net/suwei19870312/ article/details/7242995.
[19] Cstor Corporation. cstor [EB/OL]. [2013-04-10]. http://www.cstor.cn.
作者簡介
王磊,中國礦業大學計算機學院碩士畢業;南京云創存儲科技有限公司技術總監;從事大數據處理、數據立方產品技術規劃及架構設計,大數據處理項目需求分析等。
張真,北京科技大學MBA碩士畢業,南京云創存儲科技有限公司董事長兼CEO。
王胤然,南京航空航天大學畢業;南京云創存儲科技有限公司云計算高級研發工程師;從事分布式數據處理和大規模數據挖掘工作。