-系列目錄-
大數(shù)據(jù)架構(gòu)(一)背景和概念
(資料圖片僅供參考)
大數(shù)據(jù)架構(gòu)(二)大數(shù)據(jù)發(fā)展史
一、背景1.崗位現(xiàn)狀大數(shù)據(jù)在一線互聯(lián)網(wǎng)已經(jīng)爆發(fā)了好多年,2015年-2020年(國內(nèi)互聯(lián)網(wǎng)爆發(fā)期)那時候的大數(shù)據(jù)開發(fā),剛畢業(yè)能寫Hive SQL配置個離線任務(wù)、整個帆軟報(bào)表都20K+起步。如果做到架構(gòu)師,50K跑不掉?,F(xiàn)在市場回歸理性后:
普通崗:大數(shù)據(jù)/數(shù)倉開發(fā),實(shí)際上除超一線城市之外,尚存很多大型企業(yè)轉(zhuǎn)型期信息化、互聯(lián)網(wǎng)(物聯(lián)網(wǎng)IOT)還在發(fā)展,數(shù)據(jù)還在爆發(fā)式增長,仍大有可為。精英崗/管理崗:大數(shù)據(jù)總監(jiān)/架構(gòu)師,在重視數(shù)據(jù)的企業(yè)(一線互聯(lián)網(wǎng)大廠、數(shù)據(jù)服務(wù)廠商),年包上百萬也不少。2.行業(yè)現(xiàn)狀數(shù)據(jù)架構(gòu)在過去20年發(fā)展迅速,尤其是過去十年,幾乎每年都有新概念、新產(chǎn)品開源出來。一些新名詞爆發(fā)式展現(xiàn)出來:數(shù)據(jù)倉庫、數(shù)據(jù)集市、大數(shù)據(jù)、離線數(shù)倉、實(shí)時數(shù)倉、時空數(shù)據(jù)庫、數(shù)據(jù)中臺、數(shù)據(jù)湖、流批一體、湖倉一體、實(shí)時湖倉、商業(yè)智能(BI)等等。
數(shù)據(jù)精細(xì)化:從經(jīng)營與分析轉(zhuǎn)為數(shù)據(jù)化的精細(xì)運(yùn)營,對數(shù)據(jù)要求過程化、粒度更細(xì)。產(chǎn)品多樣性:傳統(tǒng) BI 中的 Report、OLAP 等工具開始轉(zhuǎn)向面向最終用戶自助式、半自助的產(chǎn)品,來快速獲取數(shù)據(jù)并分析得到結(jié)果。數(shù)據(jù)時效性:從 T+1 轉(zhuǎn)為近乎實(shí)時的數(shù)據(jù)訴求。平臺輕薄化:阿里自砍中臺戰(zhàn)略,把中臺拆分到各條業(yè)務(wù)線部門獨(dú)自負(fù)責(zé)。把中臺變得輕薄,更貼近業(yè)務(wù)。數(shù)據(jù)只有貼近業(yè)務(wù)才能煥發(fā)活力。底層邏輯是某業(yè)務(wù)領(lǐng)域的中心化是推薦的,有價值的。3.本文目標(biāo)本系列文章不做源碼級分析大數(shù)據(jù)框架,而是關(guān)注大數(shù)據(jù)的發(fā)展歷史、主流架構(gòu)和原理、落地流程。可作為架構(gòu)師對于大數(shù)據(jù)架構(gòu)的掃盲貼。(筆者花了2月的時間閱讀大量文章總結(jié)出來的,可能會有問題,歡迎留言交流。)
二、概念解析前面說了大數(shù)據(jù)領(lǐng)域出了很多概念:數(shù)據(jù)倉庫、數(shù)據(jù)集市、大數(shù)據(jù)、離線數(shù)倉、實(shí)時數(shù)倉、時空數(shù)據(jù)庫、數(shù)據(jù)中臺、數(shù)據(jù)湖、流批一體、湖倉一體、實(shí)時湖倉。我們就來簡單解析一下這些"專業(yè)名詞",從概念上達(dá)成一致,有一個基本的定位。
如上圖所示,這些大數(shù)據(jù)領(lǐng)域的名詞,我們可以分為2大類:1.數(shù)據(jù)服務(wù)架構(gòu)相關(guān) 2.數(shù)據(jù)庫、數(shù)倉相關(guān)。其中綠色角標(biāo)標(biāo)識具體概念的,黃色角標(biāo)標(biāo)識抽象概念的。
1.大數(shù)據(jù):廣義上的大數(shù)據(jù)概念,涵蓋數(shù)據(jù)服務(wù)、數(shù)據(jù)倉庫領(lǐng)域的概念。
1.數(shù)據(jù)服務(wù)架構(gòu)相關(guān):
數(shù)據(jù)中臺:歸屬阿里三大中臺戰(zhàn)略。但2023年4月馬云回國后,將公司按照業(yè)務(wù)線拆分,各付盈虧。同時中臺也同步拆分到各業(yè)務(wù)中去,原中臺只保留偏底層的少量系統(tǒng)。由此可見,中臺可能去中心化,大中臺變部門小中臺,更貼近業(yè)務(wù),盤活數(shù)據(jù)。Data Mesh數(shù)據(jù)網(wǎng)格:基于DDD領(lǐng)域驅(qū)動設(shè)計(jì)和服務(wù)網(wǎng)格思想的數(shù)據(jù)架構(gòu),可能會熱度增加,但落地尚早。(國內(nèi)service mesh都還沒熱起來,按照慣性data mesh最少3年后再說)。2.數(shù)據(jù)倉庫架構(gòu)相關(guān):
1.具體概念
數(shù)據(jù)庫:按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。數(shù)據(jù)倉庫:抽取或?qū)?strong>結(jié)構(gòu)化/半結(jié)構(gòu)化數(shù)據(jù),主要用于OLAP數(shù)據(jù)分析,支持管理決策。上世紀(jì)90年代,強(qiáng)制使用結(jié)構(gòu)化數(shù)據(jù)+范式建模,構(gòu)建EDW企業(yè)數(shù)據(jù)倉庫。數(shù)據(jù)集市:數(shù)據(jù)集市(Data Mart),也叫數(shù)據(jù)市場,是數(shù)據(jù)倉庫的一個子集(部門級業(yè)務(wù))。按照抽取方式可分為兩類:1)獨(dú)立型數(shù)據(jù)集市:直接從源數(shù)據(jù)抽取業(yè)務(wù)數(shù)據(jù)。2)從屬型數(shù)據(jù)集市:從數(shù)據(jù)倉庫/數(shù)據(jù)湖抽取。數(shù)據(jù)湖 :以原始類型存儲數(shù)據(jù)的存儲系統(tǒng)。倡導(dǎo):先導(dǎo)入,后處理分析使用。2.抽象概念(邏輯概念)
離線數(shù)倉:數(shù)據(jù)倉庫的延伸邏輯概念,描述的是批處理(離線計(jì)算)場景。實(shí)時數(shù)倉:數(shù)據(jù)倉庫的延伸邏輯概念,描述的是實(shí)時處理(實(shí)時計(jì)算)場景。批流一體:大數(shù)據(jù)的數(shù)據(jù)清洗ETL,可簡單分為2類:批處理(離線任務(wù))、流計(jì)算(實(shí)時計(jì)算)。批流一體講究用一套技術(shù)方案實(shí)現(xiàn)2種目標(biāo)。湖倉一體:數(shù)據(jù)在數(shù)據(jù)湖和數(shù)倉中流動,兼具數(shù)倉的穩(wěn)定性建模和數(shù)據(jù)湖的靈活特性。實(shí)時湖倉:強(qiáng)調(diào)實(shí)時計(jì)算能力的湖倉一體架構(gòu)。2.1 數(shù)據(jù)庫數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。數(shù)據(jù)庫有很多種類型適用不同業(yè)務(wù)場景,最常見的是關(guān)系型數(shù)據(jù)庫、鍵值型數(shù)據(jù)庫、時序數(shù)據(jù)庫。
2.1.1 關(guān)系型數(shù)據(jù)庫支持事務(wù)ACID特性的數(shù)據(jù)庫。常見的有Mysql、Oracle、PostgresSQL等。2.1.2 非關(guān)系型數(shù)據(jù)庫文檔型數(shù)據(jù)庫(Document databases):MongoDB。優(yōu)點(diǎn)是對數(shù)據(jù)結(jié)構(gòu)要求不特別的嚴(yán)格。而缺點(diǎn)是查詢性的性能不好。鍵值型數(shù)據(jù)庫(Key-value databases):Redis、Memcached,常用于緩存方案。列數(shù)據(jù)庫(Column-family databases):以列族的形式存儲數(shù)據(jù),如Apache Cassandra、HBase。優(yōu)點(diǎn)是查詢快速。缺點(diǎn)是數(shù)據(jù)結(jié)構(gòu)有局限性。時間序列數(shù)據(jù)庫(Time-series databases):專門用于存儲時間序列數(shù)據(jù),如InfluxDB、OpenTSDB。目前時序大數(shù)據(jù)存儲場景很多,前景極大,處于上升期。2.2 數(shù)據(jù)倉庫2.2.1 數(shù)據(jù)倉庫數(shù)據(jù)倉庫是Bill Inmon在1991年出版的“Building the Data Warehouse”一書中所提出的定義被廣泛接受:數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩(wěn)定的(Non-Volatile)、反映歷史變化(Time Variant)的數(shù)據(jù)集合,用于支持管理決策(Decision Making Support)。
面向主題的:根據(jù)使用者的需求,將來自不同數(shù)據(jù)源的數(shù)據(jù)圍繞著各種主題進(jìn)行分類整合。集成的:來自各種數(shù)據(jù)源的數(shù)據(jù)按照統(tǒng)一的標(biāo)準(zhǔn)集成于數(shù)據(jù)倉庫中。相對穩(wěn)定的:數(shù)據(jù)倉庫中的數(shù)據(jù)是一系列的歷史快照,不允許修改或刪除,只涉及數(shù)據(jù)查詢。反映歷史變化的:數(shù)據(jù)倉庫會定期接收新的集成數(shù)據(jù),從而反映出最新的數(shù)據(jù)變化。2.2.2 數(shù)據(jù)倉庫VS數(shù)據(jù)庫2.2.3 企業(yè)數(shù)據(jù)倉庫EDWEDW也是一種數(shù)據(jù)倉庫DW。上世紀(jì)90年代,使用結(jié)構(gòu)化數(shù)據(jù)+3NF范式建模,構(gòu)建EDW企業(yè)數(shù)據(jù)倉庫。
2.2.4 離線數(shù)倉2003~2006年 Google發(fā)表了三篇論文:分布式文件系統(tǒng)GFS、分布式計(jì)算框架MapReduce、分布式存儲系統(tǒng)BigTable。2006年,Hadoop正式面世。此后,以Hadoop技術(shù)棧為代表的離線數(shù)倉架構(gòu)引領(lǐng)大數(shù)據(jù)發(fā)展了十多年。這時候的處理任務(wù)基本都是批處理任務(wù)。離線數(shù)倉特指:應(yīng)對批處理(離線計(jì)算)場景的數(shù)據(jù)倉庫。如下圖所示:
早期離線數(shù)倉使用離線計(jì)算引擎實(shí)現(xiàn)批處理數(shù)據(jù)。最常用的離線計(jì)算引擎就是Hive(Hadoop技術(shù)體系)。典型應(yīng)用是定時任務(wù)跑批生成報(bào)表數(shù)據(jù)。
2.2.5 實(shí)時數(shù)倉2014年,F(xiàn)link為代表的實(shí)時計(jì)算風(fēng)靡,基于Flink為計(jì)算引擎的實(shí)時數(shù)倉躍然紙上。實(shí)時數(shù)倉特指:應(yīng)對實(shí)時處理(實(shí)時計(jì)算)場景的數(shù)據(jù)倉庫。典型的實(shí)時數(shù)倉如下圖所示:
2.3 數(shù)據(jù)集市數(shù)據(jù)集市(Data Mart),也叫數(shù)據(jù)市場,就是滿足特定的部門或者用戶的需求,按照多維的方式進(jìn)行存儲,包括定義維度、需要計(jì)算的指標(biāo)、維度的層次等,生成面向決策分析需求的數(shù)據(jù)立方體。
按照抽取方式可分為兩類:
1)獨(dú)立型數(shù)據(jù)集市:直接從源數(shù)據(jù)抽取業(yè)務(wù)數(shù)據(jù)。
2)從屬型數(shù)據(jù)集市:從數(shù)據(jù)倉庫/數(shù)據(jù)湖抽取。
數(shù)據(jù)倉庫VS數(shù)據(jù)集市2.4 數(shù)據(jù)湖2.4.1 數(shù)據(jù)湖隨著互聯(lián)網(wǎng)->移動互聯(lián)網(wǎng)->IOT物聯(lián)網(wǎng) 這一條商業(yè)智能發(fā)展線路的改變,產(chǎn)生了大量的照片、視頻、文檔等非結(jié)構(gòu)化數(shù)據(jù)、時序數(shù)據(jù)。數(shù)據(jù)湖誕生了:允許用戶以任意規(guī)模存儲所有結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),并支持對數(shù)據(jù)進(jìn)行快速加工和分析。用戶可以按原樣存儲數(shù)據(jù)(無需先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理),并運(yùn)行不同類型的分析(從控制面板和可視化到大數(shù)據(jù)處理、實(shí)時分析和機(jī)器學(xué)習(xí),以指導(dǎo)做出更好的決策。
2.4.2 數(shù)據(jù)倉庫VS數(shù)據(jù)湖數(shù)據(jù)倉庫的成長性很好,而數(shù)據(jù)湖更靈活。數(shù)據(jù)倉庫支持的數(shù)據(jù)結(jié)構(gòu)種類比較單一,數(shù)據(jù)湖的種類比較豐富,可以包羅萬象。數(shù)據(jù)倉庫更加適合成熟的數(shù)據(jù)當(dāng)中的分析和處理,數(shù)據(jù)湖更加適合在異構(gòu)數(shù)據(jù)上的價值的挖掘。
=========參考=============
How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh
標(biāo)簽: