Apache CarbonData:大數據生態一種新的高性能數據格式
Apache CarbonData是一種新的高性能數據存儲格式,針對當前大數據領域分析場景需求各異而導致的存儲冗余問題,CarbonData提供了一種新的融合數據存儲方案,以一份數據同時支持“任意維度組合的過濾查詢、快速掃描、詳單查詢等”多種應用場景,并通過多級索引、字典編碼、列存等特性提升了IO掃描和計算性能,實現百億數據級秒級響應。CarbonData是由華為開源貢獻到Apache基金會的大數據項目,致力于推動大數據開源生態技術的發展。
隨著數據與日俱增,業務驅動下的數據分析靈活性要求越來越高,不同場景的數據分業務系統而構建,導致冗余嚴重,缺乏高效、統一的融合數倉,阻礙企業快速轉型。
企業典型的訴求總結如下:
***,數據統一存儲:為了節約成本,企業希望一份數據支持多種使用場景;減少數據孤島和冗余,通過數據共享產生更大價值。
第二,高效:數據分析要求越來越高效、實時。
第三,易集成:提供標準接口,新的大數據方案與企業已采購的工具和IT系統要能無縫集成,支撐老業務快速遷移。
第四,大集群:區別于以往的單機系統,企業客戶希望新的大數據方案能應對日益增多的數據,隨時可以通過增加資源的方式橫向擴展,無極擴容。
第五,開放生態:通過開源開放,讓更多的客戶和合作伙伴的數據連接在一起,發揮更大的價值。
華為針對上述典型訴求,從2013年開始調研分析業界大數據方案,發現每種技術都只能解決某種場景的訴求,不能同時滿足上述的所有訴求,如:并行數據庫技術不能有效與Hadoop生態集成,數據不能統一共享存儲;搜索類技術提升了性能,但是數據膨脹很大,不支持標準SQL、不能兼容老的業務,這促使了華為著手開發CarbonData項目。
整個大數據時代的開啟,可以說是源自于Google的MapReduce論文,他引發了Hadoop開源項目以及后續一系列的生態發展。他的“偉大”之處在于計算和存儲解耦的架構,使企業的部分業務(主要是批處理)從傳統的垂直方案中解放出來,計算和存儲可以按需擴展極大提升了業務發展的敏捷性,讓眾多企業普及了這一計算模式,從中受益。
CarbonData借鑒了這一理念,存儲和計算邏輯上分離,通過索引技術讓存儲和計算物理上更接近,提升CPU和IO效率,實現超高性能的大數據分析:
列式存儲:高效的列式數據組織,區別于行存,可以實現列裁剪和過濾下壓,使OLAP查詢性能更高。同時,CarbonData針對明細數據查詢實現了深度優化,在需要返回所有列的場景下性能優于其他列存方案。
豐富的索引支持:支持全局多維索引、文件索引、Min/Max、倒排索引等多種索引技術,從表級,文件級,列級等多個層級逐級快速定位數據,避免SQL-on-Hadoop引擎常見的“暴力掃描“,從而大幅提升性能,實現十年數據秒級響應, 三百維字段任意組合查詢。
全局字典編碼:除了常見的Delta、RLE、BitPacking等編碼外,CarbonData應用了全局字典編碼來實現免解碼的計算,計算框架可以直接使用經過編碼的數據來做聚合,排序等計算,這對需要做跨節點數據交換的業務來說性能提升非常明顯(3倍以上)。
自適應類型轉換:CarbonData針對分析型應用中大量使用的數值類型(Double/Decimal/Numeric/BigInt)實現存儲內數據類型轉換,配合列式數據壓縮,使得壓縮非常高效,數據壓縮率基于應用場景不同一般壓縮比在2到8之間。
標準SQL和API:在SparkSQL基礎上,支持標準SQL99/2003;支持數據批量更新、刪除,適用于OLAP場景下數據的周期性刷新,例如拉鏈表更新、維表數據同步。提供JDBC/ODBC連接,支持與BI工具無縫對接;兼容Spark DataFrame/DataSet,支持復雜分析應用。
數據生態集成:支持與Hadoop、Spark等大數據生態系統集成,支持和商業BI工具無縫對接。既滿足傳統數倉、數據集市、BI應用要求,也提供大數據生態豐富多樣的API支持,覆蓋從GB級到EB級應用。
開源開放: CarbonData于2016年6月3日全票通過進入大數據領域全球***的開源社區Apache,半年時間里,Apache社區代碼貢獻者超過60人。目前特性貢獻來自于華為、Intel、Talend、Ebay、Inmobi、Knoldus、阿里、美團、樂視、滴滴等公司資深架構師和開發人員。
Apache CarbonData致力于推動大數據開源技術的持續發展,以一份數據同時滿足多種業務場景訴求,打造高效、開放、完整生態的大數據新融合數倉。歡迎大家參與到社區建設:
目前已經發布了三個Apache穩定本
Mailinglist: