<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
OnZoom是Zoom新產品,是基於Zoom Meeting的一個獨一無二的線上活動平臺和市場。作為Zoom統一通訊平臺的延伸,OnZoom是一個綜合性解決方案,為付費的Zoom使用者提供建立、主持和盈利的活動,如健身課、音樂會、站立表演或即興表演,以及Zoom會議平臺上的音樂課程。
在OnZoom data platform中,source資料主要分為MySQL DB資料和Log資料。 其中Kafka資料通過Spark Streaming job實時消費,MySQL資料通過Spark Batch job定時同步, 將source資料Sink到AWS S3。之後定時排程Spark Batch Job進行數倉開發。最終按照實際業務需求或使用場景將資料Sink到合適的儲存。
初版架構問題
基於以上問題,我們在進行大量技術調研選型及POC之後,我們主要做了如下2部分大的架構優化升級。
MySQL Binlog即二進位制紀錄檔,它記錄了MySQL所有表結構和表資料變更。
Cannal基於MySQL Binlog紀錄檔解析,提供增量資料訂閱和消費,將資料Sink到Kafka實現CDC。
後續使用Spark Streaming job實時消費Binlog就能解決上述問題1的時效性以及物理刪除等問題。
我們需要有一種能夠相容S3儲存之後,既支援大量資料的批次處理又支援增加資料的流處理的資料湖解決方案。最終我們選擇Hudi作為我們資料湖架構方案,主要原因如下:
Hudi upsert 時預設PAYLOAD_CLASS_OPT_KEY為OverwriteWithLatestAvroPayload,該方式upsert時會將所有欄位都更新為當前傳入的DataFrame。但很多場景下可能只想更新其中某幾個欄位,其他欄位跟已有資料保持一致,此時需要將PAYLOAD_CLASS_OPT_KEY傳為OverwriteNonDefaultsWithLatestAvroPayload,將不需要更新的欄位設為null。但該upsert方式也有一定限制,比如不能將某個值更新為null。
我們現在有實時同步資料,離線rerun資料的場景,但當前使用的是Hudi 0.7.0版本,該版本還不支援多個job並行寫Hudi表。臨時方案是每次需要rerun資料的時候暫停實時任務,因為0.8.0版本已經支援並行寫,後續考慮升級。
一開始我們任務變更Hudi表資料時每次都預設同步hive後設資料。但對於實時任務每次連線Hive Metastore更新後設資料很浪費資源,因為大部分操作只涉及到資料變更而不涉及表結構或者分割區變動。所以我們後來將實時任務關閉同步hive後設資料,在需要更新後設資料時另外再執行hudi-hive-sync-bundle-*.jar來同步。
Hudi增量查詢語意是返回給定時間內所有的變更資料,所以會在timeline在裡查詢歷史所有commits檔案。但歷史commits檔案會根據retainCommits引數被清理,所以如果給定時間跨度較大時可能會獲取不到完整的變更資料。如果只關心資料的最終狀態,可以根據_hoodie_commit_time來過濾獲取增量資料。
Hudi預設spark分割區並行度withParallelism為1500,需要根據實際的輸入資料大小調整合適的shuffle並行度。(對應引數為 hoodie.[insert|upsert|bulkinsert].shuffle.parallelism)
Hudi基於parquet列式儲存,支援向後相容的schema evolution,但只支援新的DataFrame增加欄位的schema變更,預計在在 0.10 版本實現 full schema evolution。如果有刪除或重新命名欄位的需求,只能overwrite。另外增加欄位也可能導致hive sync metadata失敗,需要先在hive執行drop table。
Hudi Insert 對 recordKey 相同的資料,根據不同的引數有不同的處理情況,決定性的引數包括以下三個:
hoodie.combine.before.insert
hoodie.parquet.small.file.limit
hoodie.merge.allow.duplicate.on.inserts
其中:hoodie.combine.before.insert 決定是否對同一批次的資料按 recordKey 進行合併,預設為 false;hoodie.parquet.small.file.limit 和hoodie.merge.allow.duplicate.on.inserts 控制小檔案合併閾值和如何進行小檔案合併。如果 hoodie.parquet.small.file.limit > 0 並且 hoodie.merge.allow.duplicate.on.inserts 為 false,那麼在小檔案合併的時候,會對相同 recordKey 的資料進行合併。此時有概率發生去重的情況 (如果相同 recordKey 的資料寫入同一檔案中);如果 hoodie.parquet.small.file.limit > 0 並且 hoodie.merge.allow.duplicate.on.inserts 為 true,那麼在小檔案合併的時候,不會處理相同 recordKey 的資料
我司基於Hudi實現流批一體資料湖架構上線生產環境已有半年多時間,在引入Hudi之後我們在以下各個方面都帶來了一定收益:
以上就是OnZoom基於Apache Hudi的一體架構實踐 的詳細內容,更多關於OnZoom基於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