全面進化!Apache Doris 1.2.0 Release 版本正式釋出|版本通告
親愛的社群小夥伴們,經歷數月的等候,我們很高興地宣佈,Apache Doris 於 2022 年 12 月 7 日迎來了 1.2.0 Release 版本的正式釋出!有近 118 位 Contributor 為 Apache Doris 提交了超 2400 項優化和修復,感謝每一位讓 Apache Doris 更好的你!
自從社群正式確立 LTS 版本管理機制後,在 1.1.x 系列版本中不再合入大的功能,僅提供問題修復和穩定性改進,力求滿足更多社群使用者在穩定性方面的高要求。而綜合考慮版本迭代節奏和使用者需求後,我們決定將眾多新特性在 1.2.0 版本中釋出,這無疑承載了眾多社群使用者和開發者的深切期盼,同時也是一場厚積而薄發後的全面進化!
在 1.2 版本中,我們實現了全面向量化、實現多場景查詢效能3-11 倍的提升,在 Unique Key 模型上實現了 Merge-on-Write 的資料更新模式、資料高頻更新時查詢效能提升達 3-6 倍,增加了 Multi-Catalog 多源資料目錄、提供了無縫接入 Hive、ES、Hudi、Iceberg 等外部資料來源的能力,引入了 Light Schema Change 輕量表結構變更、實現毫秒級的 Schema Change 操作並且可以藉助 Flink CDC 自動同步上游資料庫的 DML 和 DDL 操作,以 JDBC 外部表替換了過去的 ODBC 外部表,支援了 Java UDF 和 Romote UDF 以及 Array 陣列型別和 JSONB 型別,修復了諸多之前版本的效能和穩定性問題,推薦大家下載和使用!
下載安裝
GitHub下載: https://github.com/apache/doris/releases
官網下載頁: https://doris.apache.org/download
原始碼地址: https://github.com/apache/doris/releases/tag/1.2.0-rc04
下載說明
由於 Apache 伺服器對檔案大小限制,官網下載頁的 1.2.0 版本的二進位制程式分為三個包:
- apache-doris-fe
- apache-doris-be
- apache-doris-java-udf-jar-with-dependencies
其中新增的apache-doris-java-udf-jar-with-dependencies
包用於支援 1.2 版本中的 JDBC 外表和 JAVA UDF 新功能。下載後需要將其java-udf-jar-with-dependencies.jar
檔案放到 be/lib
目錄下,方可啟動 BE,否則無法啟動成功。
為了便於大家下載使用,我們將預編譯好的二進位制程式提前打包好,該版本基於 Apache Doris 1.2.0 正式版,僅內建了 java8 執行時環境,複製下方連結到瀏覽器下載,解壓後即可使用。
下載連結:
- ARM64:https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/release/selectdb-doris-1.2.0-arm.tar.gz
- x86:https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/release/selectdb-doris-1.2.0-x86_64.tar.gz
- x86_no_avx2:https://selectdb-doris-1308700295.cos.ap-beijing.myqcloud.com/release/selectdb-doris-1.2.0-x86_64-no-avx2.tar.gz
部署說明
從歷史版本升級到 1.2.0 版本,需完整更新 fe、be 下的 bin 和 lib 目錄。
其他升級注意事項,請完整閱讀以下文件:
- 本通告最後一節「升級注意事項」
- 安裝部署文件:https://doris.apache.org/zh-CN/docs/dev/install/install-deploy
- 叢集升級文件:https://doris.apache.org/zh-CN/docs/dev/admin-manual/cluster-management/upgrade
如在版本升級、功能驗證、生產上線等過程中出現問題,可以在社群使用者群中尋求 SelectDB 專職技術工程師幫助。
重要更新
全面向量化支援,效能大幅提升
在 Apache Doris 1.2.0 版本中,系統所有模組都實現了向量化,包括資料匯入、Schema Change、Compaction、資料匯出、UDF 等。新版向量化執行引擎具備了完整替換原有非向量化引擎的能力,後續我們也將考慮在未來版本中去除原有非向量化引擎的程式碼。
與此同時,在全面向量化的基礎上,我們對資料掃描、謂詞計算、Aggregation 運算元、HashJoin 運算元、運算元之間 Shuffle 效率等進行了全鏈路的優化,使得查詢效能有了大幅提升。
我們對 Apache Doris 1.2.0 新版本進行了多個標準測試集的測試,同時選擇了 1.1.3 版本和 0.15.0 版本作為對比參照項。經測,1.2.0 在 SSB-Flat 寬表場景上相對 1.1.3 版本整體效能提升了近 4 倍、相對於 0.15.0 版本效能提升了近 10 倍,在 TPC-H 多表關聯場景上較 1.1.3 版本上有近 3 倍的提升、較 0.15.0 版本效能至少提升了 11 倍。
圖1 SSB
圖2 TPC-H
同時,我們將1.2.0版本的測試資料提交到了全球知名資料庫測試排行榜 ClickBench,在最新的排行榜中,Apache Doris 1.2.0 新版本取得了通用機型(c6a.4xlarge, 500gb gp2)下查詢效能 Cold Run 第二和 Hot Run 第三的醒目成績,共有 8 個 SQL 重新整理榜單最佳成績、成為新的效能標杆。 匯入效能方面,1.2.0 新版本資料寫入效率在同機型所有產品中位列第一,壓縮前 70G 資料寫入僅耗時 415s、單節點寫入速度超過 170 MB/s,在實現極致查詢效能的同時也保證了高效的寫入效率!
圖3 Cold Run
圖4 Hot Run
UniqueKey 模型實現 Merg-On-Write 資料更新模式
在過去版本中, Apache Doris 主要是通過 Unique Key 資料模型來實現資料實時更新的。但由於採用的是 Merge-On-Read 的實現方式,查詢存在著效率瓶頸,有大量非必要的 CPU 計算資源消耗和 IO 開銷,且可能將出現查詢效能抖動等問題。
在 1.2.0 版本中,我們在原有的 Unique Key 資料模型上,增加了 Merge-On-Write 的資料更新模式。 該模式在資料寫入時即對需要刪除或更新的資料進行標記,始終保證有效的主鍵只出現在一個檔案中(即在寫入的時候保證了主鍵的唯一性),不需要在讀取的時候通過歸併排序來對主鍵進行去重,這對於高頻寫入的場景來說,大大減少了查詢執行時的額外消耗。此外還能夠支援謂詞下推,並能夠很好利用 Doris 豐富的索引,在資料 IO 層面就能夠進行充分的資料裁剪,大大減少資料的讀取量和計算量,因此在很多場景的查詢中都有非常明顯的效能提升。
在比較有代表性的 SSB-Flat 資料集上,通過模擬多個持續匯入場景,新版本的大部分查詢取得了 3-6 倍的效能提升。
- 使用場景: 所有對主鍵唯一性有需求,需要頻繁進行實時 Upsert 更新的使用者建議開啟。
- 使用說明: 作為新的 Feature 預設關閉,使用者可以通過在建表時新增下面的 Property 來開啟:
“enable_unique_key_merge_on_write” = “true”
另外新版本 Merge-On-Write 資料更新模式與舊版本 Merge-On-Read 實現方式存在差異,因此已經建立的 Unique Key 表無法直接通過 Alter Table 新增 Property 來支援,只能在新建表的時候指定。如果使用者需要將舊錶轉換到新表,可以使用insert into new_table select * from old_table
的方式來實現。
Multi Catalog 多源資料目錄
Multi-Catalog 多源資料目錄功能的目標在於能夠幫助使用者更方便對接外部資料目錄,以增強 Apache Doris 的資料湖分析和聯邦資料查詢能力。
在過去版本中,當我們需要對接外部資料來源時,只能在 Database 或 Table 層級對接。當外部資料目錄 Schema 發生變化、或者外部資料目錄的 Database 或 Table 非常多時,需要使用者手工進行一一對映,維護量非常大。1.2.0 版本新增的多源資料目錄功能為 Apache Doris 提供了快速接入外部資料來源進行訪問的能力,使用者可以通過CREATE CATALOG
命令連線到外部資料來源,Doris 會自動對映外部資料來源的庫、表資訊。之後,使用者就可以像訪問普通表一樣,對這些外部資料來源中的資料進行訪問,避免了之前使用者需要對每張表手動建立外表對映的複雜操作。
目前能支援以下資料來源:
- Hive Metastore:可以訪問包括 Hive、Iceberg、Hudi 在內的資料表,也可對接相容 Hive Metastore 的資料來源,如阿里雲的 DataLake Formation,同時支援 HDFS 和物件儲存上的資料訪問。
- Elasticsearch:訪問 ES 資料來源。
- JDBC:支援通過 JDBC 訪問 MySQL 資料來源。
注:相應的許可權層級也會自動變更,詳見「升級注意事項」部分
相關文件:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/multi-catalog
輕量表結構變更 Light Schema Change
在過去版本中,SchemaChange是一項相對消耗比較大的工作,需要對資料檔案進行修改,在叢集規模和表資料量較大時執行效率會明顯降低。同時由於是非同步作業,當上遊Schema發生變更時,需要停止資料同步任務並手動執行SchemaChange,增加開發和運維成本的同時還可能造成消費資料的積壓。
在 1.2.0 新版本中,對資料表的加減列操作,不再需要同步更改資料檔案,僅需在 FE 中更新元資料即可,從而實現毫秒級的 Schema Change 操作,且存在匯入任務時效率的提升更為顯著。 與此同時,使得 Apache Doris 在面對上游資料表維度變化時,可以更加快速穩定實現表結構同步,保證系統的高效且平穩運轉。如使用者可以通過 Flink CDC,可實現上游資料庫到 Doris 的 DML 和 DDL 同步,進一步提升了實時數倉資料處理和分析鏈路的時效性與便捷性。
使用說明: 作為新的 Feature 預設關閉,使用者可以通過在建表時新增下面的 Property 來開啟:
"light_schema_change" = "true"
相關文件:
JDBC 外部表
在過去版本中,Apache Doris 提供了 ODBC 外部表的方式來訪問 MySQL、Oracle、SQL Server、PostgreSQL 等資料來源,但由於 ODBC 驅動版本問題可能造成系統的不穩定。相對於 ODBC,JDBC 介面更為統一且支援資料庫眾多,因此在 1.2.0 版本中我們實現了 JDBC 外部表以替換原有的 ODBC 外部表。在新版本中,使用者可以通過 JDBC 連線支援 JDBC 協議的外部資料來源,當* 前已適配的資料來源包括*:
- MySQL
- PostgreSQL
- Oracle
- SQLServer
- ClickHouse
更多資料來源的適配已經在規劃之中,原則上任何支援 JDBC 協議訪問的資料庫均能通過 JDBC 外部表的方式來訪問。而之前的 ODBC 外部表功能將會在後續的某個版本中移除,還請儘量切換到 JDBC 外表功能。
相關文件:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/external-table/jdbc-of-doris/
JAVA UDF
在過去版本中,Apache Doris 提供了 C++ 語言的原生 UDF,便於使用者通過自己編寫自定義函式來滿足特定場景的分析需求。但由於原生 UDF 與 Doris 程式碼耦合度高、當 UDF 出現錯誤時可能會影響叢集穩定性,且只支援 C++ 語言,對於熟悉 Hive、Spark 等大資料技術棧的使用者而言存在較高門檻,因此在 1.2.0 新版本我們增加了 Java 語言的自定義函式,支援通過 Java 編寫 UDF/UDAF,方便使用者在 Java 生態中使用。同時,通過堆外記憶體、Zero Copy 等技術,使得跨語言的資料訪問效率大幅提升。
相關文件:
https://doris.apache.org/zh-CN/docs/dev/ecosystem/udf/java-user-defined-function
示例:
https://github.com/apache/doris/tree/master/samples/doris-demo
Remote UDF
遠端 UDF 支援通過 RPC 的方式訪問遠端使用者自定義函式服務,從而徹底消除使用者編寫 UDF 的語言限制,使用者可以使用任意程式語言實現自定義函式,完成複雜的資料分析工作。
相關文件:
https://doris.apache.org/zh-CN/docs/ecosystem/udf/remote-user-defined-function
示例:
https://github.com/apache/doris/tree/master/samples/doris-demo
Array/JSONB 複合資料型別
Array 型別
支援了陣列型別,同時也支援多級巢狀的陣列型別。在一些使用者畫像,標籤等場景,可以利用 Array 型別更好的適配業務場景。同時在新版本中,我們也實現了大量陣列相關的函式,以更好的支援該資料型別在實際場景中的應用。
相關文件:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/ARRAY
相關函式:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/array-functions/array
JSONB 型別
支援二進位制的 JSON 資料型別 JSONB。該型別提供更緊湊的 JSONB 編碼格式,同時提供在編碼格式上的資料訪問,相比於使用字串儲存的 JSON 資料,有數倍的效能提升。
相關文件:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/JSONB
相關函式:
https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/json-functions/jsonb_parse
DateV2/DatatimeV2 新版日期/日期時間資料型別
支援 DataV2 日期型別和 DatatimeV2 日期時間型別,相較於原有的 Data 和 Datatime 效率更高且支援最多到微秒的時間精度,建議使用新版日期型別。
相關文件:
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/DATETIMEV2/
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Types/DATEV2
影響範圍:
- 使用者需要在建表時指定 DateV2 和 DatetimeV2,原有表的 Date 以及 Datetime 不受影響。
- Datev2 和 Datetimev2 在與原來的 Date 和 Datetime 做計算時(例如等值連線),原有型別會被cast 成新型別做計算
- Example 相關文件中說明
全新記憶體管理框架
在 Apache Doris 1.2.0 版本中我們增加了全新的記憶體跟蹤器(Memory Tracker),用以記錄 Doris BE 程序記憶體使用,包括查詢、匯入、Compaction、Schema Change 等任務生命週期中使用的記憶體以及各項快取。通過 Memory Tracker 實現了更加精細的記憶體監控和控制,大大減少了因記憶體超限導致的 OOM 問題,使系統穩定性進一步得到提升。
相關文件:
https://doris.apache.org/zh-CN/docs/dev/admin-manual/maint-monitor/memory-management/memory-tracker
Table Valued Function 表函式
增加了 Table Valued Function(TVF,表函式),TVF 可以視作一張普通的表,可以出現在 SQL 中所有“表”可以出現的位置,讓使用者像訪問關係表格式資料一樣,讀取或訪問來自 HDFS 或 S3 上的檔案內容,
例如使用 S3 TVF 實現物件儲存上的資料匯入:
insert into tbl select * from s3("s3://bucket/file.*", "ak" = "xx", "sk" = "xxx") where c1 > 2;
或者直接查詢 HDFS 上的資料檔案:
insert into tbl select * from hdfs("hdfs://bucket/file.*") where c1 > 2;
TVF 可以幫助使用者充分利用 SQL 豐富的表達能力,靈活處理各類資料。
相關文件:
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/table-functions/s3
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/table-functions/hdfs
更多功能
1. 更便捷的分割槽建立方式
支援通過FROM TO
命令建立一個時間範圍內的多個分割槽。
相關文件:
示例:
-- 根據時間date 建立分割槽,支援多個批量邏輯和單獨建立分割槽的混合使用
PARTITION BY RANGE(event_day)(
FROM ("2000-11-14") TO ("2021-11-14") INTERVAL 1 YEAR,
FROM ("2021-11-14") TO ("2022-11-14") INTERVAL 1 MONTH,
FROM ("2022-11-14") TO ("2023-01-03") INTERVAL 1 WEEK,
FROM ("2023-01-03") TO ("2023-01-14") INTERVAL 1 DAY,
PARTITION p_20230114 VALUES [('2023-01-14'), ('2023-01-15'))
)
-- 根據時間datetime 建立分割槽
PARTITION BY RANGE(event_time)(
FROM ("2023-01-03 12") TO ("2023-01-14 22") INTERVAL 1 HOUR
)
2. 列重新命名
對於開啟了 Light Schema Change 的表,支援對列進行重新命名。
相關文件:
3. 更豐富的許可權管理
- 支援行級許可權。可以通過
CREATE ROW POLICY
命令建立行級許可權。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-POLICY - 支援指定密碼強度、過期時間等。
- 支援在多次失敗登入後鎖定賬戶。相關文件: https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Account-Management-Statements/ALTER-USER
4. 匯入相關
- CSV 匯入支援帶 Header 的 CSV 檔案。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD/
- Stream Load 新增
hidden_columns
,可以顯式指定 Deleteflag 列和 Sequence列。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD - Spark Load 支援 Parquet 和 ORC 檔案匯入。
- 支援清理已完成的匯入的 Label。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CLEAN-LABEL
- 支援通過狀態批量取消匯入作業。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Load/CANCEL-LOAD
- Broker Load 新增支援阿里雲 OSS,騰訊 CHDFS 和華為雲 OBS。相關* 文件*:https://doris.apache.org/zh-CN/docs/dev/advanced/broker
- 支援通過 hive-site.xml 檔案配置訪問 HDFS。相關* 文件*:https://doris.apache.org/zh-CN/docs/dev/admin-manual/config/config-dir
5. 支援通過SHOW CATALOG RECYCLE BIN功能查看回收站中的內容。
相關文件:
6. 支援SELECT * EXCEPT
語法
相關文件:
https://doris.apache.org/zh-CN/docs/dev/data-table/basic-usage
7. OUTFILE 支援 ORC 格式匯出,並且支援多位元組分隔符
相關文件:
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/OUTFILE
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/OUTFILE
8. 支援通過配置修改可儲存的 Query Profile 的數量。
文件搜尋 FE 配置項:max_query_profile_num
9.DELETE語句支援IN謂詞條件,並且支援分割槽裁剪。
10. 時間列的預設值支援使用CURRENT_TIMESTAMP
11. 新增兩張系統表:backends、rowsets
backends 是 Doris 中內建系統表,存放在 information_schema 資料庫下,通過該系統表可以檢視當前 Doris 叢集中的 BE 節點資訊。
rowsets 是 Doris 中內建系統表,存放在 information_schema
資料庫下,通過該系統表可以檢視 Doris 叢集中各個 BE 節點當前 rowsets 情況。
相關文件:
- https://doris.apache.org/zh-CN/docs/dev/admin-manual/system-table/backends
- https://doris.apache.org/zh-CN/docs/dev/admin-manual/system-table/rowsets
12. 備份恢復
- Restore作業支援
reserve_replica
引數,使得恢復後的表的副本數和備份時一致。 - Restore 作業支援
reserve_dynamic_partition_enable
引數,使得恢復後的表保持動態分割槽開啟狀態。相關* *文件:**https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/RESTORE - 支援通過內建的Libhdfs 進行備份恢復操作,不再依賴 Broker。相關文件: https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Backup-and-Restore/CREATE-REPOSITORY
13. 支援同機多磁碟之間的資料均衡
相關文件:
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-REBALANCE-DISK
- https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-CANCEL-REBALANCE-DISK
14. Routine Load 支援訂閱 Kerberos 認證的 Kafka 服務。
相關文件:
https://doris.apache.org/zh-CN/docs/dev/data-operate/import/import-way/routine-load-manual
15. New built-in-function 新增內建函式
新增以下內建函式:
-
cbrt
-
sequence_match/sequence_count
-
mask/mask_first_n/mask_last_n
-
elt
-
any/any_value
-
group_bitmap_xor
-
ntile
-
nvl
-
uuid
-
initcap
-
regexp_replace_one/regexp_extract_all
-
multi_search_all_positions/multi_match_any
-
domain/domain_without_www/protocol
-
running_difference
-
bitmap_hash64
-
murmur_hash3_64
-
to_monday
-
not_null_or_empty
-
window_funnel
-
outer combine
-
以及所有 Array 函式
升級注意事項
FE 元資料版本變更 【重要】
FE Meta Version 由 107 變更為 114,因此從 1.1.x 以及更早版本升級至 1.2.0 版本後,不可回滾到之前版本。
升級過程中,建議通過灰度升級的方式,先升級部分節點並觀察業務執行情況,以降低升級風險,若執行非法的回滾操作將可能導致資料丟失與損壞。
行為改變
- 許可權層級變更,因為引入了 Catalog 層級,所以相應的使用者許可權層級也會自動變更。規則如下:
-
- GlobalPrivs 和 ResourcePrivs 保持不變
- 新增 CatalogPrivs 層級。
- 原 DatabasePrivs 層級增加 internal 字首(表示 internal catalog 中的 db)
- 原 TablePrivs 層級增加 internal 字首(表示internal catalog中的 tbl)
- GroupBy 和 Having 子句中,優先使用列名而不是別名進行匹配。
- 不再支援建立以 "mv " 開頭的列。"mv" 是物化檢視中的保留關鍵詞
- 移除了 orderby 語句預設新增的 65535 行的 Limit 限制,並增加 Session 變數
default_order_by_limit
可以自定配置這個限制。 - "Create Table As Select" 生成的表,所有字串列統一使用 String 型別,不再區分 varchar/char/string
- audit log 中,移除 db 和 user 名稱前的
default_cluster
字樣。 - audit log 中增加 sql digest 欄位
- union 子句總 order by 邏輯變動。新版本中,order by 子句將在 union 執行完成後執行,除非通過括號進行顯式的關聯。
- 進行 Decommission 操作時,會忽略回收站中的 Tablet,確保 Decomission 能夠完成。
- Decimal 的返回結果將按照原始列中宣告的精度進行顯示 ,或者按照顯式指定的 Cast 函式中的精度進行展示。
- 列名的長度限制由 64 變更為 256
- FE 配置項變動
-
- 預設開啟
enable_vectorized_load
引數。 - 增大了
create_table_timeout
值。建表操作的預設超時時間將增大。 - 修改
stream_load_default_timeout_second
預設值為 3天。 - 修改
alter_table_timeout_second
的預設值為 一個月。 - 增加引數
max_replica_count_when_schema_change
用於限制 alter 作業中涉及的 Replica 數量,預設為 100000。 - 新增
disable_iceberg_hudi_table
。預設禁用了 Iceberg 和 Hudi 外表,推薦使用 Multi Catalog功能。
- 預設開啟
- BE 配置項變動
-
- 移除了
disable_stream_load_2pc
引數。2PC的 Stream Load 可直接使用。 - 修改
tablet_rowset_stale_sweep_time_sec
從 1800 秒修改為 300 秒。
- 移除了
- Session 變數變動
-
- 修改變數
enable_insert_strict
預設為 true。這會導致一些之前可以執行,但是插入了非法值的 insert 操作,不再能夠執行。 - 修改變數
enable_local_exchange
預設為 true - 預設通過 lz4 壓縮排行資料傳輸,通過變數
fragment_transmission_compression_codec
控制 - 增加
skip_storage_engine_merge
變數,用於除錯 Unique 或 Agg 模型的資料。 相關* *文件:**https://doris.apache.org/zh-CN/docs/dev/advanced/variables
- 修改變數
- BE 啟動指令碼會通過
/proc/sys/vm/max_map_count
檢查數值是否大於200W,否則啟動失敗。 - 移除了 mini load 介面
升級過程需注意
升級準備
- 需替換:lib, bin 目錄(start/stop 指令碼均有修改)
- BE 也需要配置
JAVA_HOME
,已支援 JDBC Table 和 Java UDF。 fe.conf
中預設JVM Xmx
引數修改為 8GB。
升級過程中可能的錯誤
- Repeat 函式不可使用並報錯:
vectorized repeat function cannot be executed
,可以在升級前先關閉向量化執行引擎。 - Schema Change 失敗並報錯:desc_tbl is not set. Maybe the FE version is not equal to the BE
- 向量化 Hash Join 不可使用並報錯。vectorized hash join cannot be executed可以在升級前先關閉向量化執行引擎。
以上錯誤在完全升級後會恢復正常。
效能影響
- 預設使用 JeMalloc 作為新版本 BE 的記憶體分配器,替換 TcMalloc 。JeMalloc 相比 TcMalloc 使用的記憶體更少、高併發場景效能更高,但在記憶體充足的效能測試時,TcMalloc 比 JeMalloc 效能高5%-10%,詳細測試見: https://github.com/apache/doris/pull/12496
tablet sink
中batch size
修改為至少 8K。- 預設關閉 Page Cache 和 減少 Chunk Allocator 預留記憶體大小。
Page Cache 和 Chunk Allocator 分別快取使用者資料塊和記憶體預分配,這兩個功能會佔用一定比例的記憶體並且不會釋放。由於這部分記憶體佔用無法靈活調配,導致在某些場景下可能因這部分記憶體佔用而導致其他任務記憶體不足,影響系統穩定性和可用性,因此新版本中預設關閉了這兩個功能。
但在某些延遲敏感的報表場景下,關閉該功能可能會導致查詢延遲增加。如使用者擔心升級後該功能對業務造成影響,可以通過在 be.conf
中增加以下引數以保持和之前版本行為一致。
disable_storage_page_cache=false
chunk_reserved_bytes_limit=10%
)
API 變化
- BE 的 HTTP API 錯誤返回資訊,由
{"status": "Fail", "msg": "xxx"}
變更為更具體的{"status":"Notfound","msg":"Tabletnotfound.tablet_id=1202"} SHOW CREATE TABLE
中, Comment 的內容由雙引號包裹變為單引號包裹- 支援普通使用者通過 HTTP 命令獲取 Query Profile。相關文件:https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/fe/manager/query-profile-action
- 優化了 Sequence 列的指定方式,可以直接指定列名。相關文件:https://doris.apache.org/zh-CN/docs/dev/data-operate/update-delete/sequence-column-manual
show backends
和show tablets
返回結果中,增加遠端儲存的空間使用情況- 移除了 Num-Based Compaction 相關程式碼
- 重構了BE的錯誤碼機制,部分返回的錯誤資訊會發生變化
其他
- 支援 Docker 官方映象。
- 支援在 MacOS(x86/M1) 和 ubuntu-22.04 上編譯 Doris。
- 支援進行 image 檔案的校驗。相關文件:https://doris.apache.org/zh-CN/docs/dev/admin-manual/maint-monitor/metadata-operation
- 指令碼相關
-
- FE、BE 的 stop 指令碼支援通過
--grace
引數退出FE、BE(使用 kill -15 訊號代替 kill -9) - FE start 指令碼支援通過
--version
檢視當前FE 版本
- FE、BE 的 stop 指令碼支援通過
- 支援通過 ADMIN COPY TABLET命令獲取某個 tablet 的資料和相關建表語句,用於本地問題除錯。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Database-Administration-Statements/ADMIN-COPY-TABLET
- 支援通過 http api,獲取一個SQL語句相關的建表語句,用於本地問題復現。相關文件:https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/fe/query-schema-action
- 支援建表時關閉此表的 Compaction 功能,用於測試。相關文件:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-TABLE
致謝
Apache Doris 1.2.0 版本的釋出離不開所有社群使用者的支援,在此向所有參與版本設計、開發、測試、討論的社群貢獻者們表示感謝,他們分別是(首字母排序):
貢獻者名單
@a19920714liou
@Aiden-Dong
@aiwenmo
@AshinGau
@b19mud
@BePPPower
@BiteTheDDDDt
@bridgeDream
@ByteYue
@caiconghui
@CalvinKirs
@cambyzju
@caoliang-web
@carlvinhust2012
@catpineapple
@ccoffline
@chenlinzhong
@chovy-3012
@coderjiang
@cxzl25
@dataalive
@dataroaring
@dependabot
@dinggege1024
@DongLiang-0
@Doris-Extras
@eldenmoon
@EmmyMiao87
@englefly
@FreeOnePlus
@Gabriel39
@gaodayue
@geniusjoe
@gj-zhang
@gnehil
@GoGoWen
@HappenLee
@hello-stephen
@Henry2SS
@hf200012
@huyuanfeng2018
@jacktengg
@jackwener
@jeffreys-cat
@Jibing-Li
@JNSimba
@Kikyou1997
@Lchangliang
@LemonLiTree
@lexoning
@liaoxin01
@lide-reed
@link3280
@liutang123
@liuyaolin
@LOVEGISER
@lsy3993
@luozenglin
@luzhijing
@madongz
@morningman
@morningman-cmy
@morrySnow
@mrhhsg
@Myasuka
@myfjdthink
@nextdreamblue
@pan3793
@pangzhili
@pengxiangyu
@platoneko
@qidaye
@qzsee
@SaintBacchus
@SeekingYang
@smallhibiscus
@sohardforaname
@song7788q
@spaces-X
@ssusieee
@stalary
@starocean999
@SWJTU-ZhangLei
@TaoZex
@timelxy
@Wahno
@wangbo
@wangshuo128
@wangyf0555
@weizhengte
@weizuo93
@wsjz
@wunan1210
@xhmz
@xiaokang
@xiaokangguo
@xinyiZzz
@xy720
@yangzhg
@Yankee24
@yeyudefeng
@yiguolei
@yinzhijian
@yixiutt
@yuanyuan8983
@zbtzbtzbt
@zenoyang
@zhangboya1
@zhangstar333
@zhannngchen
@ZHbamboo
@zhengshiJ
@zhenhb
@zhqu1148980644
@zuochunwei
@zy-kkk
— END —
最後,歡迎更多的開源技術愛好者加入 Apache Doris 社群,攜手成長,共建社群生態。Apache Doris 社群當前已容納了上萬名開發者和使用者,承載了 30+ 交流社群,如果你也是 Apache Doris 的愛好者,掃碼加入 Apache Doris 社群使用者交流群,在這裡你可以獲得:
- 專業全職團隊技術支援
- 直接和社群專家交流,獲取免費且專業回覆
- 認識不同行業的開發者,收穫知識以及合作機會
- Apache Doris 最新版本優先體驗權
- 獲取一手乾貨和資訊以及活動優先參與權
- Apache Doris 在美聯物業的資料倉庫應用實踐,助力傳統行業數字化革新!
- 杭銀消金基於 Apache Doris 的統一資料查詢閘道器改造
- 併發提升 20 倍、單節點數萬 QPS,Apache Doris 高併發特性解讀
- 如何基於 Apache Doris 與 Apache Flink 快速構建極速易用的實時數倉
- 從 Clickhouse 到 Apache Doris,慧策電商 SaaS 高併發資料服務的改造實踐
- 開源新生代的成長之路:從校園到開源,需要邁過哪些挑戰?
- 如何基於 Apache Doris 構建簡易高效的使用者行為分析平臺?
- 查詢效能較 Trino/Presto 3-10 倍提升!Apache Doris 極速資料湖分析深度解讀
- 資源消耗降低 90%,速度提升 50%,解讀 Apache Doris Compaction 最新優化與實現
- 從 ClickHouse 到 Apache Doris,騰訊音樂內容庫資料平臺架構演進實踐
- 一文教你玩轉 Apache Doris 分割槽分桶新功能
- 打破資料孤島,Apache Doris 助力縱騰集團快速構建流批一體數倉架構
- 實時分析全面賦能金融業務,馬上消費基於 Apache Doris 構建實時數倉的實踐
- 更高效能表現、更低資源佔用,高精度計算資料型別 DecimalV3 揭祕
- Java UDF 的設計與使用介紹,相容 Hive UDF 實現資料快速遷移
- 下一個十年,我們需要一款什麼樣的分析型資料庫?
- 更穩定!Apache Doris 1.2.1 Release 版本正式釋出|版本通告
- Apache Doris 在小米億級使用者行為分析平臺的實踐|最佳實踐
- 複雜查詢響應速度提升10 倍,度言軟體基於 Apache Doris 實時數倉建設實踐
- 併發提升 10 倍,運算延時降低 70%,領健從 ClickHouse 和 Kudu 到 Apache Doris 數倉升級實踐