門 威,鄒香玲
(河南廣播電視大學,鄭州 450000)
淺談MapReduce與關系型數(shù)據(jù)庫技術的融合
門 威,鄒香玲
(河南廣播電視大學,鄭州 450000)
雖然關系數(shù)據(jù)庫擅長于OLTP事務處理,但在處理大規(guī)模數(shù)據(jù)時卻性能不足。MapReduce憑借其易操作性、高擴展性和高并發(fā)性,在大規(guī)模數(shù)據(jù)處理中占據(jù)優(yōu)勢。結(jié)合這兩種技術,設計出兼有兩者優(yōu)點的技術架構(gòu)是解決大數(shù)據(jù)分析問題的重要途徑之一。二者共生的大數(shù)據(jù)生態(tài)系統(tǒng)成為技術融合的重要趨勢。
關系型數(shù)據(jù)庫;MapReduce;大數(shù)據(jù)分析
在數(shù)據(jù)存取方面,傳統(tǒng)的關系型(分布式)數(shù)據(jù)庫在OLTP事務處理方面表現(xiàn)出高性能的特性,但是當索引和數(shù)據(jù)集增長到一定程度時,卻性能不足[1]。MapReduce是一種基于并行計算的數(shù)據(jù)處理架構(gòu),可運行在分布式服務器集群上,通過“分治策略”提高數(shù)據(jù)處理效率,在大規(guī)模數(shù)據(jù)處理和分析方面表現(xiàn)出高效能和高容錯性的特點。關系型數(shù)據(jù)庫與MapReduce各有特點,如何從數(shù)據(jù)查詢或組織等中心環(huán)節(jié)入手,整合兩種技術,設計出既具備關系型數(shù)據(jù)庫的高性能,又支持MapReduce高擴展性的混合架構(gòu),成為大數(shù)據(jù)分析技術的重要研究方向之一。
MapReduce計算模型最初于2004年由Google提出,其為大數(shù)據(jù)處理與分析提供了一種有效的解決方案[2]。MapReduce可被理解成一類編程模型,在不同的編程語言中有不同的實現(xiàn),其函數(shù)式用于處理和構(gòu)建大數(shù)據(jù)集,可并行執(zhí)行在大規(guī)模計算機集群上。MapReduce架構(gòu)為程序員屏蔽底層復雜性,甚至允許沒有分布式編程經(jīng)驗的程序員輕松利用函數(shù)接口執(zhí)行大規(guī)模數(shù)據(jù)的分布式運算。MapReduce是由Map與Reduce兩個階段組成的。Map函數(shù)用于處理輸入數(shù)據(jù)(Key/Value對)并產(chǎn)生中間結(jié)果,Reduce函數(shù)對中間結(jié)果排序、合并、計算并輸出最終結(jié)果。具體過程如圖1所示。

圖1 MapReduce計算模型
(1)MapReduce函數(shù)庫中的文件分隔函數(shù)將存儲數(shù)據(jù)文件分割成M塊(自Split[0]至Split[M-1]),塊的大小可使用參數(shù)設定。
(2)子塊被加載到集群中的工作節(jié)點(Worker)上。主控節(jié)點(Master)負責調(diào)度各工作節(jié)點,將M個Map任務與N個Reduce任務分解到多個空閑的Worker節(jié)點上。
(3)Worker節(jié)點接到任務后會自動讀取和處理相關輸入數(shù)據(jù),并將中間結(jié)果以Key/Value對的形式緩存起來。
(4)當緩沖區(qū)內(nèi)的數(shù)據(jù)超過閾值或到達定時器節(jié)點時,被flush到本地存儲。Master負責將數(shù)據(jù)塊位置信息等元數(shù)據(jù)傳輸給Reduce Workers,它們將讀取中間數(shù)據(jù)并按照Key值進行排序,使Key值相同的記錄聚集在一起。
(5)Reduce Worker利用自定義的Reduce函數(shù)處理Key值相同的中間數(shù)據(jù),并將各自區(qū)域的數(shù)據(jù)輸出到輸出文件。
(6)在所有的Map和Reduce任務都完成后,Master負責將數(shù)據(jù)匯總輸出并返回到程序調(diào)用點。
MapReduce采用“分治”策略,將單任務分解成多個任務,通過任務并行達到提高數(shù)據(jù)處理效率的目的。
在MapReduce與關系型數(shù)據(jù)庫技術融合方面,中國人民大學譚雄派等在《大數(shù)據(jù)分析——RDBMS與MapReducede的競爭和共生》[3]一文中指出:關系數(shù)據(jù)庫相對于MapReduce具有更高的性能,而MapReduce在容錯性和擴展性方面更勝一籌,兩者各有優(yōu)缺點。如何將二者進行融合,設計出同時具備兩者優(yōu)點的數(shù)據(jù)存儲架構(gòu)成為大數(shù)據(jù)分析技術的重要研究方向。
HadoopDB在MapReduce和關系型數(shù)據(jù)庫技術融合方面采取的策略是將系統(tǒng)分為兩層:下層利用關系型數(shù)據(jù)庫Postgresql進行數(shù)據(jù)查詢,而上層利用Hadoop技術對任務進行劃分和調(diào)度。該方法既利用Hadoop數(shù)據(jù)處理機制提高了系統(tǒng)的容錯能力和擴展能力,又利用關系型數(shù)據(jù)庫提高了數(shù)據(jù)查詢和存儲性能。試驗結(jié)果,HadoopDB的數(shù)據(jù)查詢性能依然無法與關系型數(shù)據(jù)庫相匹敵,這需要改進和優(yōu)化MapReduce架構(gòu)以提升其性能。
Aster Data和Greenplum公司在關系型數(shù)據(jù)庫的基礎上,將MapReduce內(nèi)置于大規(guī)模并行處理機MPP,將MPP核心引擎與MapRed作業(yè)引擎整合,將查詢分析函數(shù)交給MapReduce執(zhí)行,這些分析函數(shù)可以并行執(zhí)行在MPP上,相對于關系型數(shù)據(jù)庫的自定義函數(shù)來說,性能得到極大提高。分析函數(shù)以分析軟件包的形式發(fā)布。該策略利用MapReduce架構(gòu)提高了分析函數(shù)的執(zhí)行效率。
Vertical、Oracle、Teradata 等數(shù)據(jù)庫公司也在致力于研究關系型數(shù)據(jù)庫與MapReduce的融合技術。各自策略雖有不同,但基本類似:在關系型數(shù)據(jù)庫引擎內(nèi)置MapReduce作業(yè)調(diào)度機制。Vertical數(shù)據(jù)庫于2009年啟動MapReduce技術整合研究。改進后的Vertical數(shù)據(jù)能夠處理結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。Teradata設計的架構(gòu)相對簡單,僅實現(xiàn)HDFS(Hadoop File System)和數(shù)據(jù)表之間的轉(zhuǎn)換以及數(shù)據(jù)裝載的加速。
中國人民大學高性能數(shù)據(jù)庫實驗室以數(shù)據(jù)組織和查詢?yōu)榍腥朦c,研究MapReduce和關系數(shù)據(jù)庫融合技術,設計出兼具關系數(shù)據(jù)庫性能和MapReduce高擴展性的數(shù)據(jù)倉庫查詢框架,提出了下述兩個研究方向[4]。
(1)Dumbo模式采用關系數(shù)據(jù)庫技術,并使用MapReduce模式改造OLAP查詢過程,提高其處理OLAP查詢的效率。Dumbo根據(jù)HDFS的特點優(yōu)化存儲數(shù)據(jù),采取有效的層次編碼技術把維表數(shù)據(jù)壓縮至事實表。Dumbo在MapReduce框架的基礎上進行擴展,設計了新型的OLAP處理框架 TMRP,即 Transform、Map、Reduce、Postprocess流程。
在Dumbo架構(gòu)下,數(shù)據(jù)查詢首先被轉(zhuǎn)換成MapReduce任務。在Map階段,該任務以流水線模式掃描和匯聚本地數(shù)據(jù),并在Reduce階段執(zhí)行數(shù)據(jù)運算、篩選、排序與合并等操作。Master在Postprocess階段負責Data Node上數(shù)據(jù)集的連接操作。經(jīng)實驗表明,Dumbo數(shù)據(jù)查詢性能高于HadoopDB。
(2)LinearDB借用MapReduce的設計思想提高OLAP查詢的可擴展性。該模型采用無連接雪花模型,利用層次編碼技術將維表信息壓縮至事實表,使事實表進行獨立的謂詞、聚集等數(shù)據(jù)查詢操作,從而把大規(guī)模集群上的數(shù)據(jù)連接操作轉(zhuǎn)化成局部操作。LinearDB查詢過程簡稱TRM(Transform、Reduce&Merge)。在 Transform 操 作 中,Master將維表上的謂詞判斷、聚集等操作轉(zhuǎn)換成事實表的操作。在Reduce階段,Data Node并行掃描數(shù)據(jù),將結(jié)果提交給Master。最后在Merge階段,Master對Data Node返回的數(shù)據(jù)進行過濾、排序和合并。TRM模型的主旨是將查詢劃分成多個子任務并加載到MPP上并發(fā)執(zhí)行。執(zhí)行失敗的子任務可在其他備份節(jié)點上重新執(zhí)行,具備較好的容錯性。LinearDB結(jié)合了MapReduce處理模式和關系型數(shù)據(jù)庫的層次編碼、泛型關系等技術,其執(zhí)行代價主要在于Reduce操作復雜度。該模型可以獲得接近線性擴展能力。
Dumbo與LinearDB在一定程度上實現(xiàn)了關系型數(shù)據(jù)庫和MapReduce的技術融合,但在數(shù)據(jù)預處理上花費的時間較多(約是普通預處理時間的7倍左右),有待進一步優(yōu)化。
東北大學師金鋼等在借鑒分布式文件系統(tǒng)HDFS架構(gòu)的基礎上,提出了基于分塊機制的數(shù)據(jù)庫模型ChunkDB[5]。該數(shù)據(jù)庫模型整體結(jié)構(gòu)如圖2所示。

圖2 數(shù)據(jù)存取架構(gòu)圖
圖2 中顯示了系統(tǒng)的三個主要角色:Master、Data Node和Client。其中Master負責數(shù)據(jù)塊基本信息和Data Node信息的管理,如實時監(jiān)測節(jié)點運行狀況、維護節(jié)點信息表、存儲數(shù)據(jù)塊位置和副本信息;Data Node負責數(shù)據(jù)存儲,受Master統(tǒng)一管理;Client負責運行客戶端應用程序。
為通過并行計算提高查詢效率,系統(tǒng)首先要將待存儲數(shù)據(jù)表進行分塊并存儲到多個數(shù)據(jù)節(jié)點中。系統(tǒng)采用類似于基于列(類似HBase)或基于記錄的分塊劃分方式。若采用基于記錄的劃分方式,各子塊可被獨立查詢或添加索引。數(shù)據(jù)表被劃分成多個子塊的同時,也創(chuàng)建子塊副本,以保障系統(tǒng)容錯性。當子塊尺寸和副本數(shù)量確定后,Client便可根據(jù)設定參數(shù)向Data Node寫數(shù)據(jù),同時將元數(shù)據(jù)信息寫入到Master。當Client讀取數(shù)據(jù)時,首先讀取Master中的元數(shù)據(jù),然后根據(jù)元數(shù)據(jù)信息讀取Data Node。
子塊在Data Node中的分配方法可采用輪詢或哈希策略。其中輪詢策略將排序好的數(shù)據(jù)塊按順序存儲,哈希分布策略則根據(jù)塊id計算出的hash值將數(shù)據(jù)塊存儲到相應的Data Node上。
通過借鑒HDFS架構(gòu),Master中應包含集群節(jié)點信息表、已存儲數(shù)據(jù)表基本信息表、數(shù)據(jù)塊分布表和分塊策略表等。
集群節(jié)點信息表用于存儲集群節(jié)點信息,包括節(jié)點id、類型、角色、用戶、密碼、RDBMS連接字符串、數(shù)據(jù)庫驅(qū)動和節(jié)點狀態(tài)等信息。所有的節(jié)點由Master統(tǒng)一管理,并保持實時通信。
數(shù)據(jù)表基本信息表用于存儲數(shù)據(jù)表的基本信息,包括表id、表名稱、表大小、是否分塊、分塊大小、副本個數(shù)等信息。Client讀取數(shù)據(jù)時,首先獲取id,通過元數(shù)據(jù)關聯(lián)查詢獲取數(shù)據(jù)子塊信息。
數(shù)據(jù)塊分布表用于存儲數(shù)據(jù)塊基本信息,包括數(shù)據(jù)塊id、編號、地址、所在Data Nodeid、從屬的數(shù)據(jù)表id、副本編號等。Client通過表關聯(lián)查詢到某數(shù)據(jù)表的所有數(shù)據(jù)塊,然后從數(shù)據(jù)塊中讀取最終數(shù)據(jù)。
用戶提交任務后,系統(tǒng)首先讀取Master數(shù)據(jù)表,判斷任務中涉及的數(shù)據(jù)表是否在系統(tǒng)中存在,如果表存在,則繼續(xù)讀取數(shù)據(jù)塊分布表,找出數(shù)據(jù)表的所有分塊并啟動map任務,將多個分塊傳遞給map任務進行數(shù)據(jù)檢索,最后利用Reduce操作對結(jié)果進行排序、篩選、合并和聚集,最終輸出結(jié)果(與MapReduce處理流程相同)。
MapReduce默認的DBInputFormat接口多用于操作單一的數(shù)據(jù)庫,因此系統(tǒng)需要對該接口進行擴展以適應分布式數(shù)據(jù)庫環(huán)境。類似于HDFS從Name Node讀取文件數(shù)據(jù)塊信息的方式,系統(tǒng)從Master中讀取數(shù)據(jù)塊信息,然后由分塊信息生成輸入數(shù)據(jù)塊。擴展后的接口在操作分布式數(shù)據(jù)庫方面和HDFS的操作方式相同。
在海量數(shù)據(jù)處理過程中,大數(shù)據(jù)分析的基本原則是將計算放在數(shù)據(jù)中,避免數(shù)據(jù)移動。傳統(tǒng)的基于關系型數(shù)據(jù)庫的大數(shù)據(jù)分析系統(tǒng)借助于外部ETL工具將待分析數(shù)據(jù)導入到數(shù)據(jù)庫中,利用SQL語言進行數(shù)據(jù)分析并生成報表。由于SQL語言的局限性,系統(tǒng)需要將數(shù)據(jù)導出到外部工具(SPSS等)進行數(shù)據(jù)分析。這種模式的缺點在于數(shù)據(jù)導入導出過程造成大規(guī)模數(shù)據(jù)移動,導致系統(tǒng)性能下降。相對于關系型數(shù)據(jù)庫,MapReduce在計算或存儲模式上具有更好的容錯性與擴展性,能為大數(shù)據(jù)分析提供更好的平臺。在深度分析方面,MapReduce的函數(shù)表達式勝過SQL函數(shù)。
以Facebook為代表的新型大數(shù)據(jù)分析系統(tǒng)應運而生,如圖3所示。Facebook單一集群的數(shù)據(jù)量超過100PB,每天新增的數(shù)據(jù)量超過500TB。在Facebook的數(shù)據(jù)架構(gòu)中,OLTP事務處理由關系型數(shù)據(jù)庫負責,交易數(shù)據(jù)的管理和分析由Hive負責。Hive系統(tǒng)的數(shù)據(jù)分析結(jié)果導入到關系型數(shù)據(jù)庫中,用于用戶查詢。為減輕即時查詢給Hive核心系統(tǒng)造成的壓力,即時查詢交給備份的Hive服務器。Facebook的數(shù)據(jù)分析系統(tǒng)利用基于MapReduce的Hive-Hadoop架構(gòu),實現(xiàn)了系統(tǒng)高擴展性,同時利用關系型數(shù)據(jù)庫擅長OLTP事務的特點,使其用于處理數(shù)據(jù)的導入和分析結(jié)果的輸出,從而有效結(jié)合二者優(yōu)點。

