全面解析湖倉一體與大資料演進歷程|內含技術工具選型策略

語言: CN / TW / HK

雲智慧 AIOps 社群是由雲智慧發起,針對運維業務場景,提供演算法、算力、資料集整體的服務體系及智慧運維業務場景的解決方案交流社群。該社群致力於傳播 AIOps 技術,旨在與各行業客戶、使用者、研究者和開發者們共同解決智慧運維行業技術難題,推動 AIOps 技術在企業中落地,建設健康共贏的AIOps 開發者生態。

大資料架構的演進歷程

對於大部分人來說,大資料架構所涉及的概念及術語繁多且複雜。如何將這些混亂的詞彙轉化為有機思維,使其可以通過橫向切面、縱向切片的方式呈現出來是我們必須思考的一個問題。本章將通過對大資料核心架構型別進行梳理,以及通過對不同階段基礎選型工具的講解,帶大家詳細瞭解大資料架構的演進歷程。

基礎知識介紹

MPP 架構 & 分散式架構

  • MPP 架構

MPP 大規模並行處理結構 (Massivly Parallel Processing)指將任務並行分散到多個 SMP 節點,每個節點計算完成後,將各自部分的結果彙總在一起得到最終的結果。

由於 MPP 在資料庫領域應用較為廣泛,所以在事務一致性方面要求比較高。從總體來講,MPP 的一致性>可靠性>容錯性。在外部的一些情況下,在能保證 MPP 一致性的時候必須保證一致性,否則就失去了資料庫定位的這個本質。

  • 分散式架構

分散式架構 (Hadoop 架構/批處理架構)指叢集中各節點實現自治,即獨立執行區域性應用;MPP 架構無法做到節點自治,它只能作為整體對外提供服務。分散式架構 (Hadoop 架構/批處理架構)叢集中各節點實現自治,即獨立執行區域性應用;MPP 架構無法做到節點自治,它只能作為整體對外提供服務。

分散式架構更多關注的是“分而治之”,它要保證的是整體節點之間的一個平衡,所以從整體優先順序來講,分散式架構的容錯性>可靠性>一致性。

總體來講,我們平時瞭解到的分散式架構一般指的就是 Hadoop 系列,叢集以及一些資料庫則指的是MPP。

OLAP 面向資料倉庫與OLTP面向事務資料庫

線上分析處理 OLAP(On-Line Analytical Processing) 應用於資料倉庫領域,支援複雜查詢的資料分析,側重於為業務提供決策支援(DSS);線上事務處理 OLTP(On-Line Transaction Processing) 應用於線上業務交易系統,支援頻繁的線上操作(增刪改)、事務特性。

總體來講,OLAP 側重於事務的計算、 BI 分析、智慧決策;而 OLTP 更多地是保證事務的一致性,比如線上互動系統中的增刪改操作。

分散式架構如何“拆層”

分散式架構分為分散式訊息佇列層、分散式計算引擎層、分散式儲存架構層以及分散式SQL引擎層和分散式配置管理層。本章中的資料架構側重點則會統一集中在分散式計算、分散式儲存和分散式 SQL 引擎三大塊,下面我們將從分散式儲存切入講解。

Hadoop生態環境

由於上述所說的分散式架構和批處理均是基於 Hadoop 生態環境,所以上文所描述的分層邏輯也可以套在 Hadoop 生態中。底層 HDFS 就是剛才所說的分散式儲存,中間層 MapReduce 就是分散式計算,而Hive 指的就是分散式 SQL。

作為一個先驅型的技術工具,Hadoop 被廣泛應用於業界各個領域之中。2004年 Hadoop 釋出了第一個版本,即 HDFS 和 MapReduce,直到 2011 年 Hadoop 1.0.0 版本正式釋出,在此期間,HDFS 和MapReduce 也完成了之前基於 MPP 資料庫做不到的那些能力,比如多少個節點計算多少個數據量。時間跨度從 2011 年至 2016 年,版本跨度從 1.0.1 到 2.7.0,短短五年時間,Hadoop 更新了將近 3 個大版本,這段期間可以說是 Hadoop 的爆發期。而從 2017 年到 2021 年,Hadoop 只跨越了 3 個小版本,即從 3.0.0 到 3.3.1。從上述的版本釋出頻率我們可以看到 Hadoop 生態系統是一直在持續不斷地完善。

MPPDB 與 Hadoop、傳統數倉庫特性對比

下面我們將對 MPPDB 與 Hadoop 以及傳統數倉庫進行橫向對比。 MPP 對應的是資料庫,Hadoop 對應的是分散式叢集,兩者之間是有共性的。從儲存側來講,MPP 的運維複雜度、擴充套件能力以及運維成本等特性基本都處於中等,而 Hadoop 整體的效能都是比較優勢的,但由於 Hadoop 對技術的要求較高,所以對於一些初創公司或者技術沉澱不足的一些企業,也是一種挑戰。

MPP 主要實現兩個功能點,一是消除共享資源,二是支援平行計算。MPP 並行結構加上 HDFS 分散式儲存,原則上就是一個基於 Hadoop 生態的 Hive 分散式 SQL,達到了剛才所說基於 HDFS 並行處理的分散式架構能力。

總體來講,MPP 和 Hadoop 之間既有關聯又有區別,區別的唯一性就是 Hadoop 有自已完整的生態。

實時計算類選型特性對比

ClickHouse 是基於 OLAP 場景需求出發,全新的、MPP 架構風格的高效列式資料庫管理系統,實現了資料有序儲存、主鍵索引、稀疏索引、資料 Sharding、資料 Partitioning、TTL、主備複製等豐富功能,屬於分析型資料庫。

Elasticsearch 是一個分散式、高擴充套件、高實時的搜尋與資料分析引擎。它能很方便的使海量資料具有搜尋、分析和探索的能力。通過充分利用 Elasticsearch 的水平伸縮性,使價值密度極低的海量資料在生產環境變得更有價值。

HBase – Hadoop Database,是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBase 技術可在廉價 PC Server 上搭建起大規模結構化儲存叢集。

Druid 是一個為 OLAP 查詢需求而設計的開源大資料系統,Druid 提供低延時的資料插入、實時的資料查詢能力。

分散式 SQL 引擎特性對比

Spark(SQL on Hadoop)中使用 Scala 語言開發的類 MapReduce 通用並行框架,擁有 MapReduce 所具有的優點,專為大規模資料處理而設計的、快速通用的計算引擎。

注:MapReduce 面向磁碟、Spark 面向記憶體。

大資料架構歷程

  • 批式架構

批式大資料架構也稱離線大資料架構,具備大資料處理能力,但資料處理的時效性太差。

  • 流式架構

流式大資料架構相比批式大資料架構,刪除了 ETL 過程、通過資料通道得到資料流,以訊息佇列的方式將處理結果推送至資料消費者;捨棄了離線批量處理模式,但資料儲存週期較短;若歷史資料場景或複雜資料場景參與計算時,實現難度非常大。

  • Lambda 架構

Lambda 資料架構在批式大資料架構基礎上增加了實時計算的鏈路,由資料服務層完成離線與實時結果的合併,流處理計算指標時,批處理依然計算,最終以批處理為準,即每次批處理計算後會覆蓋流處理的結果。

  • Kappa 架構

Kappa 資料架構在 Lambda 架構基礎上進行了優化,刪除了批處理層(Batch Layer)的架構,將資料通道以訊息佇列進行替代;使用流式重新處理歷史資料的吞吐能力會低於批處理,需要增加計算資源來彌補。

  • 實時 OLAP 架構

實時 OLAP 變體架構是對 Kappa 資料架構的進一步演化,是將聚合分析計算由 OLAP 引擎承擔,減輕實時計算部分的聚合處理壓力。

  • 優點:自由度高,滿足資料分析師的實時自助分析需求,減輕了計算引擎的處理壓力。
  • 缺點:訊息佇列中儲存了存量資料,於是將計算部分的壓力轉移到了查詢層。

資料架構特性對比

下圖為具有演進相關性的 Lambda、Kappa、實時 OLAP 變體架構對比。

如何理解湖倉一體

湖倉一體架構演進史

湖倉一體首先就是資料倉庫,它要做的是把資料進行分層,需要將資料先清洗再入倉,此時,所有的資料已經失去了原本的價值;而資料湖是將資料先入庫,隨後再根據業務需要對資料進行載入轉化,其優點在於保證需求變化的同時,任何的資料在底層依然可以儲存下來,這也是資料湖的一個價值這也是資料湖的重要價值。

而湖倉一體就是將資料湖與資料倉庫進行結合,資料湖是對儲存層資料多樣化能力的完善。

  • ETL 抽取-轉換-載入(Extract-Transform-Load),先清洗(消耗記憶體)再入庫 。
  • ELT 抽取-載入-轉換(Extract-Load-Transform),先入庫(臨時表)再清洗 。

資料湖與資料倉庫的互補關係

資料湖本身支援多種計算引擎以及儲存計算分離,保障了儲存的時候資料是完整的,計算的時候和儲存完全沒關係,可以按照計算需求去載入資料。而資料倉庫依然保持面向主題、面向整合、穩定性以及動態性。

技術工具選型策略

湖倉一體設計時需要考慮以下因素;

  • 是否滿足業務需求:技術選型並非只要求大而全,而是根據業務需求進行匹配,選擇功能覆蓋度最合適的;

  • 關注成熟度/流行度:結合開源社群活躍度,具體可檢視 Github Star 數;

  • 技術棧落地成本:結合架構複雜度及已有開發經驗,把控使用成本;

  • 技術棧一致性:結合本公司技術棧的一致性、相關性,即程式碼易維護性;

  • 業界使用案例:複用前任廠商的填坑經驗

下圖為各技術工具成熟度/流行度資料列表:

資料湖工具選型特性對比

Hudi(Hadoop Upserts anD Incrementals)是基於 Spark2.x 管理儲存在 HDFS 上的大型分析資料集,支援在 Hadoop 上執行諸如更新、插入和刪除之類的操作, 支援:讀優化表(Read Optimized Table)和近實時表(Near-Real-Time Table)。

Iceberg 是一個面向海量資料分析場景的開放表格式(Table Format). 定義中所說的表格式(Table Format), 可以理解為元資料以及資料檔案的一種組織方式, 處於計算框架(Flink, Spark...)之下, 資料檔案之上。

Delta Lake 是一個儲存層,為 Apache Spark 和大資料 Workloads 提供 ACID 事務能力,其通過寫和快照隔離之間的樂觀併發控制(Optimistic Concurrency Control),在寫入資料期間提供一致性的讀取,從而為構建在 HDFS 和雲端儲存上的資料湖(Data Lakes)帶來可靠性。

湖倉一體藍圖方案

基於 Hadoop 的 HDFS 儲存,不僅可以儲存結構化資料,還可以儲存非結構化資料,並且對於歷史資料和實時資料,在 Hive 上可以進行全量儲存和以後的資料回溯。

湖倉一體方案預研理由

  • Hudi 整合能力:Hudi 擁有良好的 Upsert 能力以及支援對接 Flink 增量處理的框架。

  • Flink 技術沉澱:雲智慧自己維護了部分 Flink 引擎開發,已支撐資料產品的實時計算。

  • 應對突發需求:對於突發的業務需求,可使用即席查詢 Presto 滿足查詢。

  • 滿足近期目標:支援實時獲取資料到 Hive,間隔時間在分鐘級別,並支援 Upsert。

瞭解更多

雲智慧以開源集輕量級、聚合型、智慧運維為一體的綜合運維管理平臺 OMP(Operation Management Platform) ,具備納管、部署、監控、巡檢、自愈、備份、恢復等功能,可為使用者提供便捷的運維能力和業務管理,在提高運維人員工作效率的同時,極大提升業務的連續性和安全性。

點選下方地址連結,歡迎大家給 OMP 點贊送 Star,瞭解更多相關內容~

GitHub地址:http://github.com/CloudWise-OpenSource/OMP

Gitee地址:http://gitee.com/CloudWise/OMP

微信掃描識別下方二維碼,備註【OMP】加入AIOps社群運維管理平臺 OMP 開發者交流群,與 OMP 專案 PMC 面對面交流~