天天看點

【硬剛大資料】從零到大資料專家之資料湖應用

本文由【王知無】原創, 本文首發,未經過官方和本人允許,嚴禁轉載!
【硬剛大資料】從零到大資料專家之資料湖應用

本文是對《【硬剛大資料之學習路線篇】從零到大資料專家的學習指南(全面更新版)》的面試部分補充。

硬剛大資料系列文章連結:

從零到大資料專家的學習指南(全面更新版)

從零到大資料專家之Hadoop/HDFS/Yarn篇

從零到大資料專家之SparkSQL篇

從零到大資料專家之消息隊列篇

從零到大資料專家之Spark篇

從零到大資料專家之Hbase篇

從零到大資料專家之Kafka篇

從零到大資料專家之Presto篇

從零到大資料專家之ClickHouse篇

從零到大資料專家之IceBerg篇

資料湖是一種不斷演進中、可擴充的大資料存儲、處理、分析的基礎設施;以資料為導向,實作任意來源、任意速度、任意規模、任意類型資料的全量擷取、全量存儲、多模式處理與全生命周期管理;并通過與各類外部異構資料源的互動內建,支援各類企業級應用。

目前在生産上可以用的經驗不多,筆者個人在調研技術方案時參考了目前市面上公開的衆多資料,供團隊在資料架構設計和選型上進行參考。

華為生産場景資料湖平台建設實踐

【硬剛大資料】從零到大資料專家之資料湖應用

該平台圍繞資料分如下三大邏輯子產品:

【硬剛大資料】從零到大資料專家之資料湖應用

典型資料應用場景按應用場景,對資料流程、處理平台進行的标注:

(綠色)結構化資料通過批處理、虛拟鏡像到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化自定義配置動态分區的功能,解決埋點資料傾斜導緻的實時任務性能問題,優化資源使用,此場景後面會詳細介紹。

繼續閱讀