圖3 Facebook數(shù)據(jù)平臺架構(gòu)
在大數(shù)據(jù)分析處理過程中,關系型數(shù)據(jù)庫在可擴展性方面的不足成為制約其性能的主要瓶頸,SQL語言難以滿足復雜的數(shù)據(jù)分析需求。通過將關系型數(shù)據(jù)庫和MapReduce進行技術融合,將MapReduce架構(gòu)可擴展性、容錯性等優(yōu)勢與關系型數(shù)據(jù)庫的高性能結(jié)合起來,設計出同時具備二者優(yōu)點的數(shù)據(jù)存儲架構(gòu),是解決大數(shù)據(jù)分析問題的重要途徑。在技術融合方面,Yale、Aster Data、Greenplum、中國人民大學高性能數(shù)據(jù)庫研究小組以及東北大學于戈教授等分別給出了不同解決方案。其共同點是利用關系型數(shù)據(jù)庫和MapReduce技術整合打破單一技術的局限性,最終通過兩種技術的相互滲透、相互學習產(chǎn)生新的大數(shù)據(jù)生態(tài)系統(tǒng)。
[1]張濱,陳吉榮,樂嘉錦.大數(shù)據(jù)管理技術研究綜述[J].計算機應用與軟件,2014(11):1-5,10.
[2]李建江,崔健,王聃,等.MapReduce并行編程模型研究綜述[J].電子學報,2011(11):2635-2642.
[3]覃雄派,王會舉,杜小勇,等.大數(shù)據(jù)分析——RDBMS與MapReduce 的競爭與共生[J].軟件學報,2012(1):32-45.
[4]王珊,王會舉,覃雄派,等.架構(gòu)大數(shù)據(jù):挑戰(zhàn)、現(xiàn)狀與展望[J].計算機學報,2011(10):1741-1752.
[5]師金鋼,鮑玉斌,冷芳玲,等.基于MapReduce的關系型數(shù)據(jù)倉庫并行查詢[J].東北大學學報:自然科學版,2011(5):626-629.
A Brief Discussion on the Integration of MapReduce&Relational Database
MEN Wei,ZOU Xiang-ling
(Henan Radio and Television University,Zhengzhou 45000,China)
RDBMS is good at OLTP,but its performance is inadequate when dealing with massive data.MapReduce uses its easy operability,high scalability and high concurrency to show high efficiency on processing large-scale data.Technical architecture with both advantages is one of the important ways to solve the problem of big data analysis.The ecosystem with both symbioses is becoming an important trend of technology integration.
Relationed Datebase;MapReduce;Big Data Analysis
TP311
A
1673-2022(2017)03-0010-04
2017-03-21
河南省科技廳科研項目(172102210235);河南省教育廳科研項目(16B520008);國家開放大學科研項目(G16F2406Q)
門威(1988-),男,河南永城人,講師,碩士,研究方向為軟件工程;鄒香玲(1987-),女,河南周口人,講師,碩士,研究方向為計算機軟件。