<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
華米科技是一家基於雲的健康服務提供商,擁有全球領先的智慧可穿戴技術。在華米科技,資料建設主要圍繞兩類資料:裝置資料和APP資料,這些資料存在延遲上傳、更新頻率高且廣、可刪除等特性,基於這些特性,前期數倉ETL主要採取歷史全量+增量模式來每日更新資料。隨著業務的持續發展,現有數倉基礎架構已經難以較好適應資料量的不斷增長,帶來的顯著問題就是成本的不斷增長和產出效率的降低。
針對數倉現有基礎架構存在的問題,我們分析了目前影響成本和效率的主要因素如下:
為了解決上述問題,保證數倉的降本提效目標,我們決定引入資料湖來重構數倉架構,架構如下:
Hudi | Iceberg | Delta | |
---|---|---|---|
引擎支援 | Spark、Flink | Spark、Flink | Spark |
原子語意 | Delete/Update/Merge | Insert/Merge | Delete/Update/Merge |
流式寫入 | 支援 | 支援 | 支援 |
檔案格式 | Avro、Parquet、ORC | Avro、Parquet、ORC | Parquet |
MOR能力 | 支援 | 不支援 | 不支援 |
Schema Evolution | 支援 | 支援 | 支援 |
Cleanup能力 | 自動 | 手動 | 手動 |
Compaction | 自動/手動 | 手動 | 手動 |
小檔案管理 | 自動 | 手動 | 手動 |
基於上述我們比較關心的指標進行對比。Hudi可以很好的在任務執行過程中進行小檔案合併,大大降低了檔案治理的複雜度,依據業務場景所需要的原子語意、小檔案管理複雜度以及社群活躍度等方面綜合考量,我們選擇Hudi來進行湖倉一體化改造。
華米資料雲端由於業務原因會產生表Schema變更需求,從而避免因Schema變更而重做歷史Base資料帶來的高額計算成本。但由於新增產生的資料實體欄位相對位置的亂序問題,導致入湖同步Hive的過程中產生異常。針對該問題,華米巨量資料團隊也在和社群聯動,解決資料欄位對齊問題。在社群支援更完善的Schema Evolution之前,當前華米巨量資料團隊的解決方案為:根據歷史Base資料的Schema順序重新對增量資料Schema順序做編排,然後統一增量入湖。具體處理流程如下圖所示:歷史Base資料的Schema順序為{id, fdata, tag, uid},增量資料的Schema{id, fdata, extract, tag, uid},可見新增extract欄位順序打亂了原先歷史Base資料的Schema,可以根據所讀取的歷史資料Schema順序對新增資料進行調整:
將{id, fdata, extract, tag, uid}變更為{id, fdata, tag, uid, extract},然後呼叫Schema Evolution給歷史Base資料的Schema新增一個extract欄位,最終將調整後的增量資料寫入歷史Base。
華米巨量資料儲存涉及多種儲存(HDFS,S3,KS3),華米巨量資料團隊新增對KS3儲存的支援併合入社群程式碼,在Hudi0.9版本後可以支援KS3儲存。
由於華米全球各個資料中心採用按需方式進行節點擴容,申請得到的雲主機可能會出現節點時區不一致,從而會造成commit失敗,我們對Hudi原始碼進行了改造,在hudi原始碼中統一了Timeline的時區(UTC)時間來保證時區統一,避免commitTime回溯導致的Commit失敗。
在Hudi0.9升級到0.10版本中,會發現出現版本因version不一致造成的資料更新失敗問題。出現的不一致問題已經反饋至社群,社群相關同學正在解決,現在我們暫時使用重建後設資料表(直接刪除metadata目標)來解決該問題,再次執行作業時,Hudi會自動重新構建後設資料表。
Hudi on Spark需要根據增量資料所在的分割區採集檔案的索引檔案,更新分割區過多的情況下,效能較差。針對這一問題,目前我們通過兩個層面來進行處理:
從資料入湖的效能測試中來看,Hudi效能跟資料組織的策略有較大的關係,具體體現在以下幾個方面:
從業務場景和分析需求出發,我們主要對比了實時資料湖模式和離線資料湖模式的成本與收益,實時成本遠高於離線模式。鑑於目前業務實時需求並不是很高,故華米數倉在引入資料湖時暫採取Hudi + Spark離線更新模式來構建湖倉ODS原始層和DWD明細層,從測試對比和上線情況來看,收益總結如下:
引入Hudi資料湖技術後,資料倉儲整體成本有一定程度的下降,預計會降低1/4~1/3的費用。主要在於利用Hudi資料湖提供的技術能力,可以較好的解決應用背景部分闡述的兩大痛點,節約數倉Merge更新與儲存兩部分的費用開銷。
Hudi利用索引更新機制避免了每次全量更新表資料,使得數倉表每次更新避免了大量的冗餘資料的讀取與寫入操作,故而表的更新效率有了一定的提升。從我們數倉+BI報表整體鏈條層面來看,整體報表產出時間會有一定程度的提前。
程式穩定性層面暫時沒有詳細評估,結合實際場景說下目前情況:
Hudi寫入檔案時根據主鍵欄位排序後寫入,每個Parquet檔案中記錄是按照主鍵欄位排序,在使用Hive或者Spark查詢時,可以很好的利用Parquet謂詞下推特性,快速過濾掉無效資料,相對之前的數倉表,有更好的查詢效率。
從資料湖上線和測試過程來看,目前資料湖能解決我們的一些數倉痛點,但是依然存在一些問題。
總結如下
展望如下
以上就是Apache Hudi基於華米科技應用湖倉一體化改造 的詳細內容,更多關於Apache Hudi華米科技應用改造的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45