云原生数据湖分析DLA 2020年年度总结
一、概述
2020年黑天鵝事件不斷出現,疫情給人們的生活也帶來了改變。在后疫情時代,伴隨著云原生技術的發展,企業尋求更加敏捷、更加靈活的數據分析方案,數據湖剛好滿足這核心訴求。有不少同學問筆者,Hadoop與數據湖有啥區別?筆者認為,其一:數據湖分析支持的數據格式包括非結構化與半結構化。雖然HDFS可以存圖片,但是一般還是有視頻&圖片的專門的服務器的,原因存儲計算不分離情況下,大數據硬件存圖片不經濟; 其二:數據湖往往跟云結合更加緊密,因為存儲計算分離以后,存儲與計算可以單獨發展。計算可以跟業務系統錯峰調度,再結合不同公司計算任務的差異,可以增強彈性能力。其三:數據湖的技術與數據倉庫進一步融合,如Hudi支持數據實時寫入、事務與更新。
阿里云云原生數據湖分析DLA,在這樣的背景下誕生,歷經兩年的發展,充分結合 云、Presto、Spark、Hudi等優勢,構建出了新一代的大數據方案。目前DLA已經服務了數千客戶,不少公司的核心數倉也是基于DLA;DLA也集成在友盟、CDN、DBS(數據庫備份)、IOT、QuickBI等產品中,間接服務了數萬客戶;
我們也重視開源與商業合作,目前,DLA是Apache PrestoDB基金會的代表;與Alluxio達成戰略合作,共同構建緩存系統;團隊有數位Apache的Committer,一起參與貢獻開源社區。
本文主要概述講述下 阿里云云原生數據湖分析(簡稱DLA)為了應變分析之大變局,在2020年主要實現的一些事情。數據湖分析DLA官網鏈接:https://www.aliyun.com/product/datalakeanalytics
云原生數據湖分析的基本架構如下:
DLA分為DLA Meta、DLA Lakehouse、DLA Presto、DLA Spark 四大模塊。在20年我們重寫了元數據模塊,增加了元數據與數據源之間的同步模塊,針對OSS可以發現元數據,簡化用戶的配置管理;在數據管理Lakehouse方向上支持了RDS MySQL實時同步到Hudi,目前正在產品化中;新增了DLA Serverless Spark模塊,支持按照Job計費,重寫了接入層,實現了多租戶的UI,并且針對OSS做Rename等內核性能優化;DLA Presto改進了掃描版的穩定性,增強內核性能,實現了CU版本的產品形態,并且保持掃描量版本與CU版本統一架構。接下來分模塊講述:
二、DLA Meta
對比開源的Hive元數據,DLA Meta是兼容Hive meta的,支持云上15+種數據數據源(OSS、HDFS、DB、DW)的統一視圖,引入多租戶、元數據發現等能力。DLA Meta追求邊際成本為0,免費提供使用的。
- 企業級權限管理:支持多賬號的權限與隔離,可以簡單的GRANT&REVOKE對子賬號賦予權限,Meta會托管OSS與DB賦予的權限,DLA Presto與DLA Spark通過內部的API拿到相應的權限,訪問OSS與DB數據庫;
- 開放訪問:通過OpenAPI可以直接拿到Meta的信息,客戶自建的Spark集群也可以使用DLA Meta;
- 擴展性強:MetaServer是無狀態的服務,可以擴展多個集群;在元數據存儲采取的是多庫存儲,可以無限擴展;
- 元數據發現:支持OSS 數倉模式發現,SLS投遞到OSS數據發現,OTS元數據自動同步。支持客戶一鍵發現元數據,這些元數據也會自動維護。 典型的場景是:用戶的APP可以不斷往OSS寫新的Partition,元數據發現服務會自動同步Partition。
三、DLA Lakehouse
數據湖有著巨大的低成本、擴展性的優勢。但是在數據組織與維護方面,天然比數倉有著不足。不少客戶通過代碼維護一套數倉體系:基本流程為準備數據,再通過Spark&Hive清洗,構建離線的數據倉庫。 DLA目前在基于Apache Hudi實現DLA Lakehouse,主要目標是提供高效的湖倉,基本的架構圖如下圖所示:
此模塊已經有不少客戶使用,目前還缺乏產品化,是以方案提供。在接入層已經支持RDS MySQL通過DTS實時寫數據到Lakehouse中,接入層全量&增量模塊均是直接調用DLA Serverless Spark服務。
- 實時寫入:支持 MySQL數據延期10分鐘直接寫入到OSS的,寫入后,可以支持DLA Serverless Presto與DLA Serverless Spark訪問。
- 自動合并小文件:支持小文件的自動合并,接入層對接的是DLA Serverless Spark服務,目前也正在研發彈性的Compaction機制。
- 支持多庫多表:相對于社區支持單庫單表,我們可以一次性把RDS MySQL實例內所有的庫與表實時同步到OSS上,并一條鏈路支持超過5000+張表的同步;
目前Lakehouse發展比較快,內核模塊Hudi我們也在跟社區保持緊密的合作,DLA也在加緊產品化中,提供在產品界面點按鈕就可以使用的體驗,并且不斷優化數據源到鏈路到格式的性能;
四、DLA Serverless Presto
DLA Serverless Presto是基于Apache PrestoDB的研發的,主要是做聯邦交互式查詢與輕量級ETL,2020年改造后架構如下:
- 提供獨享集群:在掃描量情況下,客戶不好評估成本,需要財務固定成本;一些如Cache、訪問Hive、UDF等在掃描量無法實現;DLA推出了Presto獨享集群版本。獨享版本的資源是獨享的,財務成本基本固定的(獨享集群也可以按時彈性),比較適合大客戶使用。掃描量版本比較實現查詢頻率比較低的客戶使用。在獨享集群版本中,我們核心提供了 如下能力:
- DataCache:與Alluxio合作共同推出了DLA Presto的DataCache,具體機制參考:https://developer.aliyun.com/article/781291,在IO密集類型中,查詢性能可最高提升10倍;
- 分時彈性:掃描量是按照Query計費的,在獨享集群下,也是可以彈性的。分時彈性就是用戶可以設置時間段來付費;
- 特有的數據源:如支持Hive等數據源等、Cassandra等數據源;
- 更快的性能提升:目前也在實現如Query Result Cache、Fragment Result cache、針對性算子下沉;
- 支持更多的連接器:過去一年我們新增支持了Hive、HDFS、KUDU、OTS ParallelScan、Cassandra、ElasticSearch、ADB PG、Oracle、Druid等;
- 穩定性改進:接入層打通底層ACK彈性調度、DLA網絡管控、SLB管控等鏈路,實現被動宕機時從之前3分鐘到3秒內快速恢復,主動業務發布時只中斷1次連接、并在1s左右迅速實現連接切換等能力; Multi-Master實現Coordinator和Worker的優雅關閉,關閉時會等待所有SQL執行完,同時又不接受新SQL,使得我們在升級的時候從之前的用戶SQL全掛,到現在用戶的SQL可以不被影響,做到客戶無感升級;算力租戶隔離可以實時控制每個用戶的算力,算力過度使用時會實時懲罰的機制,解決了大SQL會導致整個集群過載的問題;
- 易用性:SQL診斷界面,我們也在不斷改進,也是接下來的重點改進方向。
未來,我們將充分與社區結合互補,不斷提升性能,支持更多的功能,提供更加方便的診斷工具,做到云上的第一的聯邦交互式查詢引擎;
五、DLA Serverless Spark
Spark是最流行的大數據計算引擎,DLA支持Spark主要是為在湖上做大規模的ETL,并支持流計算、機器學習;比傳統自建Spark有著300%的性價比提升,從ECS自建Spark或者Hive批處理遷移到DLA Spark可以節約50%的成本;DLA Spark架構如下圖所示:
- 完全支持開源的Spark語法,獨享的運行環境:DLA Serverless Spark完全兼容開源的Spark語法,支持Python專享的運行環境,支持開源的算法框架;
- 彈性,每Job每計費:傳統的Spark都需要用戶事先購買好集群,DLA支持無需購買任何的計算資源即可開箱使用Spark,兼容開源Spark所有的語法;
- 重寫Serverless Spark接入層,保障Job的穩定性:對比Livy接入層,Livy存在較多的穩定性問題,比如:不能互相擴展,有單點問題,無法在DLA多租戶環境應用;為此,DLA Spark組完全重寫了Spark的接入層,力求保障長job的穩定性,深度結合云原生的環境。
- 實現多租戶的UI服務:DLA Serverless Spark運行完成后,其UI數據會存放在用戶OSS空間,DLA提供多租戶SparkUI服務,開源查詢正在運行中及運行完成的Spark信息,此服務完全免費。
- 多數據源,針對OSS數據源優化: 目前DLA Serverless Spark支持對接Kafka、LogHub等數據源,直接對接HDFS、HBase、OTS、PolarDB、ADB等幾乎所有的數據源的分析與回寫。并針對OSS數據源支持MetaCache與Rename等優化,在小文件較多的情況,比開源版本提升50%的性能。
目前DLA Serverless Spark一直追求更加彈性的服務,跟開源使用體驗盡量一致,接入層的服務會更加穩定性,PS:得益于先進的云原生架構,目前UI服務與接入層服務是免費的。用戶只需要為實際的資源消耗付費。
六、數據平臺的演進
DLA致力于幫助客戶構建低成本、簡單易用、彈性的數據平臺,比傳統Hadoop至少節約50%的成本。具體到大數據架構,業內大數據架構有Lambda、Kappa等,目前在大公司應用基本是混合體,大數據與業務是比較強相關,隨著公司規模大小不一,適用的場景不近相同,且又隨著業務的發展需要不同的大數據的架構,目前還不存在包打天下的銀彈(不過每個組件都想擴展場景,替換其它組件的地盤),如果規模不小的公司只有一個肯定會有損耗或者不是最佳的方案架構。一般隨著公司規模發展,有如下趨勢(此圖挑選業內比較流行的組件):
方案四,攤開細節一點如下,在結合阿里云OLAP團隊的組件:
上圖中分為七塊,也是目前業內主流的數據處理模式:
- 數據源:一般是數據產生的系統,比如事務性的數據會直接存入MySQL,物聯網一般直接寫入到HBase/Lindorm系統之中;
- 實時數據處理:可以直接對接數據源,如DB CDC或者Kafka,經過流ETL后,寫入到數據倉庫或者數據湖之中;
- 離線數據湖:存離線的數據,比如CSV\JSON上傳的數據,或者離線數倉的數據;
- 專題數據倉庫:針對高并發的場景加速,一般為業務團隊直接持有;
- 聯邦交互式分析:可以跨數據源查詢,包括數據倉庫、數據湖、數據庫的數據;
- 數據應用:是數據的應用,如BI、營銷系統等。
- 數據開發平臺:如計算引擎的調度,數據血緣等;
特別注明的是,Lakehouse(Hudi)會把實時數據與離線數據湖結合起來,并且會融合部分數據倉庫的能力。在實際的實踐中,Lakehouse也是作為數據湖的一部分,解決數據高效入湖,且支持高效分析。
七、鳴謝與展望2021年
DLA感謝廣大客戶的信任,目前已經服務數千客戶。在2021年,DLA會聚焦在數據湖場景下,從DLA Meta、DLA Lakehouse、DLA Serverless Spark、DLA Serverless Presto方向發力,提供更加實惠,穩定性,彈性,高性能的數據湖服務。DLA Lakehouse會不斷優化支持Kafka、Loghub、DB CDC的實時入湖;DLA Presto主打通用格式的交互式查詢,會在多數據源算子下沉,Cache等方向發力;DLA Spark會完全兼容開源Spark的語法與體驗,并且在彈性層面不斷突破。
原文鏈接:https://developer.aliyun.com/article/782655?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的云原生数据湖分析DLA 2020年年度总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stream is the new fi
- 下一篇: Knative 多容器支持介绍