Iceberg 實踐 | B站基于 Iceberg 的湖倉一體架構實踐
背景

為了提升查詢效率,從Hive表出倉到ClickHouse、HBase、Redis、ElasticSearch、Mysql等外部系統(tǒng)中,需要額外的數(shù)據(jù)開發(fā)工作,額外的存儲冗余,但同時擁有了更少的數(shù)據(jù)靈活性,復雜的組件支持增加了數(shù)據(jù)服務開發(fā)的成本,更長的數(shù)據(jù)處理流程也降低了穩(wěn)定性和可靠性。 對于未出倉的數(shù)據(jù),用戶無論是進行數(shù)據(jù)探索還是使用BI報表,都還受SQL on Hadoop本身性能所限,和用戶期望的交互式響應有很大差距。
為什么需要湖倉一體
使用統(tǒng)一的分布式存儲系統(tǒng),可假設為無限容量。 有統(tǒng)一的元數(shù)據(jù)管理系統(tǒng)。 使用開放的數(shù)據(jù)存儲格式。 使用開放的數(shù)據(jù)處理引擎對數(shù)據(jù)進行加工和分析。
自定義的數(shù)據(jù)存儲格式。 自己管理數(shù)據(jù)的組織方式。 強Schema數(shù)據(jù),對外提供標準的SQL接口。 具有高效的計算存儲一體設計和豐富的查詢加速特性。

B站的湖倉一體架構



索引
需要存儲字段基數(shù)對應個BitMap,存儲代價太大。
在Range過濾時,使用BitMap判斷是否可以Skip文件時,需要訪問大量BitMap,讀取代價太大。
為了解決以上問題,我們引入了Bit-sliced Encoded Bitmap實現(xiàn)。具體詳情可查詢參考文獻[2](通過索引加速湖倉一體分析)。
總結和展望
星型模型的數(shù)據(jù)分布組織,支持按照維度表字段對事實表數(shù)據(jù)進行排序組織和索引。 預計算,通過預計算對固定查詢模式進行加速。 智能化,自動采集用戶查詢歷史,分析查詢模式,自適應調整數(shù)據(jù)的排序組織和索引等。
評論
圖片
表情
