大规模异构数据并行处理系统的设计、实现与实践
點擊上方藍字關注我們
大規模異構數據并行處理系統的設計、實現與實踐
夏正勛,?羅圣美,?孫元浩,?唐劍飛,?張燕
星環信息科技(上海)有限公司,上海 200233
論文引用格式:
夏正勛,?羅圣美,等.大規模異構數據并行處理系統的設計、實現與實踐[J].大數據, 2020, 6(4):18-29.
XIA Z X, LUO S M, et al.Design,implementation and practice of parallel processing system for a large-scale heterogeneous data[J].Big Data Research, 2020, 6(4):18-29.
1 引言
隨著互聯網和物聯網應用的快速發展,數據呈現爆發式增長趨勢,一方面數據規模的膨脹導致傳統的關系型數據庫無法滿足存儲和查詢的實時性要求,另一方面數據結構出現多樣化,各種不同類型的數據庫并行交互,數據流轉和融合處理難度加大,成本上升。
為了滿足企業數字化轉型的需求,政府和大中型企業一方面需要在確保安全和隱私的前提下開放自身的業務數據,另一方面需要接入大量的互聯網、物聯網數據,提升數據的代表性和泛化能力,為此需要為數據共享和分析規劃統一的大規模異構數據處理平臺,實現資源的統一調度,兼容數據格式,實現存儲和計算并行,統一用戶開發接口,滿足數據流轉和融合處理需求,提高業務的實時性和安全性,快速實現數字化轉型目標。
2 當前研究方向與現狀
自1970年Edgar F.Codd發布劃時代的論文《用于大型共享數據庫的關系數據模型》以來,經過近50年的研究實踐,產業界已能夠通過關系型數據庫很好地管理結構化數據。但隨著互聯網和物聯網應用的快速發展,數據處理的種類及規模發生了翻天覆地的變化,圖數據、文檔數據、JSON/XML等非結構化數據的處理需求快速增長,企業對數據處理的需求從結構化數據處理逐漸擴展到結構化、半結構化和非結構化混合的數據處理。
近10年來出現了一種針對NoSQL數據的處理技術,其本質上是為解決某一特定類型的異構數據問題而設計的數據處理及存儲系統。NoSQL數據處理系統主要分為三大類:文檔數據處理系統、圖數據處理系統和BigTable數據處理系統。國外開源技術在NoSQL領域比較活躍,包括以MongoDB和Elastic為代表的文檔數據處理系統,以Neo4J和JanusGraph為代表的圖數據處理系統,以HBase和 Cassandra為代表的BigTable數據處理系統。國內在結構化數據處理技術研發方面起步較晚,在2000年左右出現了武漢達夢數據庫有限公司、北京人大金倉信息技術股份公司、天津南大通用數據技術有限公司等數據庫代表廠商;而在NoSQL數據處理技術方面,國內和國外幾乎同一時間開始相關技術的研發。國內廠商在應用創新上表現較為突出,如阿里云結合大數據和云計算技術,提供一站式數據服務的非結構化數據管理平臺,該平臺可以提供高效的數據存儲、數據挖掘、全文檢索、視頻轉碼、圖像識別等服務;星環信息科技(上海)有限公司致力于基礎軟件平臺的研發,實現了關系型數據、KV數據、圖數據、文檔數據等多種類型數據的存儲、分析和挖掘。
與此同時,全球數據規模急劇增長,國際數據公司(international data corporation,IDC)預測2025年全球數據總量將達到175 ZB,預計中國的數據量在未來7年將平均每年增長30%以上。數據處理的規模由TB級迅速提升至PB級,數據處理系統的架構也逐漸從縱向擴展(scale up)轉向橫向擴展(scale out),通過增加節點數實現處理能力的擴展。典型的數據處理系統架構包括對稱多處理(symmetric multiprocessing, SMP)架構、大規模并行處理(massively parallel processing,MPP)架構以及MPP+Hadoop混合架構。SMP架構的典型代表有Oracle、DB2等,MPP架構的典型代表有思愛普公司的HANA、GreenPlum等,MPP+Hadoop混合架構的典型代表有Databricks公司的Delta Lake、亞馬遜公司的Lake Formation等。上述架構各具特色,在不同時期解決了企業面臨的不同規模的數據處理需求。
3 當前異構并行系統的問題與解決思路
2005年,Michael Stonebraker闡述了在數據處理領域不存在“one size fits all”的解決方案,即不存在一種數據處理系統,能夠適應所有的數據處理應用場景,數據處理領域的主流框架一直在不斷地改進。基于SMP架構的關系型數據庫起源于1970年,至今仍在數據處理領域發揮著重要作用,但由于其原設計目標是處理結構化數據,所以對非結構化數據的處理能力較弱,無法單獨解決當今日益復雜的異構數據分析問題。另外,基于SMP架構的數據處理系統性能提升一般采用縱向擴展的方式,嚴重依賴硬件的升級,性價比較低。
MPP架構的核心設計思想是無共享(share nothing),最早在Gamma和Teradata中得到應用。MPP架構采用橫向擴展的方式提升系統整體性能,解決了SMP架構性能擴展受限的問題。具體來說,MPP系統是由許多松耦合的處理實例組成的分布式并行數據處理系統,各實例之間不共享資源,每個實例負責存儲和計算全局數據的一部分,但MPP系統依然不擅長處理異構數據,且在協作計算時,節點間需要進行全連接通信,容易產生網絡風暴,這限制了MPP集群的規模。
Hadoop系統在2003年出現,現在已建立了龐大的生態系統,包含可以并行處理異構數據的MapReduce、Impala、Spark、Flink等一系列開源計算框架。近幾年來業界出現了將MPP系統與Hadoop系統相結合的“MPP+Hadoop”混合數據處理架構,此類數據處理架構既可以處理結構化數據,又可以處理半結構化數據、非結構化數據,數據需要存儲在多個子系統中,造成資本性支出(capital expenditure,CAPEX)、運營成本(operating expense,OPEX)增加,同時數據的時效性及一致性難以保證。
圖1簡要總結了3種數據處理架構存在的問題。
圖1???3種數據處理架構存在的問題
本文基于結構分層、功能融合的設計思想,結合產業應用需求,提出了一種大規模異構數據并行處理系統,在架構上將系統分為統一的開發接口層、統一的數據計算引擎層、統一的分布式存儲管理層、統一的資源調度管理層,該系統支持多種不同的SQL和NoSQL數據處理引擎,支持結構化數據、圖數據、文檔數據、大表、JSON等類型的數據的存儲、檢索和分析,并能夠通過統一的開發接口提供數據分析服務,為開發者提供統一的數據處理體驗。
4 系統實現
本文提出的大規模異構數據并行處理系統架構如圖2所示。
最上層是統一的開發接口層,其采用標準的SQL開發接口和Cypher語言接口,經過統一的語法解析,形成標準的計算原語,再通過統一的優化處理,生成高效的執行計劃。這種統一開發接口層的設計避免了API開發方式存在的應用兼容性差、開發難度高等問題,提升了數據應用開發的效率。
統一的數據計算引擎層可以支持在線或離線計算,采用有向無環圖(directed acyclic graph,DAG)計算模式支持各種數據處理,負責數據的計算、變換、關聯、聚合等操作,能夠將標準的SQL操作轉換為不同能力引擎的數據訪問操作。相對于MPP架構,DAG計算模式更適合大規模集群計算場景,基于DAG模式的計算有很好的擴展性,能夠滿足包括圖計算、深度學習在內的多迭代的計算特性,并能夠避免集群間的網絡風暴,在實踐中已經被廣泛應用。
圖2???大規模異構數據并行處理系統架構
統一的分布式存儲管理層支持不同的數據存儲與分析需求,對不同類型的數據存儲引擎的存儲、檢索、分析的能力進行抽象,實現對存儲引擎能力的統一管理,這些引擎包括用于分析型數據庫的Hadoop分布式文件系統(Hadoop distributed file system,HDFS)、用于BigTable存儲的HBase、用于全文索引的Lucene、用于圖計算的圖存儲引擎等。
系統底層是基于Kubernetes的統一的資源調度管理層,負責管理和調度各種計算任務。通過對Kubernetes和數據處理系統底層的融合創新,統一的資源調度管理層可以支撐各種計算任務,包括MapReduce、Spark、深度學習,甚至是消息傳遞接口(message passing interface, MPI)類的高性能計算任務。
下面對各層涉及的技術進行詳細說明。
4.1 統一的開發接口層
統一的開發接口層的核心是語法編譯器和執行優化器,語法編譯器可以對SQL 2003、OraclePL/SQL、MySQL方言、Cypher圖計算語言等聲明式開發語言進行詞法語法解析、語義分析、執行計劃生成、基于控制流的存儲過程優化等處理,并將其轉換成標準的計算原語;執行優化器可以對邏輯執行計劃和物理執行計劃進行統一的優化處理,提高執行性能。
面向異構數據并行處理的統一編譯及優化過程如圖3所示。
圖3???面向異構數據并行處理的統一編譯及優化過程
(1)詞法語法分析模塊
詞法分析是編譯的第一個階段,負責將SQL/Cypher/PL語句轉換為單詞(token)序列,詞法分析器一般以函數的形式存在,供語法分析器調用。語法分析器借助元數據信息和多存儲抽象信息對SQL/Cypher/PL語句進行語法檢查,并構建由輸入的單詞組成的抽象語法樹。
(2)語義分析模塊
語義分析是編譯過程中的一個邏輯階段,審查源程序有無語義錯誤,為代碼生成階段收集類型信息。語義分析將業務邏輯轉化為若干可以在分布式系統中執行的執行塊,基于執行塊的依賴關系,創建棧式函數執行框架。
(3)邏輯執行計劃優化模塊
邏輯執 行計劃優化是優化器利用語法結構優化語法樹結構及執行順序的過程。本文設計的優化器可以支持上百種優化規則,如公共子表達式消除、列裁剪、分區裁剪、謂詞下推等,減少了數據的計算量,使得邏輯執行計劃的整體效率更高。
(4)基于控 制流的存儲過程優化模塊
與傳統的SQL優化原理不同,基于控制流的存儲過程優化針對存儲過程具有復雜函數調用邏輯的特點,采用計算級別的優化方法,包括死代碼刪除、函數內斂、冗余刪除、循環不變量外提、參數傳遞優化、循環優化、并行化等,計算級別的優化可以進一步減少存儲及計算的開銷,提升查詢效率。
(5)物理執行計劃生成模塊
物理執行計劃是基于邏輯執行計劃生成的可以在分布式物理環境下運行的執行計劃。為了實現最佳的分布式計算整體效率,物理計劃生成通常既要考慮數據特性,也要考慮計算特性,如依據數據的物理分布特點,按就近原則生成數據源讀取執行計劃,避免跨節點讀取數據;同時,在計算過程中,對中間計算結果進行合理的層次聚合,降低集群間的通信數據總量。
在邏輯執行計劃優化和物理執行計劃生成優化方面,本文還針對圖、鍵值、文檔、關系型數據等異構數據的特點執行多層次的優化。針對簡單查詢,可以采用條件過濾、全表掃描規避、查詢結果快速索引等優化處理;針對多數據源關聯分析,可以根據數據規模采用普通Join、MapJoin、空表Join等優化處理;針對圖數據處理,可以通過語法語義分析,首先利用資源描述框架(resource description framework,RDF)的模式信息對SPARQL圖模式進行簡化處理,在此基礎上利用連接代價和動態規劃方法尋找每一次迭代的最優連接順序,最終得到最優查詢計劃。上述具有針對性的優化可以保證異構數據處理邏輯在不需要手工改動的情況下發揮最大的性能。
4.2 統一的數據計算引擎層
目前業界主流的數據并行計算架構有兩種,一種是MPP架構,另一種是DAG架構。從整體上來看,基于MPP的計算引擎采用多實例來加速分析,實例之間不共享數據,在小數據量情況下數據分析性能較好。DAG天生適合流水線(pipeline)計算模式,在數據處理領域,可以通過DAG完整地描述數據處理流水線的全過程,DAG解析后可生成若干并行的子任務,能夠充分發揮大規模數據處理集群的計算性能。本文設計的基于DAG的統一的數據計算引擎層可以有效地減少通信的性能損耗,適合大規模集群之間的各種數據計算任務。DAG與MPP架構的具體比較見表1。
在DAG的計算模式基礎上,統一的數據計算引擎層支持同時調用批處理算子和流處理算子,使用事件驅動和批處理統一的模型,通過輪詢數據變化來驅動實時計算,使一個計算引擎既能支持實時計算又能支持離線計算,實現流批一體,滿足更多樣化的數據計算需求。
具體來說,統一的數據計算引擎層將批處理算子或流處理算子按編程接口形成DAG計算圖,再根據DAG計算圖中子任務的依賴關系將計算劃分成任務集,并結合流水線并行規劃,將不同的任務集提交到多個計算節點,進行靈活的調度。
另外,本文還使用向量化計算技術對批量數據處理做進一步的優化,向量化計算可以對批量數據進行一次性計算,而不需要逐個計算數據,可以極大地提升計算效率。
4.3 統一的分布式存儲管理層
隨著大規模異構數據并行計算應用的普及,越來越多的專用存儲引擎被整合到數據處理系統中,協同完成計算任務。因此,大規模異構數據并行系統需要解決各存儲引擎的兼容問題,保證各存儲引擎數據的一致性,實現與事務操作相關的接口。
本文使用Raft協議來保證各分布式存儲管理層的數據一致性,并在此基礎上完成與事務操作相關的接口,當客戶端需要進行數據操作時,發送指令到統一的分布式存儲管理層中,由統一的分布式存儲管理層查詢元數據和路由表,找到數據所在的Raft分組并進行交互,完成對數據的具體操作,統一的分布式存儲管理層邏輯示意圖如圖4所示。
分布式存儲管理層基于Raft協議可以實現以下功能:
● 各單機存儲副本之間的狀態同步,從而實現各數據節點的數據一致性;
● 可信的選主過程,確保相關狀態的同步;
圖4???統一的分布式存儲管理層邏輯示意圖
● 事務協同組的選主和相關狀態同步,以實現與事務操作相關的接口;
● 具有存儲服務的恢復服務能力,以實現容錯與災備。
統一的分布式存儲管理層將分布式存儲的通用功能接口抽象出來,如一致性接口、事務操作接口、多版本并發控制(multi-version concurrency control, MVCC)接口、分區策略接口等功能接口,如圖5所示。存儲引擎只需要實現其單機版本,在此基礎上實現特定驅動,與本層進行接口適配就可以實現分布式處理的功能。
圖5???統一的分布式存儲管理層結構
在具體實現過程中,可以通過以下步驟將單機存儲系統接入統一的分布式存儲管理層。
● 在各個單機服務中定義狀態機,用來進行各服務之間的協同。
● 在狀態機中實現實際處理邏輯,完成特定狀態下的具體操作。例如,可以實現OnExecute方法,完成具體的執行邏輯,也可以實現OnFailed方法,完成執行失敗之后的處理邏輯。
● 定義分布式服務中負責增刪節點和數據重分布的狀態機。
添加故障恢復的處理方法,以完成容錯與災備功能。在單機存儲系統中向外提供與事務相關的接口。
4.4 統一的資源調度管理層
大規模異構數據并行系統需要管理和調度各種不同類型的計算任務,如MapReduce、Spark、GraphX、深度學習等,目前尚沒有一個開源的資源管理框架可以支持所有計算任務。一個可行的方案是結合Kubernetes技術,通過對大數據底層技術的創新,實現云原生的、統一的資源調度管理層,支撐各種計算任務。
統一的資源調度管理層是大規模異構數據并行系統能夠有效運行的重要保證,包括資源管理模塊、服務模塊和云調度模塊,如圖6所示。
服務模塊包括以下5個部分。
● 配置中心:實時地收集和管理云平臺內運行的服務的配置參數。
● 物理資源池:放置各種資源池化后的邏輯資源。
圖6???統一的資源調度管理層
● 云存儲服務:基于本地存儲開發的分布式存儲服務,對有狀態服務的數據進行持久化。
● 云網絡服務:給租戶提供類似于虛擬私有云的網絡服務。
● 標簽中心:對容器、資源的標簽進行管理。
云調度模塊負責與具體應用交互,接收應用的輸入,然后從服務模塊獲取實時的狀態數據,形成調度決策,分配資源供具體應用使用。
資源管理模塊采用Kubernetes提供基礎的技術支撐。
4.5 總結
2019年咨詢公司Gartner在《2019年數據管理技術成熟度曲線》分析報告中預測“在一個系統中處理多種異構數據是未來數據處理的必然趨勢”[12],本文針對大規模異構數據處理設計了一種大規模異構數據并行處理系統,并完成了產品研制和應用部署。與傳統數據處理系統相比,基于統一架構的數據處理系統有以下特點。
● 基于編譯器及優化器的統一的開發接口層統一了異構數據處理的開發接口,避免了數據處理開發者同時使用多種開發語言,降低了數據應用開發門檻和開發者的學習成本,提升了數據業務開發效率及客戶需求響應效率。
● 相對于傳統數據處理集群,基于DAG模式重新設計的統一的數據計算引擎層的計算優化策略的范圍從節點域擴展到集群域,實現了全局的計算調度及通信路由優化,減少了傳統數據處理集群的通信開銷,提升了數據業務的計算效率。
● 基于存儲驅動設計的統一的分布式存儲管理層將數據存儲的統一處理接口抽象出來,能夠兼容支持各類數據的專有存儲引擎,簡化了異構數據的存儲處理流程,提升了數據業務的存儲效率。
5 應用案例
以某世界500強集團公司數據處理系統升級為例,原來基于SMP架構和MPP架構構建的數據處理平臺存在以下問題。
● 數據規模逐年增大,受架構限制,數據處理平臺規模難擴展。
● 非結構數據處理能力不足。
● 不同部門存在數據壁壘,數據共享消耗大量資源,難保證數據的一致性。
基于本文的設計思想,實現了基于統一架構的大規模異構數據處理平臺解決方案,如圖7所示。
在基礎設施層面,利用資源調度管理模塊對計算資源、存儲資源、網絡資源進行集中調度管理,提升基礎資源的利用效率;在平臺及服務層面,采用統一的計算引擎和存儲管理,支持多種類型數據的存儲及分析,并提供批量處理、流式計算、圖計算、BI/AI分析等多種數據分析處理能力,從而突破了原系統架構對計算規模及數據處理能力的限制。基于統一的開發接口層為應用層提供了開發測試、數據共享、多租戶隔離等豐富的能力開發接口。
本文提出的處理平臺已被應用于實際系統中,截至2020年3月,使用該平臺進行系統組網的規模達到了近300臺設備,分為數據湖、數倉、分析實驗室、省分、開發測試五大集群,平臺CPU核心近5 000個,內存近100 TB,可存儲空間超過3 PB,有效支撐了各部門的數據處理和分析工作。在系統部署過程中,業務需求經過了3次迭代才逐步厘清。第一次迭代:圈定范圍,搭建基礎系統平臺;第二次迭代:細化平臺內各項主要應用,逐步完善系統異構數據的處理能力;第三次迭代:提升數據分析能力,強化數據管理流程。3次迭代充分驗證了大規模異構數據并行處理系統的可行性,也通過實踐進一步完善了數據處理細節,使系統能夠更好地適應多樣化的產業應用場景。
圖7???某基于統一架構的大規模異構數據處理平臺
6 結束語
目前,大數據已經進入了3.0時代,大數據3.0時代要求在同一個平臺中可以滿足不同層次的大數據需求。然而,分別以Hadoop和Spark為代表的大數據1.0與大數據2.0技術在數據存儲、計算和數據業務打通方面存在很多缺陷。為了解決這些問題,本文提出了一種大規模異構數據并行處理系統,經過理論分析和商業應用實踐,驗證了系統的可行性,為異構數據并行化處理技術和應用提供了參考,有助于推動大數據、人工智能、云計算應用一體化的實現。
作者簡介
夏正勛(1979-),男,星環信息科技(上海)有限公司高級研究員,主要研究方向為大數據、數據庫、人工智能、流媒體處理技術等 。
羅圣美(1971-),男,博士,星環信息科技(上海)有限公司大數據研究院院長,主要研究方向為大數據、并行計算、云存儲、人工智能等 。
孫元浩(1976-),男,星環信息科技(上海)有限公司創始人,從2009年開始研究大數據技術,2013年創立公司,并開始新一代大數據技術的自主研發 。
唐劍飛(1986-),男,星環信息科技(上海)有限公司大數據技術標準研究員,主要研究方向為大數據、數據庫、圖計算等 。
張燕(1985-),女,星環信息科技(上海)有限公司大數據技術研究員,主要研究方向為大數據、人工智能等 。
往期文章回顧
《大數據》2020年第4期目次&摘要
專題導讀:大數據異構并行系統
GPU事務性內存技術研究
大數據期刊
《大數據(Big Data Research,BDR)》雙月刊是由中華人民共和國工業和信息化部主管,人民郵電出版社主辦,中國計算機學會大數據專家委員會學術指導,北京信通傳媒有限責任公司出版的期刊,已成功入選中文科技核心期刊、中國計算機學會會刊、中國計算機學會推薦中文科技期刊,并被評為2018年國家哲學社會科學文獻中心學術期刊數據庫“綜合性人文社會科學”學科最受歡迎期刊。
關注《大數據》期刊微信公眾號,獲取更多內容
總結
以上是生活随笔為你收集整理的大规模异构数据并行处理系统的设计、实现与实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZ2440总结4
- 下一篇: 作者:陈纯(1955-),男,博士,浙江