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