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