COS 數據湖最佳實踐:基於 Serverless 架構的入湖方案

數據湖(Data Lake)概念自 2011 年被推出後,其概念定位、架構設計和相關技術都得到了飛速發展和衆多實踐,數據湖也從單一數據存儲池概念演進爲包括 ETL 分析、數據轉換及數據處理的下一代基礎數據平臺。

<img src="https://main.qcloudimg.com/raw/fbb3830e476a3e7ee922d78ac17565d8.png " width="700"/>

如果需要給數據湖下一個定義,可以定義爲:數據湖是一個企業的各種各樣原始數據的大型倉庫,其中的數據可供存取、處理、分析及傳輸。數據湖是一種存儲架構,本質上講是存儲,所以通常情況下會用最經典的對象存儲,比如用騰訊雲對象存儲 COS 當數據湖的地基。

數據湖從企業的多個數據源獲取原始數據,並且針對不同的目的,同一份原始數據還可能有多種滿足特定內部模型格式的數據副本。因此,數據湖中被處理的數據可能是任意類型的信息,從結構化數據到完全非結構化數據。

那麼,企業如何從各個數據源構建數據管道,如何將各種數據數據穩定可靠的存入數據湖存儲是非常重要的一環。

這篇文章就數據湖的入湖管道爲大家詳細解答關於 COS 數據湖結合 Serverless 架構的入湖方案。

01. 數據湖數據鏈路分析

爲了更好的理解如何構建數據湖,我們可以先了解下數據湖背景下的數據生命週期。

<img src="https://main.qcloudimg.com/raw/708abe1bba390cf1d53148f6a1e70b04.png" width="700"/>

上述生命週期也可稱爲數據在數據湖中的多個不同階段。每個階段所需的數據和分析方法也有所不同。數據處理其實有批量(batch)和流式計算(real - time)兩種方式。這裏定製化內容會比較多,例如,希望存儲數據使用 SQL 查詢訪問數據,則上游選擇對接必須支持 SQL 接口,如果希望直接在 Kafka 拉數據那下游數據獲取則需要 kafka consumer 來拉數據。

傳統數據湖架構分 入湖與出湖 兩部分,在上圖鏈路中以數據存儲爲軸心,數據獲取與數據處理其實是入湖部分,數據分析和數據投遞其實算是數據出湖部分。

  • 入湖部分是整個數據湖架構的數據源頭入口,由於數據湖的高便捷可擴展等特性,它需要接入各種數據,包括數據庫中的表(關係型或者非關係型)、各種格式的文件(csv、json、文檔等)、數據流、ETL 工具(Kafka、Logstash、DataX 等)轉換後的數據、應用 API 獲取的數據(如日誌等);
  • 出湖部分指的是數據湖的數據接入和數據搜索部分,更偏向數據湖應用。這裏場景比較廣泛,可以通過各類外部計算引擎,來提供豐富的計算模式支持,比如基於 SQL 的交互式批處理能力;通過 EMR 來提供各類基於 Spark 的計算能力,包括 Spark 能提供的流計算能力和機器學習能力。

總結來看,整體數據湖鏈路中定製化程度最高,使用成本及代價最大的其實是數據入湖部分(指數據獲取和入湖前的數據處理)。這塊內容往往也是實現的數據湖架構比較核心的數據連接。有沒有更好的方案來實現對這塊的數據鏈路打通其實是數據湖好不好用的關鍵節點。

02. COS + Serverless 架構數據湖解決方案

Serverless 架構湖整體能力點及方案如下圖所示,相關解決方案覆蓋 數據入湖,數據出湖,數據處理 三大能力點,通過 Serverlcess 化封裝爲數據入湖,數據出湖提供更多能力拓展。

<img src="https://main.qcloudimg.com/raw/017122e210923bc1ca0ecada926467e9.png" width="700"/>

下面以數據湖入湖方案爲突破點,爲大家詳細介紹基於 Serverless 架構下的 COS 數據湖解決方案。

03. COS + Serverless 入湖技術架構

Serverless 架構下的入湖方案其實是 batch 方案,通過雲原生的函數觸發器或 Cron/APIGW 拉起數據調用,通過函數捕獲並記錄批次數據信息,在函數內閉環相關的結構轉換和數據格式轉換,數據壓縮等能力。

然後調用 Put Bucket 接口對拉取的數據進行上傳,相關架構及處理流程如下圖所示:

<img src="https://main.qcloudimg.com/raw/b9656174f00c0f7c5235110f2234531f.png" width="700"/>

04. COS + Serverless 入湖方案優勢

1. 簡單易用

依託 Serverless 計算,數據入湖將提供一鍵入湖創建,通過可視化界面操作即可完成全部入湖邏輯創建。

2. 高效

每個入湖模塊都是單獨運行、單獨部署、單獨伸縮。提供更加高效的入湖模塊邏輯管理。

3. 穩定可靠

雲函數模塊在發生可用區故障時,能自動地選擇其他可用區的基礎設施來運行,免除單可用區運行的故障風險。由事件觸發的工作負載可以使用雲函數來實現,利用不同雲服務滿足不同的業務場景和業務需求,使得數據湖架構更加健壯。

4. 降低開銷

函數在未執行時不產生任何費用,所以對一些無需常駐的業務進程來說,開銷將大幅降低。函數執行時按請求數和計算資源的運行時間收費,相比於自建集羣部署入湖,價格優勢明顯。

5. 雲原生

Serverless 提供更加雲原生的入湖解決方案,所有資源雲上部署,雲上使用,更加便捷高效。6. 可定製

用戶可通過模版快速創建通用入湖場景,也可根據自己的業務對數據流進行定製化的 ETL 處理,更方便靈活。

05. COS + Serverless 入湖方案使用

當前 Serverless 入湖方案已集成在 COS 應用集成控制檯,可直接訪問 https://console.cloud.tencent.com/cos5/application 進行相關能力配置。

<img src="https://main.qcloudimg.com/raw/04b49956ebd767bdff0f672cd08d88a6.png" width="700"/>

以 TDMQ 消息備份爲例,點選配置備份規則 > 添加函數,即可進入相關配置頁:

<img src="https://main.qcloudimg.com/raw/98752629b716caf534ce4edfe2f93a1c.png" width="700"/>

完成配置後可直接在控制檯管理相關函數內容:

<img src="https://main.qcloudimg.com/raw/28366b1f82075b7f6cdf7c700dad8a08.png" width="700"/>

06. Serverless 數據湖方案總結

總的來說,基於 Serverless 架構下的 COS 數據湖方案易用性更高、成本更低,同時通過 Serverless 架構實現數據湖構建方案相對自建集羣管理難度更小、數據流轉單一、服務治理簡單、監控易查詢。

後續,Serverless 和 COS 團隊同學會繼續深耕 Batch 架構,也會持續探索關於 Real-Time 框架的更多可能,敬請期待。點擊這裏,立即體驗 COS + Serverless 入湖方案。

One More Thing

立即體驗騰訊雲 Serverless Demo,領取 Serverless 新用戶禮包 👉 騰訊雲 Serverless 新手體驗

歡迎訪問:Serverless 中文網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章