數據湖在大數據典型場景下應用調研個人筆記

點擊上方 藍色字體 ,選擇“ 設爲星標
回覆”資源“獲取更多資源


數據湖是一種不斷演進中、可擴展的大數據存儲、處理、分析的基礎設施;以數據爲導向,實現任意來源、任意速度、任意規模、任意類型數據的全量獲取、全量存儲、多模式處理與全生命週期管理;並通過與各類外部異構數據源的交互集成,支持各類企業級應用。
目前在生產上可以用的經驗不多,筆者個人在調研技術方案時參考了目前市面上公開的衆多資料,供團隊在數據架構設計和選型上進行參考。

華爲生產場景數據湖平臺建設實踐

該平臺圍繞數據分如下三大邏輯模塊:

典型數據應用場景按應用場景,對數據流程、處理平臺進行的標註:
  • (綠色)結構化數據通過批處理、虛擬鏡像到Hive數據,再通過Kylin預處理將數據儲存在Cube中,封裝成RESTAPI服務,提供高併發亞秒級查詢服務,監測物料質量情況;

  • (紅色)IoT數據,通過sensor採集上報到MQS,走storm實時分揀到HBase,通過算法模型加工後進行ICT物料預警監測;

  • (黃色)條碼數據通過ETLloader到IQ列式數據湖,經過清洗加工後,提供千億規模條碼掃描操作。

非結構化質檢圖片數據:
通過web前臺、數據API服務,進行圖片數據的上傳及查詢,圖片需要有唯一ID作爲標示,確保可檢索。海量圖片數據以ID爲rowkey,儲存於Hbase平臺,提供快速儲存及查詢能力。數據資產上有以下方面的構建:
  • 統一索引描述非結構數據,方便數據檢索分析。

  • 增加維護及更新時間作爲對象描述字段(圖片類型、像素大小、尺寸規格)。非對象方式及數字化屬性編目(全文文本、圖像、聲音、影視、超媒體等信息),自定義元數據。

  • 不同類型的數據可以形成了關聯並處理非結構化數據。

實時金融數據湖的應用

在功能上,包括數據源、統一的數據接入、數據存儲、數據開發、數據服務和數據應用。
  • 第一,數據源。不僅僅支持結構化數據,也支持半結構化數據和非結構化數據。

  • 第二,統一數據接入。數據通過統一數據接入平臺,按數據的不同類型進行智能的數據接入。

  • 第三,數據存儲。包括數據倉庫和數據湖,實現冷熱溫智能數據分佈。

  • 第四,數據開發。包括任務開發,任務調度,監控運維,可視化編程。

  • 第五,數據服務。包括交互式查詢,數據 API,SQL 質量評估,元數據管理,血緣管理。

  • 第六,數據應用。包括數字化營銷,數字化風控,數據化運營,客戶畫像。

在邏輯上,實時金融數據湖的邏輯架構主要有 4 層,包括存儲層、計算層、服務層和產品層。
  • 在存儲層,有 MPP 數據倉庫和基於 OSS/HDFS 的數據湖,可以實現智能存儲管理。

  • 在計算層,實現統一的元數據服務。

  • 在服務層,有聯邦數據計算和數據服務 API 兩種方式。其中,聯邦數據計算服務是一個聯邦查詢引擎,可以實現數據跨庫查詢,它依賴的就是統一元數據服務,查詢的是數據倉庫和數據湖中的數據。

  • 在產品層,提供智能服務:包 RPA、證照識別、語言分析、客戶畫像、智能推薦。商業分析服務:包括自助分析、客戶洞察、可視化。數據開發服務:包括數據開發平臺,自動化治理。

整個實時場景架構:
數據源被實時接入到 Kafka 之後,Flink 可以實時處理 Kafka 的數據,並將處理的結果寫入到數據湖中。數據湖整體基於開源方案搭建,數據的存儲是用的 HDFS 和 S3,表格式用的是 Iceberg。Flink 讀取完 Kafka 的數據之後進行實時處理,這時候可以把處理的中間結果寫入到數據湖中,然後再進行逐步處理,最終得到業務想要的結果。處理的結果可以通過查詢引擎對接應用,包括 Flink、Spark、Presto 等。

Soul的Delta Lake數據湖應用實踐

數據由各端埋點上報至Kafka,通過Spark任務分鐘級以Delta的形式寫入HDFS,然後在Hive中自動化創建Delta表的映射表,即可通過Hive MR、Tez、Presto等查詢引擎直接進行數據查詢及分析。
我們基於Spark,封裝了通用化ETL工具,實現了配置化接入,用戶無需寫代碼即可實現源數據到Hive的整體流程接入。並且,爲了更加適配業務場景,我們在封裝層實現了多種實用功能:
  • 實現了類似Iceberg的hidden partition功能,用戶可選擇某些列做適當變化形成一個新的列,此列可作爲分區列,也可作爲新增列,使用SparkSql操作。如:有日期列date,那麼可以通過 'substr(date,1,4) as year' 生成新列,並可以作爲分區。

  • 爲避免髒數據導致分區出錯,實現了對動態分區的正則檢測功能,比如:Hive中不支持中文分區,用戶可以對動態分區加上'\w+'的正則檢測,分區字段不符合的髒數據則會被過濾。

  • 實現自定義事件時間字段功能,用戶可選數據中的任意時間字段作爲事件時間落入對應分區,避免數據漂移問題。

  • 嵌套Json自定義層數解析,我們的日誌數據大都爲Json格式,其中難免有很多嵌套Json,此功能支持用戶選擇對嵌套Json的解析層數,嵌套字段也會被以單列的形式落入表中。

  • 實現SQL化自定義配置動態分區的功能,解決埋點數據傾斜導致的實時任務性能問題,優化資源使用,此場景後面會詳細介紹。



基於Flink和Druid的實時多維分析系統在蔚來汽車的應用

實時方案之數據湖探究調研筆記

生產上的坑纔是真的坑 | 盤一盤Flink那些經典線上問題


歡迎點贊+收藏+轉發朋友圈素質三連

文章不錯?點個【在看】吧!

本文分享自微信公衆號 - 大數據技術與架構(import_bigdata)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

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