簡介: 經過一站式入湖,將不一樣數據源的數據統一歸併到以OSS對象存儲爲基礎架構的集中式數據湖存儲中,解決了企業面臨的數據孤島問題,爲統一的數據分析打好了基礎.數據庫
數據湖做爲一個集中化的數據存儲倉庫,支持的數據類型具備多樣性,包括結構化、半結構化以及非結構化的數據,數據來源上包含數據庫數據、binglog增量數據、日誌數據以及已有數倉上的存量數據等.數據湖可以將這些不一樣來源、不一樣格式的數據集中存儲管理在高性價比的存儲如OSS等對象存儲中,並對外提供統一的數據分析方式,有效解決了企業中面臨的數據孤島問題,同時大大下降了企業存儲和使用數據的成本.json
因爲數據湖數據來源的多樣性,如何簡單高效的將這些異構數據源的數據遷移到中心化的數據湖存儲中,是數據湖構建過程面臨的問題.爲此,咱們須要提供完善的一站式入湖的能力,解決咱們面臨的問題,主要包括如下幾點:性能優化
提供一個簡單統一的入湖方式,用戶能夠經過簡單的頁面配置實現異構數據源的入湖操做.架構
對於日誌、binglog等類型的數據源,須要實現分鐘級延遲的數據入湖能力,知足實時交互式 分析場景對時效性的要求.性能
對於數據庫、TableStore Tunnel等類型的數據源,源頭數據會常常發生變動,好比數據層面的update,delete等操做,甚至schema層面的字段結構變動. 須要利用更好的數據格式來支持這類變動行爲.大數據
爲此,阿里雲新推出了數據湖構建(Data Lake Formation,DLF)服務,提供了完整的一站式入湖解決方案。優化
數據湖構建的入湖技術方案以下圖所示:阿里雲
數據入湖總體上分爲入湖模板、入湖引擎、文件格式以及數據湖存儲四個部分:spa
入湖模板定義了常見的數據源入湖方式,目前主要包括RDS全量模板、DTS增量模板、TableStore模板、SLS模板以及文件格式轉換5種模板.翻譯
用戶根據不一樣的數據源選擇相應的入湖模板,而後填寫源頭相關參數信息,便可完成入湖模板的建立,並提交給入湖引擎運行.
入湖引擎使用了阿里雲EMR團隊自研的Spark Streaming SQL以及EMR Spark引擎,Streaming SQL基於Spark Structured Streaming,提供了相對完善的Streaming SQL語法,極大簡化了實時計算的開發成本。對於實時增量模板,上層入湖模板部分將入湖模板翻譯成Streaming SQL,而後提交Spark集羣運行。咱們在Streaming SQL裏面擴展了Merge Into語法來支持update、delete操做。對於RDS等全量模板,則直接翻譯成Spark SQL運行。
DLF支持的文件格式包括Delta Lake、Parquet、json等,更多文件格式好比Hudi也在接入中。Delta Lake和Hudi等文件格式能很好的支持update、delete等操做,同時支持schema merge功能。能夠很好的解決數據源實時變動問題。
數據湖數據統一放在OSS對象存儲中,OSS提供了海量數據存儲的能力,同時在可靠性,價格等方面更具優點.
一站式入湖方案在很好的解決了前面提的幾個問題:
經過模板配置,實現了統一簡單的數據入湖方式.
經過自研Streaming SQL實現了分鐘級延遲的數據實時入湖,知足了時效性要求.
經過引進Delta Lake等更優的文件格式,實現了對update、delete等數據實時變動要求.
隨着大數據的不斷髮展,用戶對數據時效性的要求愈來愈高,實時入湖也是咱們重點關注的場景,目前咱們已經支持了DTS、TableStore以及SLS的實時入湖能力.
DTS是阿里雲提供了高可靠的數據傳輸服務,支持不一樣類型數據庫增量數據的訂閱和消費。咱們實現了DTS實時訂閱數據的入湖,支持用戶已有訂閱通道入湖和自動建立訂閱通道入湖兩種方式,減小用戶配置成本。
在技術上,支持增量數據對歷史數據的update、delete變動操做,實現分鐘級延遲的數據變動感知能力。技術實現上在Streaming SQL中擴展了merge into語法來對接底層文件格式Delta Lake的相關接口.
MERGE INTO delta_tbl AS target USING ( select recordType, pk, ... from {{binlog_parser_subquery}} ) AS source ON target.pk = source.pk WHEN MATCHED AND source.recordType='UPDATE' THEN UPDATE SET * WHEN MATCHED AND source.recordType='DELETE' THEN DELETE WHEN NOT MATCHED THEN INSERT *
和傳統數倉的binlog入倉相比,基於數據湖的方案具備更大的優點. 在傳統數倉中,爲了實現數據庫等變動數據的入倉,一般須要維護兩張表,一張增量表用於存放天天新增的數據庫變動明細數據,另一張全量表,存放歷史全部的merge數據,全量表天天和增量表更據主鍵作merge操做. 顯然,基於數據湖方案在實現的簡單性和時效性上都更優.
TableStore是阿里雲提供的是阿里雲自研的NoSQL多模型數據庫,提供海量結構化數據存儲以及快速的查詢和分析服務.它同時支持了通道功能,支持變動數據的實時消費。咱們支持TableStore全量通道、增量通道以及全量加增量通道的實現入湖.其中全量通道包含歷史全量數據,增量通道包含增量變化的數據,全量加增量通道則包含了歷史全量和增量變化的數據.
SLS是阿里雲提供的針對日誌類數據的一站式服務,主要存放用戶日誌數據。將SLS中的日誌數據實時歸檔到數據湖中,進行分析處理能夠充分挖掘數據中的價值。目前經過SLS入湖模板,填寫project、logstore等少許信息,便可完成日誌實時入湖的能力。
一站式入湖功能極大的下降了異構數據源入湖的成本,知足了SLS、DTS等數據源入湖的時效性要求,同時也支持了數據源實時變動的能力。經過一站式入湖,將不一樣數據源的數據統一歸併到以OSS對象存儲爲基礎架構的集中式數據湖存儲中,解決了企業面臨的數據孤島問題,爲統一的數據分析打好了基礎.
後續一站式入湖一方面將繼續完善功能,支持更多類型的數據源,入湖模板方面開放更多能力給用戶,支持自定義ETL的功能,提升靈活性。另外一方面,將會在性能優化方面不斷投入,提供更好的時效性和穩定性。
原文連接本文爲阿里雲原創內容,未經容許不得轉載。