作者:鄭鍇 - 阿里雲高級技術專家,張晨暉 - 阿里雲產品專家
最近幾年數據湖熱度很高,當搞大數據的同學聚在一起時候,經常會談到這方面的話題,可能有的同學說“我們在做 Hudi 數據湖,你們用 Delta 還是 Iceberg?”,也會有同學說“我在阿里雲上搞了一個OSS數據湖”、“什麼,你們數據湖用 HDFS?”、“我們在阿里雲上搞 JindoFS,優化數據湖”、“最近搞了個湖倉一體”等等的討論。
數據湖的相關討論可以說是千人千面,每一個技術同學面對數據湖的時候,根據自己不同的工作背景,都可能有自己不同的理解,那麼,數據湖到底意味著什麼呢?可以先了解一下數據湖的三要素。
數據湖核心三要素 :
1、包羅萬象的數據
- 不是指數據庫,也不是數據倉庫;
- 而是指各種數據,包羅萬象。非結構化數據、半結構化數據和結構化數據。
2、理想的存儲
- HDFS? 不是。
- 對象存儲?It depends。
- 實際上,公共雲對象存儲才是。
- 為什麼?海量,彈性;分層、歸檔,低成本;安全,合規。
3、開放的計算
- 數據廣泛可觸達,充分挖掘價值。
- 豐富和開放的計算,不止 BI,AI。
- 針對計算場景的優化、加速,性能不打折扣。
那麼到底什麼是雲原生數據湖呢?
從理念上來講,就是按照雲原生的理念構建出來的數據湖存儲系統。運用數據湖構建產品快速搭建出來的,基於oss對象存儲系統挖出來的數據湖。然後基於這樣的訴求,我們可以做BI和AI的分析。那麼我們以阿里雲上的雲原生數據湖為例,可以看下雲原生數據湖的上雲途徑。
可以看到,我們可以利用阿里雲數據湖構建Data Lake Formation 、統一的對象存儲OSS快速搭建出一個數據湖。
那麼利用這個數據湖,我們可以用數據集成DateHub和 Data Lake Formation 提供的數據入湖的手段,把各種數據源做數據入湖的處理。那麼我們最主要的業務目的是什麼?是利用上面各種開放豐富的計算來做分析。
我們提供了阿里雲自研的MaxCompute這種分析產品,還有E-MapReduce這個開源大數據全家桶的分析產品,來做BI的分析。我們可以利用阿里雲的PAI、EMR DateScience 這種AI的套件來做AI的智能分析。
我們剛才說了這個計算是非常開放以及豐富的,如果你在阿里雲上有一個自建的Hadoop,或是CDH這種集群,同樣可以對接到數據湖,然後進行分析。戰略上面我們還合作了大量的第三方產品,比如Databricks數據洞察,同樣可以對接到數據湖進行分析。
接下來,我們再來看一下數據湖的構建和分析的過程,我們提供了怎樣的支持。以下講的是數據湖構建,我們專門提供了這樣的一個數據湖構建產品Data Lake Formation。
它的核心就是維護數據湖的元數據,數據湖不光是包括數據本身,還包括數據的元數據。數據的元數據是在Data Lake Formation中,統一管理和存儲的。好處是避免了各個計算產品自己來維護文件的元數據所帶來的不一致性。統一集中來管理的話,我們還可以做集中的訪問控制上的權限或日誌審計。Data Lake Formation對接的各種數據源,比如MySQL、Kafka等,提供了離線和實時入湖的方式。目前我們對接的數據湖的格式,有Delta和Hudi。
接下來重點講解一下,我們在分析產品上,利用開源大數據分析的套件E-MapReduce來做數據湖分析。
EMR其實是一個開源大數據全家桶的產品,以上只是列出了數據湖分析上的相關支持。在分析引擎和OSS數據湖之間,我們還提供了數據湖加速的支持。我們有了Alluxio這種開源的加速器,同時也有自研的JindoFS加速器。JindoFS對OSS數據湖我們提供了全面對接開源分析引擎的支持。
整個EMR的產品可以run在ACK上,也可以run在ECS上面,利用ECS和ACK的彈性伸縮的能力,我們讓整個數據湖分析變得低成本。
剛才提到,在EMR產品套件中,有了數據湖加速的這一層次,接下來重點講一下JindoFS和JindoTable雙加速的能力。
JindoFS主要是在文件系統層面,利用計算側的磁盤資源,對遠端的OSS數據做緩存加速,從而大幅度提升Hive、Spark、Presto的分析處理能力。JindoTable和JindoFS相當於是相互配合,它主要是在表分區這個層次上面,去做緩存去做加速。然後對Parquet、ORC這種格式做了Native的優化,從而更進一步提升了上面提到的分析引擎的處理能力。
除了性能優化,我們知道數據湖還需要做成本優化,因為裡面保存了大量的數據。JindoTable和JindoFS同樣互相配合,我們做了分層和歸檔。利用OSS的基礎能力,我們維護數據的熱度、冷度,然後通過Jindo的相關命令,可以對數據進行緩存、歸檔和分層這些功能。利用分層的能力,我們可以看到假定一個用戶,如果它有10PB的數據,以HDFS這種方式來做存儲方案,成本會達到上百萬。但如果我們換用OSS數據湖的方案,我們可以把大量的冷數據放在歸檔,整個存儲成本可以大幅度降低。
接下來,我們來看一個數據湖的最佳實踐。來源於上海數禾科技的大數據架構師程俊傑先生的一篇在阿里雲社區分享的案例文章。以下經過他的同意,對他的文章進行了一些摘要和加工。
上海數禾科技在某雲上面使用的是CDH+EMR,雲上混合的架構。它遷移到阿里雲之後,是按照數據湖的理念做的設計,充分考慮到他們不同的業務需求,以及權限控制和脫敏相關的部分。
經過過去的一年,他們在成功地遷移到阿里雲數據湖架構上之後,又做了EMR的治理和OSS的治理,這些治理方面的經驗在文章裡面都做了大量的分享。最近他們又升級到了湖倉一體的架構,把元數據用Data Lake Formation來統一管理,然後組合使用EMR和MaxCompute等多個阿里雲計算產品來對數據湖進行分析。
以上是數禾在阿里雲上面的數據湖架構,我們可以看到它在OSS的數據湖上面,其實有多個Bucket。在這上面,利用JindoFS提供的OSS透明的緩存加速能力,然後有多個EMR集群分別去按照不同的業務訴求來做分析。面對這麼多集群,他們的調度是用的目前比較流行的大數據調度平臺Airflow。
剛才提到,數據湖的一個非常大的價值是把存儲成本和計算成本降下來。計算成本其實主要是靠彈性伸縮來降。在EMR裡面,可以去設置彈性伸縮策略和彈性伸縮規則。彈性伸縮規則結合YARN的調度能力,可以看到什麼時候該擴集群,什麼時候該縮集群。包括提前伸縮的時間都可以做設置,真正的做到需要多少,就用多少。把計算成本降到最低。這個跟好幾年前做的Hadoop集群實戰,是完全不一樣的。
以上主要介紹瞭如何構建雲原生數據湖,那麼如此多的數據結構化、半結構化、非結構化的存儲在你的數據庫和數據倉庫裡,這麼多的數據應該如何來管?先來看一看企業在管理數據的過程中又面臨哪些問題?
1、數據孤島:
- 數據不集中,重複存儲,重複計算
- 數據上雲門檻高,數據存儲成本高
2、數據開發和運維成本高:
- 自研數據平臺難度大,成本高
- 開源工具擴展性,穩定性難以保證
- 數據質量,運維成本難以匹配業務快速增長需求
3、數據共享應用不易
- 數倉中的數據對各類BI或應用不便
- 數據存儲分散,分佈在數倉,數據湖,數據庫中
- 數據難以共享和統一管理
4、大規模數據難以治理
- 隨著數據規模的不斷增大,數據治理越發難以進行,數據質量、監控、安全逐漸成為瓶頸
針對這些問題,阿里雲的DataWorks產品提供了一站式的數據開發治理的能力。
它構建於不同的計算和存儲引擎之上,包括阿裡雲自研的大數據服務MaxCompute,開源的大數據平臺EMR/CDH,支持實時計算、圖計算,交互式分析。它構建在OSS 、HDFS、DLF之上湖倉一體的體系下,為大家提供實時離線的數據集成、數據開發,並且通過統一的調度任務和統一的元數據服務,為大家提供了各種各樣的數據治理的能力。包括數據質量,智能監控,數據地圖,數據安全,資源優化等。通過統一的元數據服務,為企業提供從數據平臺到業務系統最後一公里的能力。
最後我們可以通過open API把我們整個平臺開放給客戶,也就是說您可以在不看到DataWorks界面的情況下,深度集成整個DataWorks的產品能力。
那這樣一款產品它哪些核心能力呢?可以概括為以下幾點:
- 數據集成
- 數據開發
- 數據治理
- 數據服務
首先,它通過數據集成實現了數據的入倉入湖。第二,數據在進入了我們的系統之後,數據開發它會通過支持多引擎的能力對這些數據進行精細化的處理和開發。第三,數據治理在基於多引擎湖倉一體的體系上提供統統一的元數據服務,使您對您的數據可以實現更易用和可用性。最後,通過數據服務使這些數據可以一站式的直達到你的系統中。
我們首先來看一下數據集成,我們這裡一共提供了50多種不同類型數據之間的相互的同步,比如說關係型數據庫、大數據存儲、消息隊列以及非結構化的數據,而且同時我們提供了離線和實時的入倉和入湖。
當我們的業務數據通過數據集成進入到我們的計算和存儲引擎之後,DataWorks提供實時離線的開發,通過支持多引擎的能力以及跨引擎之間的相互調度的能力,根據各種引擎的性能,你可以選擇最優的最合適你的調度引擎,把它們集合成一個整體,對這些數據進行處理和開發。最後這些數據通過我們的數據服務提供給各種BI的分析的工具來展示數據報表和圖像的分析。
上圖也是一個簡單的基於EMR的數據開發的調度的價格圖。我們可以看到它可以支持EMR的不同類型的作業,同時我們還支持一系列的邏輯業務節點,通過支持這些邏輯業務節點,我們可以支持循環、順序、分支、跨地域、依賴等等,並且提供這種按日的千萬級的大規模的調度來符合企業這種複雜的邏輯業務結構。
這些數據經過了精密的數據開發的基礎上,隨著企業業務的不斷發展,數字化轉型的不同階段,那麼大家對數據治理也呈現了不同層次的不同類型的需求,我們在數據實時的正確產生的基礎上,我們對於數據整個的共享性、易用性,好理解,數據安全,敏感數據識別等等,以及你的成本優化,都有了一些更高層次的需求。
那麼DataWorks在各種各樣的數據治理的需求方面,又提供了哪些能力來可以幫助你的企業管理數據、治理數據呢?
首先在時效性方面,我們有一個全方位的運維和智能監控系統,並且通過各式各樣的比如說短信、郵件、釘釘、電話來以及移動運維對你進行及時的告警,使您可以在任何地方的任何時間,只要打開你的手機,就可以對你的線上任務進行及時的處理。
以上可以看到,這是一款DataWorks獨創的,並且已經獲得了國家專利的智能基線監控技術。可以看到上圖的K節點,你只要關心你整個數據最後產出的節點,而無需關注它的上游節點,DataWorks會非常智能的幫你搜索遍歷它的上游節點,並且找出它的關鍵路徑,在關鍵路上的每一個節點設置相應的智能監控和告警,這樣就可以提前的發現問題,及時干預。
我們這裡提供30多種的內置模板,並且提供自定義模板的設置,可以讓你對你的任何一張報表根據你的規則設置它的校驗規則,同時它跟剛才的數據開發流程其實是緊密結合的,也就是說你在你的任意一個業務節點,對你的任意的一張表可以設置相應的規則,當你的任務會調度到這個節點的時候,這個規則也同時被觸發。你也可以根據不同的級別來設置各種各樣的報警,甚至去阻塞下游業務,這樣就可以防止髒數據的產生。
數據在已經以高質量、高效生成的基礎上,DataWorks提供對湖倉一體不同引擎的元數據的統一的採集以及管理。基於這些統一採集管理的原數據,就可以提供全域數據的檢索,數據詳情的分析、數據的熱度、數據的產出信息以及非常精確的血緣關係。基於這樣血緣關係,你可以對數據進行溯源以及進行各種各樣的數據分析,你的數據就會變得更好理解,更好用更好查找。
我們除此以外還提供了一個全鏈路的數據安全的保護。數據安全領域我們提供了租戶隔離Role Base的權限管理,操作行為的日誌,並且跟開源的Kerberos/LDAP是打通的。除此以外,對整個數據的開發鏈路其實也是有一個全鏈路的安全保障的,從數據傳輸開始,比如說我們可以對數據傳輸數據源的訪問進行控制,在數據存儲的過程中可以進行存儲加密,數據的備份和恢復,在數據處理的過程中可以進行更細力度安全管控,隨後的數據交換數據下載,然後會進行相應的接口的鑑權,以及進行數據脫敏的處理。
企業的資產隨著數據量的逐漸的增大,那麼企業對資產的管控也需要需要有越來越高的需求。DataWorks在基於以前數倉的基礎上,也逐漸的把它拓展到剛才我們講的整個的數據湖場景,它可以基於湖倉一體,逐步把整個企業全域的資源盤點和規劃,優化給到客戶,使成本得到非常精良的控制。
下面我們以EMR為例子,看一下在EMR這個產品上,到底是怎樣深度結合,進行全域的數據開發和治理的。
某一個遊戲廠商,它的數據進入了阿里雲的整個系統之後,進入EMR集群先進行消息隊列,然後進入EMR集群進行相應的計算和處理,通過實時計算、交互式分析,最後給到用戶大數據的BI的展現。
我們可以看到在整個鏈路過程中,DataWorks會與整個我們鏈路的各種各樣的數據存儲和計算引擎進行深度的結合,在全鏈路去cover整個數據開發和治理的過程。
以上是一個簡單的demo,大家可以看到DataWorks在EMR上,我們是怎樣進行集成的。(具體相關的介紹可以在文章開頭戳視頻鏈接,觀看具體講解)
最後總結一下,DataWorks在湖倉一體的基礎上,支持多引擎,提供一個全域的數據開發和治理的平臺。通過這款產品可以幫助企業最終實現您的一切業務數據化,一切數據業務化的功能。
對數據湖感興趣的同學歡迎掃碼加入以下釘釘交流群,不錯過每次直播信息、探討更多數據湖 JindoFS+OSS 相關技術問題!
後續我們會也在EMR釘釘群定期推送精彩案例,邀請更多技術大牛直播分享。歡迎有興趣的同學掃下方二維碼加入釘釘群進行交流和技術分享。關注公眾號,鎖定每週精彩分享內容!