Apache CarbonData 1.4.0 正式發佈,多項新功能及性能提升

Apache CarbonData 1.4.0 下載地址:

https://dist.apache.org/repos/dist/release/carbondata/1.4.0/

Apache CarbonData 1.4.0 下載地址:

http://carbondata.apache.org/mainpage.html

Apache CarbonData 源碼:

https://github.com/apache/carbondata

更多詳情請參見:

https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85475081

Apache CarbonData社區很高興發佈1.4.0版本,在社區開發者和用戶的共同努力下,1.4.0解決了超過230個JIRA Tickets(新特性和bug修復),歡迎大家試用。

Apache CarbonData 1.4.0 正式發佈,多項新功能及性能提升

簡介

CarbonData是一個高性能的數據解決方案,目標是實現一份數據支持多種分析場景,包括BI分析,即席SQL查詢,明細數據分析,流式分析等。CarbonData已經部署在許多企業生產環境中,例如一個規模較大的場景,支持單個表3PB數據(超過5萬億條記錄)上明細數據分析,響應時間小於3秒!下面是1.4.0支持的新特性介紹。

Carbon Core

數據加載性能提升

通過增強入庫過程中的IO讀寫(包括排序臨時文件改進,分區排序,免拷貝等),數據加載性能得到了顯著提高。 在一個實際的生產環境中,與上一版本相比,我們觀察到多達300%的改進。

數據Compaction性能提升

通過在Compaction過程中採用數據預取和矢量化讀取的改進,CarbonData表上的Compaction執行性能與上一版本相比提高了500%。得益於這個提升,在一個面向IoT的場景中,做到每5分鐘的數據加載(數據量為幾百GB)的同時達到秒級查詢響應,通過設置自動Compaction,系統每隔30分鐘和60分鐘進行一次Compaction("carbon.compaction.level.threshold"設置為"6,2"),減少了Segments的數量,使CarbonData的索引更有效。

DataMap管理

1.4.0中的CREATE DATAMAP語句中引入了新的語法'DEFERRED REBUILD',這使得用戶可以選擇DataMap管理機制是自動或手動。在創建DataMap時,如果用戶指定了'DEFERRED REBUILD',系統會默認設置DataMap的狀態為不可用,當用戶執行REBUILD DATAMAP命令後,系統會觸發DataMap的加載,並在查詢時使用該DataMap。這使用戶可以控制何時加載DataMap,有利於用戶控制對資源的使用。相對地,用戶也可以不指定'DEFERRED REBUILD', 每當有新的數據加載發生時系統會自動觸發所有相關DataMap的加載(與老版本一樣)。詳細操作請參閱DataMap管理。

外部表

現在您可以通過CREATE TABLE ... LOCATION ...來指定Carbon數據文件的存儲位置,這個特性的行為和用戶與Hive External Table相同。

支持雲存儲

您可以使用雲存儲來建立CarbonData外部表,例如將CarbonData表存儲在AWS S3,華為雲OBS等雲存儲中。例子請參閱CarbonData雲存儲例子。

支持在獨立應用程序中使用SDK

1.4.0提供了Java SDK,通過使用該SDK,應用程序可以不依賴Hadoop和Spark來創建表格、寫入和讀取CarbonData文件。例如,用戶可以寫一個獨立的Java程序將現有數據轉換為CarbonData文件。目前,SDK支持把以下格式轉換為CarbonData文件,支持寫入到本地磁盤或雲存儲。

· CSV數據,Schema由用戶指定。

· JSON數據,Schema通過Avro對象表達。

具體例子請參閱CarbonData SDK應用例子。

針對OLAP場景的增強

支持在Streaming Table裡使用預匯聚 (PreAggregate DataMap)

