巫東來 湯仕磊



摘 要:開發海量數據處理系統時存在技術框架選擇不確定問題。從理論及應用角度對兩種主流的海量數據處理架構MPP和Hadoop進行對比,分析各自技術特點,闡述其與傳統數據處理的優勢。分析結果表明,Hadoop在存儲數據規模上可輕松支持PB級別,而MPP架構大多只支持TB級別;Hadoop對海量半結構化、非結構化數據存儲和處理有一定優勢,但在處理速度和易用性上不及MPP;在結構化數據處理、響應性能和衍生工具等方面MPP 則占優,適用于查詢業務場景較多項目。通過分析兩大框架底層核心技術以及歸納優缺點,為企業相關應用的技術選型提供參考。
關鍵詞:大數據; 海量數據存儲; Hadoop; MPP;分布式計算
DOI:10. 11907/rjdk. 201655
中圖分類號:TP391文獻標識碼:A 文章編號:1672-7800(2020)010-0218-05
Abstract:In order to improve the uncertainties in the choice of technical framework when developing massive data processing systems,we make an in-depth comparison between the two mainstream massive data processing frameworks MPP and Hadoop from a theoretical and application perspective. We analyze their respective technical characteristics, and discusses their advantages over traditional data processing. The analysis results show that Hadoop can easily support the PB-level data scale in terms of the size of the stored data, while most MPP architectures only support the TB-level. Hadoop has certain advantages in the storage and processing of massive semi-structured and unstructured data, but it is inferior to MPP in processing speed and ease of use. MPP is dominant in structured data processing, response performance, and derivatives, and is suitable for projects with many query business scenarios. By analyzing the underlying core technologies of the two frameworks and summarizing their advantages and disadvantages, a comprehensive reference for enterprises in the selection of relevant application technologies is provided.
Key Words: big data; massive data storage; Hadoop; MPP; distributed computing
0 引言
隨著云計算、大數據產業的不斷發展,傳統使用單機數據庫進行數據存儲的模式已經不能滿足業界日益增長需求,海量數據處理成為一個關鍵問題。目前主流的海量數據處理架構分為兩種:①基于傳統數據庫及數據倉庫所衍生出的MPP(Massively Parallel Processing)架構[1];②基于Hadoop并行計算框架的分布式架構[2]。
傳統關系型數據庫隨著數據量增長性能急劇下降,業界提出一種橫向擴展(scale out)方式,通過增加節點使用更多廉價的機器構建更強的集群系統。在這種背景下,分布式數據庫和數據倉庫越來越受到重視,其中基于MPP架構的數據庫是主流解決方案,越來越多的廠商選擇使用它改造和升級原有軟件系統[3]。Hadoop是一種分布式數據處理框架,使用普通X86計算機組成分布式系統處理海量數據及進行大數據分析[4]。Hadoop架構近年伴隨著云計算而興,其生態系統和大數據緊密聯系在一起,不僅僅因為它是開源系統,更主要的是它形成了一個完整的技術生態圈[5-6]。混合架構則綜合了MPP架構和Hadoop架構各自特點,通過混合部署將各自的優點充分發揮出來。如Ma等[7]將Hadoop生態系統與ETL、Spark處理引擎一起使用,結合基于MPP的海量并行處理數據庫(MPP)實現銀行綜合風險管理系統,具有更好的性能;鄧涵元等[8]基于MPP-Hadoop 混合框架構建一套融合多種不同結構數據的數據集成系統 ,提升了數據查詢和加載效率。同時,混合架構案例近年得到長足發展[9-12]。
本文對MPP和Hadoop兩種架構進行深入分析,并對比各自優缺點以及適用范圍,給出不同類型應用的技術架構選型推薦方案。
1 基于MPP的數據處理架構
MPP指處于不同部分的多個處理器對程序進行協同處理的過程,每個處理器使用自己的操作系統、內存、總線和磁盤等,如圖1所示。通常MPP處理器使用某些消息傳遞接口進行通信。在某些實現中,同一應用程序最多可以使用200個或更多處理器,這種結構最大的特點在于共享資源。
MPP數據庫(MPP DB)基于MPP架構,通過并行化各種操作提高性能,如加載數據、構建索引以及使用并行的多個CPU和磁盤等。
MPP數據庫通常具有無共享架構,因為每個系統都有自己的CPU、內存和磁盤。通過數據庫軟件和高速互連,系統可以整體運行,并且可通過添加新服務器對集群進行擴展。MPP數據庫通常比托管在大型多處理器服務器上的傳統RDBMS更靈活,可伸縮且更具成本優勢,可提供快速的交互式查詢響應,如圖2所示。這種架構特征是任務并行執行、數據分布式存儲(本地化)、分布式計算、資源私有、可橫向擴展等。
1.1 MPP數據庫集群架構
MPP數據庫集群架構如圖3所示,分為以下兩種架構:
(1)有專職Master。Master節點的主要功能是作為系統訪問入口,對存儲在系統中的元數據進行管理,以及實現SQL Parser,生成執行計劃和任務調度等。Master有兩個節點,會進行數據同步,在出現故障時可切換。典型產品有Greenplum、AsterData、ParAccel、Hawg等。
(2)無專職Master。Master節點和數據節點共享一臺物理機,先連接上的節點會作為系統的Master。典型產品有Gbase8a、Vertica、Teradata、DB2、Impala 、IBM BigSQL、HP DragonRed、VerticaVIVE等。
1.2 MPP架構選擇
兩種架構各有優缺點,在超大規模分布式集群中,第(2)種架構更有優勢,可演變為“多master”架構(如Gbase8a和Vertica集群)。此種架構下,通過Zookeeper等分布式一致性軟件協調多個master,提供高可用性、透明性以及擴展性,同時數據節點具有對等性。
2 基于Hadoop架構的數據處理框架
2.1 Hadoop數據分塊
Hadoop 架構與MPP架構相似,圖4顯示Hadoop處理數據過程。名稱服務器充當目錄查找服務。Hadoop將數據分為任意塊,大小一般設為128Mb,將其復制到至少兩個其它節點以實現分布式存儲。小文件(小于128Mb的文件)完全保存在單個節點上,甚至1G大小的文件也只需要分布在8個節點(加上副本)上。因此,Hadoop可處理非常大的數據集。
由于小表格分布在較少服務器上,因此對于50~100Gb以下的數據文件不是理想選擇。在Hadoop上處理小數據集是一個挑戰,因為在某些情況下,單個節點上處理數據完全按順序運行而不是并行運行。許多Hadoop集群傾向于使用大量相對較慢且價格便宜的服務器,因此小數據性能可能較差。此外,隨著小文件數量增加,名稱服務器管理問題會越來越多。經驗表明,在大多數中型數據倉庫平臺(大約10Tb的數據)上只有大約10%的表擁有超過100Gb的數據,而70%的表不足1Gb數據。即使兩個最大的表超過1Tb,對于在Hadoop上部署也不是很有利。
2.2 Hadoop集群架構
Hadoop處理框架包括3個模塊:HDFS、MapReduce和YARN。
(1)HDFS是一個分布式文件系統,用于將單個集群擴展到數百個甚至數千個節點,具有高度的容錯能力,部署在低成本硬件上。 HDFS提供應用程序高吞吐量數據訪問,適用于具有大數據集的應用程序。
(2)MapReduce是一個軟件框架,以高可靠性、高容錯方式并行處理大型集群(數千個節點)上的海量數據(多TB數據集)。MapReduce作業通常將輸入數據集拆分為獨立的塊,這些任務以完全并行的方式進行處理。
(3)YARN:Hadoop集群資源管理主要依靠資源管理器(YARN)提供細粒度的資源管理。MapReduce作業不需要并行運行所有計算任務,因此可以處理大量的計算任務,具有可擴展性及支持長壽命容器等功能,但它比MPP資源管理器要慢,有時對于并發性管理支持不是很好。
2.3 Hadoop數據查詢
Hadoop的SQL接口有多種工具供選擇,包括MR / Tez/Spark上運行的Hive、SparkSQL、Impala、HAWQ或IBM BigSQL。
(1)Hive將SQL查詢轉換為MR / Tez / Spark作業并在集群上執行。所有作業均基于相同的MapReduce概念構建,提供良好的集群利用率,以及與其它Hadoop堆棧技術的良好集成。缺點是執行查詢延遲大,尤其表連接性能較低,沒有查詢優化器(至少目前是這樣),因此即使是最不合理的查詢引擎也會執行操作。
(2)SparkSQL是介于MapReduce和MPP-over-Hadoop方法之間的一種工具,兼顧兩者優點。與MapReduce相似,將工作分解為一組單獨計劃任務以提供更好的穩定性。在執行階段之間進行流式傳輸數據以加快處理速度,使用類似MPP中的固定執行程序概念減少查詢延遲。
(3)混合方案如Impala和HAWQ類的解決方案,是Hadoop之上的MPP執行引擎,可處理HDFS中存儲的數據。與其它MPP引擎一樣,可提供更低的延遲和更少的查詢處理時間,但代價是可伸縮性和穩定性較低。
3 Hadoop與MPP架構選擇
3.1 節點架構
(1)底層數據庫。MPP底層運行的是SQL引擎,而Hadoop底層處理是MapReduce程序。
(2)擴展程度。MPP雖然支持橫向擴展,但一般只支持擴展到百個節點級別, Hadoop則可以擴展到千個節點級別。
基于Hadoop框架的數據平臺可看作是新一代的分布式數據倉庫產品,而MPP數據庫會應用與大數據類似的解決方案。針對不同使用場景,其發揮的作用和給用戶帶來的體驗也不同。
MPP和Hadoop平臺互為補充,分別用于不同場景。MPP用于高端數據庫產品,Hadoop可部署到普通X86集群。MPP和Hadoop底層支持的硬件不同, Hadoop控制機制大多通過Java代碼實現,而MPP產品則通過SQL進行查詢。Hadoop的子項目“Hive”本質上也是通過MapReduce提供SQL抽象。在許多情況下,與編寫MapReduce作業相比,SQL更容易且生產率更高,具有SQL技能的數據庫專業人員比Hadoop專家更多且成本更低。
3.2 CAP理論
CAP定理(CAP theorem)又稱布魯爾定理(Brewer's theorem),在理論計算機科學中指一個分布式系統最多只能滿足以下3個特征中的兩個:①一致性(Consistency):同一時間系統中所有的節點都具有相同的數據值;②可用性(Availability):系統中即使一個或多個節點發生故障,客戶端的任何請求仍將獲得響應;③分區容忍性(Partition tolerance):即使系統節點之間發生許多通信故障,集群也必須繼續工作。
CAP理論是MPP架構擴展性弱的原因,因為MPP數據庫設計仍然以數據查詢為主要目的,首先考慮一致性,其次考慮可用性,最后在可能的情況下考慮分區容忍性。而Hadoop是為并行處理與存儲設計的,所以數據均以文件存儲,有限考慮分區容忍性,然后考慮可用性,一致性則最后考慮,所以可靠性上Hadoop要優于MPP。
3.3 數據擴展制約性
(1)高可用。MPP數據庫通過將哈希算法應用于分配鍵列值,在數據切片之間確定數據存儲的物理機器,而Hadoop則是通過數據分塊實現分布式存儲,因而Hadoop可用性更強。
(2)并行任務。雖然MPP是根據Hash切分數據的,但是它的任務沒有切分,因此任務都會在每個節點上運行一次。
(3)文件系統。在MPP數據庫中,雖然數據被切分了,但文件數量并未減少,每個表在節點上有一個或多個文件。存儲的表越多節點數就越多,導致系統存儲過多文件。
(4)網絡瓶頸。MPP數據庫大多使用對等節點架構,對等的點對點連接消耗大量網絡寬帶,限制系統線性擴展。Hadoop使用主從節點架構,在線性擴展上強于MPP。
(5)其它關系數據庫限制。關系型數據庫中的鎖機制、日志系統、權限管理、節點管理等瓶頸均限制MPP規模擴大,而Hadoop沒有使用關系型數據庫,并且有專用的分布式一致性管理軟件,因此這些性能要優于MPP。
3.4 技術選擇
Hadoop架構數據存儲、傳統數據倉庫、MPP數據庫技術性能及適用場景對比如表2所示。
因此,Hadoop和MPP兩種技術應根據具體業務以及場景進行選擇。
(1)對于半結構化和非結構化數據,Hadoop在處理上比MPP有一定優勢,適合于海量數據批處理類應用,如海量數據ETL、非結構化數據分析與挖掘(關鍵詞提取、情感分析等)。若系統對非結構化數據存儲需求較大且數據量巨大,需要動態擴展數據節點等,則使用Hadoop架構更為合適。
(2)MPP架構更適合對現有關系型數據庫和數據倉庫系統進行升級或替換,其在數據查詢類業務上比Hadoop更具優勢,適合處理SQL類事務請求、多維度數據分析、展示數據報表等。若大部分存儲數據是結構化數據,數據量不是很大,未來不會爆炸式增長,或業務人員習慣使用SQL場景,則可優先考慮使用MPP數據庫。
(3)MPPDB+Hadoop混合架構是未來海量數據處理發展趨勢。用MPP處理PB級結構化數據存儲與查詢,提供完整的SQL與事務支持功能。用Hadoop處理半結構化、非結構化數據,提供靈活的自定義模型與算法開發能力,同時滿足多種數據類型處理需求,并在實時查詢與離線分析上都能提供較高性能,但MPPDB+Hadoop混合架構開發與維護成本可能較高。一個典型的混合架構如圖5所示。
4 結語
在數據爆炸時代,傳統的數據庫架構處理系統已經不能滿足行業需要。本文從理論及應用角度將兩種主流的海量數據處理架構MPP和Hadoop進行對比,分析各自的技術特點,論述它們與傳統數據處理的優勢。通過分析兩大框架底層核心技術,對其優缺點進行了歸納。Hadoop對海量半結構化、非結構化數據存儲與處理有一定優勢,但在處理速度和易用性上不及MPP。Hadoop靈活性較強,企業可根據自身業務特點進行定制開發。MPP優勢在海量結構化數據處理、響應性能和衍生工具等方面,適用于查詢業務場景較多的項目。隨著Hadoop 生態圈的不斷發展,如Hadoop 的SQL 性能提升、BI工具的不斷豐富, MPP 技術發展會向Hadoop 靠攏。基于MPP 與Hadoop框架并結合Spark內存計算、流計算等技術的混合架構平臺,會成為大型數據處理項目的理想選擇。
參考文獻:
[1] 羅遠浩. MPP數據倉庫的架構及加載技術優化研究[D]. 北京:中國科學院大學,2017.
[2] 郝樹魁. Hadoop HDFS和MapReduce架構淺析[J]. 郵電設計技術,2012,11(7):37-42.
[3] 田雯,劉倩,孫紅恩. MPP數據庫在中國移動大數據應用中的前景分析[J]. 電信工程技術與標準化,2017,30(3):87-91.
[4] 許吳環,顧瀟華. 大數據處理平臺比較研究[J]. 軟件導刊,2017,16(4):212-214.
[5] 陳吉榮,樂嘉錦. 基于Hadoop生態系統的大數據解決方案綜述[J]. 計算機工程與科學,2013,35(10):25-35.
[6] 曹恒瑞,曹展碩. 一種基于Hadoop平臺的分布式數據檢索系統[J]. 軟件導刊,2017,16(4):118-120.
[7] MA S,WANG H,XU B,et al. Banking comprehensive risk management system based on big data architecture of hybrid processing engines and databases[C]. IEEE Smartworld, Ubiquitous Intelligence & Computing, Advanced & Trusted Computing, Scalable Computing & Communications, Cloud & Big Data Computing, Internet of People & Smart City Innovation,2018:1844-1851.
[8] 鄧涵元,盧山,程光. 基于MPP-Hadoop混合架構高校數據集成系統研究[J]. 計算機技術與發展,2018,28(8):160-163,169.
[9] 劉冰. 公安云混搭架構下的數據安全增強技術研究[J]. 警察技術,2019,18(2):33-36.
[10] 劉磊. 基于大數據的政府審計全覆蓋路徑設計與方法——以MPP及Hadoop技術路線為例[J]. 許昌學院學報,2020,39(1):98-102.
[11] LU X,SU F,LIU H,et al. A unified OLAP/OLTP big data processing framework in telecom industry[C]. Qingdao:International Symposium on Communications & Information Technologies,2016.
[12] VIJAYAKUMAR S,BHARGAVI A,PRASEEDA U,et al. Optimizing sequence alignment in cloud using Hadoop and MPP database[C]. IEEE International Conference on Cloud Computing,2012:819-827.
(責任編輯:杜能鋼)