新一代云數據平臺架構演進之路
一、大數據發展回顧
數據平臺是指提供數據集成、數據存儲、數據管理、數據處理、數據分析、數據服務等數據全生命周期能力的軟件平臺。數據平臺能夠屏蔽底層大數據引擎的底層細節,降低數據建設和使用門檻,對外提供統一的服務平臺,幫助企業實現數據驅動業務。下面我們將從不同發展階段來介紹大數據平臺的演化和大數據基礎設施的演進過程。
1、大數據平臺的演化
隨著技術的迭代更新,數據平臺也在與時俱進、不斷進化,回顧整個發展歷程,大致可以分為三個階段:
(1)傳統數據時代:上一世紀 80 年代到 2000 年左右處于這一階段。數據平臺和計算平臺由 Oracle、Teradata 等數據庫廠商提供,數據應用以 BI 報表的應用為主,主要由 SAP、微策略等 BI 公司提供能力。
(2)大數據時代:從 2000 年以后就進入大數據時代。該階段以 Hadoop 的誕生和推廣為主,得到了廣泛的發展和應用,各個廠商也以此為基礎推出了自己公司的數據中臺、數據平臺等產品。在該階段數據平臺還是以企業內部使用場景為主。
(3)云數據時代:隨著云計算技術的普及和發展,大數據平臺也隨之進入了云數據時代。國外誕生了諸如 Redshift、Snowflake、Databricks 等云數據平臺公司,國內以阿里為例,在阿里云推出 Max Compute、PAI、EMR 等云上計算引擎,以及御膳房電商數據開放平臺、DataWorks 云數據開發平臺等產品。
數新網絡是在云數據時代背景下孕育而生,公司的宗旨是為客戶提供全棧式的大數據平臺和服務能力。上圖中最右側部分是數新網絡提供的國產開源可控云數據平臺 DataCyber,整體基于開源技術底座,自底向上依次提供了大數據計算存儲引擎、云數據平臺、面向垂直行業的數據中臺、以及應用層的輕量化分析套件、應用市場等能力。
2、大數據基礎設施的演進
通過回顧數據平臺的發展和演化歷程,可以總結出大數據基礎設施演進的四個技術階段。
(1)數據倉庫階段:以 OLAP、BI 報表分析為主。
(2)數據平臺階段:大規模數據存儲和計算,主要為批處理計算,同時結合大量在線服務的形式。
(3)數據中臺階段:以阿里為代表提出數據中臺的理念,基于數據平臺,結合數據標準、數據體系、組織變革機制,構成整個數據中臺能力。
(4)云數據平臺階段(數據云):以云數倉為代表,典型特點是支持多租戶的資源彈性伸縮和按量計費,由此發展出現流批一體、湖倉一體、數智一體、云原生、存算分離、云原生、開源開放等技術方向。
云數據平臺的定義:也稱為云數據倉庫,是基于云計算技術、支持多租戶的數據平臺技術和產品,為用戶提供海量數據挖掘和分析服務。我們理解,云數據平臺更多指的是一種現代化的數據架構,其部署模式可以部署在本地數據中心、云上或混合云等多種環境。
二、云數據平臺演進趨勢
在介紹云數據平臺的演進趨勢之前,我們先回顧一下大數據平臺技術架構的演進過程。主要分為四個階段:共享存儲架構、大規模并行處理、SQL-ON-Hadoop、云原生架構。每個階段都有各自的技術特點,也是適應當時環境而產生的。
(1)第一代架構:以共享存儲的架構為代表(share storage),支持的節點很少,擴展困難,只能支撐報表分析的場景為主。
(2)第二代架構:以大規模并行處理 MPP 架構為代表(share nothing),節點規模能夠達到百級,能夠處理的數據規模得到了一定提升,但仍存在限制。
(3)第三代架構:以 Hadoop、Spark 為代表,基于分布式的存儲、分布式的資源調度,獲得了更大規模的集群規模及數據處理規模。
(4)第四代架構:云原生架構,在新的網絡傳輸速度背景下,基于統一的分布式存儲、數據倉庫、數據湖技術,支持多種類型計算引擎,從而滿足更多分析場景的需求。
下面將圍繞云原生架構,介紹云數據平臺的幾個重點技術演進方向。
1、云數據平臺演進趨勢:多元引擎
在云計算+大數據的背景下,無論是存儲引擎,還是計算引擎、實時分析引擎,都呈現出多元化的趨勢。
(1)存儲引擎:云上存儲如 S3、OSS 發展迅速,私有云和公有云長期并存,因此本地存儲、云上存儲也將長期并存。
(2)流批計算引擎:經過多年的迭代演進,Spark 和 Flink 逐漸成為企業級主流計算框架,目前呈現出擅長不同場景的態勢:Spark 擅長高吞吐量的計算,以及機器學習、圖計算等場景;而 Flink 則擅長實時性要求高、流批一體等場景;不同企業的選擇也不盡相同。
(3)實時分析引擎:以 MPP 架構為例,近年來不斷涌現新的 MPP 查詢引擎、MPP 數據庫,每個引擎都有各自擅長的場景,并處于快速發展和升級中,因此,各個企業的選擇差異較大。
基于大數據引擎多元化的這一趨勢,云數據平臺需要能夠適配支持多種類型的計算和存儲引擎。
2、云數據平臺演進趨勢:流批一體
第二個演進趨勢是實時化以及流批一體。實時處理的需求在廣泛的行業都有普遍訴求,尤其是電商、物聯網等。
實時數據架構最為經典的是 Lambda 架構和 Kappa 架構,以及由這兩種架構衍生的一些混合架構方案。以目前的技術發展來看,很難做到統一到一種架構。因此,我們需要的是根據不同的場景,選擇最為合適的實時數據架構。
(1)Lambda 架構的核心思想是提供流處理和批處理兩種處理鏈路,從而發揮流處理和批處理的優勢,通過批處理提供全面、準確的數據,通過流處理提供低延遲的數據,從而達到平衡延遲、吞吐量和容錯性的目的。為了滿足下游的即席查詢,批處理和流處理的結果會進行合并。它適用于已有完備的離線數倉平臺,實時計算較少的場景。
(2)Kappa 架構的核心思想是通過改進流計算系統來解決數據全量處理的問題,使得實時計算和批處理過程使用同一套代碼。優勢在于統一了流批數據邏輯,但受限于處理性能,適用于以實時計算為主,全量數據吞吐量可控的場景。
3、云數據平臺演進趨勢:湖倉一體
第三個演進趨勢是湖倉一體。數據倉庫和數據湖的介紹和對比,這里不再詳細展開,在企業發展的不同階段,需要做到兼顧數據倉庫和數據湖的優勢,達到更好的數據管理和使用能力。在湖倉分體階段,本質上數據是沒有打通的,是存在壁壘的。而湖倉一體階段的核心是數據統一存儲,湖倉共享同一份數據進行計算或者分析。所以湖倉一體架構可以更加靈活的支持各種分析場景、機器學習、BI 報表、推薦算法等。
目前主流的湖倉一體方案大致分為兩大類:
(1)在數據倉庫上支持數據湖(左右結構):一般是通過在數倉中建外部表來實現,解決數據倉庫如何更加靈活,以數倉為核心,支持訪問數據湖。代表廠商有 Snowflake 等。
(2)在數據湖中支持數倉能力(上下結構):一般是以數據湖存儲為基礎,在數據湖之上構建數據倉庫的服務層,強化數據治理和數據服務的提供。代表廠商是 Databricks 等。
這兩種方案本身沒有優劣之分,需要企業結合自身的技術棧和數據需求,選擇適合企業現狀和未來規劃。
4、云數據平臺演進趨勢:云原生、存算分離
第四個演進趨勢是云原生、存算分離。Hadoop 大數據處理框架在長期的發展中一直是存算耦合的方式,在當下企業數據中心網絡進入萬兆、十萬兆帶寬,數據規模增長顯著高于數據計算需求的背景下,導致存算資源很難進行合理分配,存算耦合的優勢變得越來越弱。另外,數據湖、云原生、對象存儲等技術的發展,也都推動了企業大數據基礎設施朝著存算分離的架構方向演進。
目前主流的存算分離架構包含以下兩種:
(1)基于 Hadoop 的存算分離架構:將 Yarn 集群和 HDFS 集群分別部署兩個集群,從而實現存儲與資源管理的解耦,這種方式增加了一種額外的運維負擔、以及本地讀的性能損失,但是根據相關企業的實踐經驗來看,損失可控,對于關注大數據平臺成本、同時以私有云為主的場景下,是可以采用這種方案的。
(2)云原生存算分離架構:該架構優勢在于資源彈性化、數據云上化。在該架構下,存儲集群、資源調度、計算引擎是高度解耦的,底層存儲可以是 HDFS,也可以是 S3 協議實現等;資源調度則完全擁抱 K8S,計算引擎可以支持多種主流引擎。
5、云數據平臺演進趨勢:混合云、數據云
第五個演進趨勢是多云、混合云、數據云。對于企業來說,數據中心同時在公有云、私有云部署越來越成為常態,在此背景下要求云數據平臺具有同時管理本地機房數據和云上數據的能力,達到基于一套平臺對不同數據進行管理的效果,并且要求云數據平臺具有跨云數據管理的能力。這也必然產生企業之間、企業內部的跨云數據流動問題,需要有相應的機制進行安全保障。例如,隱私計算技術用于解決不同企業之間的數據平臺之間的數據安全流動。
三、云數據平臺技術架構
以上介紹了云數據平臺的技術演進趨勢,下面將為大家分享現代化云數據平臺的典型技術架構。
1、總體架構設計
上圖所示是一個典型的云數據平臺總體技術架構,自底向上依次分為幾部分構成:
(1)數據源:平臺支持多種類型的結構化數據、半結構化數據、非結構化數據。
(2)湖倉存儲引擎:提供大數據統一存儲能力,支持 HDFS 和對象存儲兩種分布式存儲系統,支持數據倉庫、數據湖的主流存儲格式,支持針對數據湖場景進行查詢加速。
(3)資源調度框架:支持 Yarn 和 K8S 兩種分布式資源調度能力,能夠同時支持存算耦合、存算分離的數據架構,覆蓋傳統大數據集群資源調度、云原生彈性資源調度的場景。
(4)計算分析引擎:支持 Hive/Flink/Spark 等流批引擎、TensorFlow 等機器學習引擎、TSDB/Neo4j 等專用計算引擎;支持 GaussDB/StarRocks 等 MPP 分析引擎、Presto/Impala 等聯邦查詢引擎;支持離線數倉、實時數倉、湖倉一體等開發場景。多元異構引擎通過 Hive 元數據作為元數據標準實現元數據打通和統一管理。
(5)云數據操作系統內核:提供通用的技術服務組件,銜接底層大數據引擎和上層數據開發治理平臺,這里重點展示了幾個最為核心的組件:統一元數據系統、統一引擎接入網關、統一任務調度系統、數據集成系統、跨網傳輸服務;其中,跨網傳輸服務是專門用于解決混合云等多云場景下數據高速、安全流通的基礎服務,例如,隱私計算場景下的密態數據傳輸。
(6)數據開發治理平臺:圍繞數據的采集、開發、運維、管理、服務、質量、安全等全生命周期,提供一站式全鏈路的數據開發和服務平臺。
(7)平臺管理:整個平臺的支撐系統,包含租戶、賬號、權限、項目、資源等基礎能力,通常由一個多租戶技術組件來承載實現。
限于篇幅原因,下面將主要和大家分享統一元數據系統、統一調度系統、數據集成系統這幾個核心技術組件的架構實現。
2、核心技術組件—統一元數據系統
為了能夠適用于多元異構的大數據引擎組件,統一元數據服務支持兩種能力:
第一種是與 Hive Metastore 實現打通,支持 Hive 元數據,通過 Hive 元數據為計算分析引擎提供元數據管理能力。
第二種是擴展支持更廣范圍數據源的元數據管理能力,基于計算引擎的自定義 Catalog 擴展機制,為 Spark/Flink 等引擎提供元數據能力。
(1)元數據服務管理
基于業界開源的元數據標準提供元數據能力,主要體現在與 Hive Metastore 進行交互,實現對 Flink、Spark 等計算引擎的管理。通過元數據接口實現多元異構系統的統一元數據存儲和管理,實現外界元數據主動發現、多計算引擎元數據互通、跨多源計算。
(2)元數據權限管理
其核心能力主要包括:元數據權限控制、統一數據權限、角色權限配置、訪問日志審計等。
(3)元數據治理
其核心能力主要包括:湖表管理與優化、數據生命周期管理、數據血緣、存儲分析與優化等。
3、核心技術組件—統一調度系統
調度系統主要分為兩部分:Coordinator 集群和 Worker 集群。
(1)Coordinator 集群(調度器)
整個調度系統的大腦,主要職責包括:作業調度、資源調度、作業實例生成以及作業實例下發、對外提供服務 API 等。技術架構關注點:高穩定性、高可用性、高并發。
(2)Worker 集群(執行器)
主要職責包括:負責作業的實際執行過程,可以是本地執行,也可以是提交到遠端執行;技術上核心關注多種類型任務的適配性、擴展性、資源隔離性等方面。
從功能上,需要覆蓋不同類型的作業,多種周期調度,靈活的依賴關系,補數據、斷點重跑等完備的調度功能;從性能和可用性上,調度器和執行器需要滿足分布式無中心的設計,能夠實現水平擴展和故障轉移。
值得特別說明的是,在超大規模作業調度的場景下,需要進行技術架構的進一步升級,包括通過按租戶進行 Coordinator 集群水平擴展、調度元數據分庫存儲等技術手段實現調度系統的高可用和穩定性。
4、核心技術組件—數據集成系統
數據集成系統的核心功能是實現異構數據源之間數據的高速集成,目前主流的數據集成采用 Spark、Flink 等分布式計算引擎實現數據的高效集成。
(1)在功能方面,能夠支持批量同步、流式同步、全量同步、增量同步等場景。
(2)在架構方面,由于采用的是分布式計算引擎,能夠根據數據規模決定計算資源,具有較好的水平擴展能力。
(3)在網絡方面,需要能夠針對云上、混合云的復雜網絡場景,解決跨網段的傳輸能力。
5、關鍵技術要點總結
通過以上介紹,相信大家對數新網絡云數據平臺的技術架構也有了一定的了解,其關鍵技術點主要是:異構引擎計算、統一元數據系統、統一調度系統、數據集成系統和一體化架構。
四、云數據平臺實踐案例
1、工業制造數據開發治理平臺
該案例是面向產業生態建設的客戶,其主要以數據為驅動力,加強企業的設計研發、生產制造、市場服務等,并且對企業數據資產進行全面工具化管理,針對合同、制造、適航、績效等七大業務場景提供數據服務,提升企業生產、管理、運營的效率。
數新網絡根據客戶的需求場景,為其量身打造了流批一體架構的一站式大數據開發平臺。通過異構數據采集、流批一體計算、數據服務、數據應用等功能一站式支持客戶的各個場景,大大提升了客戶的生產效率。
該解決方案是基于數新網絡自主研發的云數據平臺(CyberMeta)來實現的,該平臺是高度集成、一站式的全鏈路平臺,能夠根據客戶的業務場景和數據架構輸出定制化的解決方案,例如離線數倉、實時數倉、流批一體數倉、湖倉一體等方案。
五、問答環節
Q1:怎么實現無中心化?
A1:該問題是基于調度系統的問答。集群去中心化設計的關鍵點在于如何設計合理的數據分片策略。以調度系統為例,調度系統的元數據是存儲在 Database 中的,可以直接基于 Database 做業務元數據的分片,如不同節點負責拉取和處理不同租戶或項目的作業調度,根據業務場景選擇合適的分片邏輯。
Q2:如何實現跨不同 VPC 的打通?支持哪些云?
A2:跨不同 VPC 打通需要基于云廠商提供的 VPC 網絡打通方案來實現,并且云上部署的大數據產品支持的網絡部署模式也不完全相同。因此,需要結合大數據引擎的部署情況以及云廠商對 VPC 網絡通道方案進行合理的技術方案設計與實現。
Q3:具體介紹下統一元數據服務包含哪些功能?
A3:元數據服務核心提供兩個能力:一是構建統一的元數據服務,通過元數據主動發現與采集,實現元數據統一存儲,提供統一的元數據服務,實現存儲、計算和服務的全鏈路元數據管理能力;二是提供元數據產品化的能力,包括數據資產管理、元數據權限管理、元數據治理等能力。
Q4:整體平臺的云原生程度如何,部署架構是怎樣的?
A4:數新網絡提供的云數據平臺采用的是兩種技術路線并行:一是傳統的(非原生的)技術架構;二是云原生技術模型,基于存算分離的架構實現。兩種技術架構主要是適用于不同的客戶:對于追求穩定并且資源不敏感的用戶,我們會提供非原生的技術架構,例如通過 Hadoop+Spark/Flink 實現數據的存儲、計算;對于資源敏感且對云原生接受度高、業務場景關注資源彈性伸縮的客戶,我們會選擇云原生的技術架構提供服務。目前部署上支持私有云部署、公有云部署、混合云部署。
Q5:混合云如何實現數據安全管理?
A5:在同一租戶內部或者企業內部場景下,實現思路主要體現在以下幾個方面:一是通過 OpenLDAP+Kerberos+Ranger 等安全組件,支持存儲的安全認證和管控;二是基于統一的元數據服務,管理分布在混合云上的不同數據中心的元數據信息,并做好數據權限管理;三是敏感數據做好數據加密、數據脫敏等安全加固,完成處理后做好計算結果的保護;四是在跨網傳輸時做好數據安全傳輸。
在跨租戶場景下,數據安全管理核心需要保障不同租戶的數據不被泄露的前提下進行安全使用。可以借助于可信數據沙箱、隱私計算等技術,基于底層的大數據引擎底座和大數據操作系統內核服務,構建多方之間的聯合數據分析、聯合建模預測等數據流通機制。
Q6:流批一體如何考慮交互式分析和機器學習?
A6:流批一體核心解決的是數據處理邏輯的統一性問題,目前主要采用的是基于Flink做流批一體實時數倉。交互式分析是針對高并發、低延時實時分析處理數據的場景,例如基于交互式分析引擎+ BI 工具對數據進行多維分析和業務探索,它與流批一體計算針對的是不同的數據處理場景。至于流批一體機器學習,業界有阿里開源的 Alink 機器學習平臺,感興趣的話可以了解一下。
Q7:目前 Delta Lake 生產上可用嗎?
A7:目前這幾個數據湖引擎都處在快速迭代更新階段,因此不同版本的功能和穩定性會差異比較大。目前數新網絡在數據湖引擎方向上面向客戶輸出的是 Hudi 和 Iceberg。
Q8:Yarn 和 K8S 可以一起使用嗎?
A8:這兩種資源調度框架是根據不同客戶的場景選擇使用哪種資源調度框架。例如客戶已經有 Hadoop 集群,我們就可以構建 Spark/Flink on Yarn 的架構,直接采用 Yarn 資源進行調度。如果客戶數據已上云或者已有 K8S 集群,那么我們會建議基于 K8S 構建大數據平臺,Spark/Flink 也都可以不同的 K8S 部署模式。當然,也有少數客戶同時有兩種場景的需求,此時客戶也是可以同時使用 Yarn 和 K8S 分別管理不同類型的計算資源集群。
Q9:Analysis Ready Schemas 具體指的是什么?
A9:這個概念是指通過主動元數據收集等方式,完成數據集 Dataset 的 Schema 收集及結構化、歸一化,數據集成系統能夠基于收集的 Schema 信息,方便地定義和配置數據同步任務,完成數據的提取、傳輸和加載。
Q10:數據開發是如何使用元數據服務進行開發的?
A10:元數據服務的使用場景很廣泛,在數據開發場景中,例如 Web IDE 可以基于元數據查看庫表信息、UDF 信息、實現表名稱、表字段自動補全等功能。在數據管理場景中,可以基于元數據提供數據資產目錄,例如支持數據地圖、數據治理等功能的實現。尤其在數據治理場景下,還可以實現智能化的能力,例如通過元數據系統探查到上游表發生了變化,可以自動對下游任務進行告警,甚至是自動化處理等。
Q11:大數據存儲組件也云化了嗎?
A11:以數新網絡的產品為例,不同的客戶采用不同的存儲方案,有些客戶是云化的,有些客戶是本地的。云化的場景主要是在 S3 或者 OSS 中存儲,本地的以 HDFS 存儲為主。在混合云的場景下,數據存儲還可能是同時包含云化和本地的。
Q12:如何理解湖倉共享同一份數據?
A12:具體可以分為兩種場景:一是基于數據湖建倉,數據通過流式采集的方式匯集到數據湖中,基于湖數據進行分析、計算等。但隨著數據體量的增大和企業不同階段的發展,數據管理、標準化、規范化的訴求也不斷增加,此時結合湖倉一體的優勢,在數據湖的基礎上構建數據倉庫,以更好的實現數據的管理和處理;二是在完備數倉的基礎上打通數據湖的能力,該場景不同于湖上建倉的上下分層的結構,而是左右分層的結構,通過外表等機制支持湖和倉的打通,該場景在嚴格意義上講并沒有完全做到數據集中化存儲一份。
Q13:新一代云數據平臺等同于云原生數據湖嗎?
A13:不完全等同。新一代云數據平臺體現在很多方面,云原生只是其中一個方面,還包括多云、混合云、多元異構引擎、流批一體、湖倉一體等方面。云原生數據湖只是云數據平臺的一種技術架構和實現路徑。
Q14:Spark/Flink 上云是用的什么技術?
A14:Spark/Flink 支持多種 K8S 部署模式,包括 Standalone、Native、Operator 等部署模式,可以重點關注 Native 和 Operator 模式,能夠方便的支持動態的資源伸縮等能力。
Q15:介紹一下智能調度方案?
A15:調度智能化是一個重要方向。舉兩個例子,一是基于任務運行的歷史信息,實現任務調度策略、任務計算資源的優化,以保證整個平臺的任務調度穩定性和高性能。二是基于統一元數據服務,實現調度系統的智能化告警,甚至是任務的自動化問題修復,以此提升數據平臺的智能化和自動化運維能力。
Q16:StarRocks 和 Doris 是同一個產品嗎?
A?16:它們都屬于 MPP 數據庫,二者從功能和定位上有很大相似之處,但并不是同一個產品。Doris 是在 Apache 基金會維護,基于 Apache License 開源的 MPP 數據庫。StarRocks 是基于 Elastic License 開源的 MPP 數據庫,與國內幾個云廠商都有合作。目前數新網絡和 StarRocks 公司已經簽署戰略合作協議,雙方在產品集成、性能壓測及優化等方向均有合作。
今天的分享就到這里,謝謝大家。?