在上個版本中,一個表格不能同時進行流式入庫和創建預匯聚表,在1.4.0中去除了這個限制。現在您可以在流式表上創建預聚合表,既縮短了數據從產生到可分析的時間, 也可以利用預彙總表來提高查詢性能。此特性的實現機制是把一個查詢分為兩個部分,一部分查詢流數據,另一部分查詢預聚合數據,最終系統自動合併查詢結果。由於預聚合數據比原始數據少得多,所以使查詢更快。

預聚合表支持分區

針對分區表,用戶創建預匯聚表(preaggregate DataMap)後,預匯聚表會具備相同的分區屬性(相同的分區列)。由於此時主表和預匯聚表的分區是Aligned的,因此當您在主表上執行數據管理操作(如創建/刪除/覆蓋寫分區)時,同樣的操作將在聚合表上自動完成,使兩者保持同步。例如,用戶可以創建一個天分區表,每天導入數據到新分區,這樣系統也會自動完成對應預匯聚表的新分區導入。

支持物化視圖(Alpha功能, MV DataMap)

與1.3.0版中引入的預匯聚表(PreAggregate DataMap)相比,1.4.0中引入了功能更強大的物化視圖(MV DataMap),它可以涵蓋更多的 OLAP分析場景。用戶通過類似的DataMap語句(CTAS)創建、刪除、顯示物化視圖,在查詢時系統會根據查詢條件和執行成本找到合適的物化視圖,將查詢語句重寫為針對物化視圖的查詢,提升查詢性能。

CarbonData物化視圖作為一個長期演進特性,目前支持SPJGH的形式(select-predicate-join-groupby-having),用戶可以創建單表或多表的匯聚表,也可以針對單表只做過濾,不做匯聚。

這個特性目前是Alpha版本,仍存在不完善的地方,不建議用戶在生產系統中使用,但我們鼓勵所有用戶在非生產系統中試用,該特性會在未來版本中逐步改進。

針對明細數據分析的增強

針對高基數列的BloomFilter DataMap(Alpha功能)

為了提升高基數列的過濾效果和查詢性能,1.4.0引入了BloomFilter索引。 它針對的場景是類似用戶名/ID等高基數列上進行精確匹配。 在一個與上一版本的對比測試中,我們針對用戶名進行過濾查詢,發現併發查詢性能提高了3~5倍。 有關更多詳細信息,請參閱 BloomFilter DataMap指南

針對文本檢索的Lucene DataMap(Alpha功能)

Lucene是一個高性能全文檢索引擎,1.4.0實現了一個基於Lucene的DataMap索引,用戶可以創建Lucene DataMap來提高長文本字符串列的模糊匹配查詢性能。 有關更多詳細信息,請參閱 Lucene DataMap指南

支持搜索模式(Alpha功能)

為了提高併發過濾查詢性能,CarbonData新增了一種“搜索模式”(Search Mode)來執行查詢(包含查詢調度和執行)。該模式不使用Spark RDD和DAG Scheduler,避免了由於RDD帶來的性能開銷。在一個與“Spark模式”的對比測試中,“搜索模式”使查詢時延降低了一半,從1秒降低到500ms。例子請參考SearchMode例子

其他重要改進

o 改進了EXPLAIN命令輸出,通過EXPLAIN命令,用戶可以得知某個查詢是否被重寫針對預聚合表或物化視圖的查詢,使用了哪個索引,命中了多少個文件和Blocklet等,可以基於此對物化視圖和索引進行調優。

o 在Carbon Core中增加了性能調優日誌,包括輸出SQL解析和優化器佔用時間,索引過濾信息,Carbon文件IO讀取時間,解碼Blocklet的數量和時間,向上層引擎填充結果的時間等。參考“enable.query.statistics”配置設置。

o 支持數據加載和Compaction併發執行。

o 支持將可見和不可見的Segment元數據分隔為兩個文件,並在SHOW SEGMENTS命令中顯示它們。

o 支持分區表上的全局排序選項

o 減少全局排序表中的對象生成,減少GC

o 對DESC命令進行優化以顯示分區表的分區值和位置


分享到:


相關文章: