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

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

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

圖3 Facebook數據平臺架構
在大數據分析處理過程中,關系型數據庫在可擴展性方面的不足成為制約其性能的主要瓶頸,SQL語言難以滿足復雜的數據分析需求。通過將關系型數據庫和MapReduce進行技術融合,將MapReduce架構可擴展性、容錯性等優勢與關系型數據庫的高性能結合起來,設計出同時具備二者優點的數據存儲架構,是解決大數據分析問題的重要途徑。在技術融合方面,Yale、Aster Data、Greenplum、中國人民大學高性能數據庫研究小組以及東北大學于戈教授等分別給出了不同解決方案。其共同點是利用關系型數據庫和MapReduce技術整合打破單一技術的局限性,最終通過兩種技術的相互滲透、相互學習產生新的大數據生態系統。
[1]張濱,陳吉榮,樂嘉錦.大數據管理技術研究綜述[J].計算機應用與軟件,2014(11):1-5,10.
[2]李建江,崔健,王聃,等.MapReduce并行編程模型研究綜述[J].電子學報,2011(11):2635-2642.
[3]覃雄派,王會舉,杜小勇,等.大數據分析——RDBMS與MapReduce 的競爭與共生[J].軟件學報,2012(1):32-45.
[4]王珊,王會舉,覃雄派,等.架構大數據:挑戰、現狀與展望[J].計算機學報,2011(10):1741-1752.
[5]師金鋼,鮑玉斌,冷芳玲,等.基于MapReduce的關系型數據倉庫并行查詢[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-),女,河南周口人,講師,碩士,研究方向為計算機軟件。