本文為您介紹查看、建立、刪除以及擴縮容計算群組等管理命令。
注意事項
僅Hologres V2.0.4及以上版本的執行個體支援使用計算群組模式,如果您的執行個體是V2.0.4以下版本,請聯絡支援人員升級執行個體。
每個執行個體最多可以建立10個計算群組,每個計算群組資源最小32 CU,最大512 CU。
自V3.0.10版本起,計算群組的最大規格調整至1024 CU。
自V3.0.27版本起,取消計算群組的最大規格限制。
新購執行個體時,系統預設會有一個名稱為
init_warehouse的預設計算群組。一個執行個體只有一個預設計算群組,且預設計算群組無法刪除,但是可以修改。不支援使用SQL命令進行預設計算群組的停止或恢複操作。預設情況下,所有使用者都有使用預設計算群組的許可權。所有計算群組都可以執行DDL。
計算群組型執行個體不支援配置資源群組(即將下線),資源群組詳情請參見資源群組管理。推薦通過劃分多個計算群組以實現資源隔離。
計算群組執行個體計費相關資訊請參見計費概述。
建立計算群組
注意事項
僅支援使用阿里雲帳號或者RAM使用者建立計算群組,需要具備執行個體的Superuser許可權。
由於建立計算群組的過程是非同步,執行建立計算群組SQL後,並不代表計算群組建立完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
單擊新增計算群組,在新增計算群組對話方塊中配置如下參數,並單擊確認。
參數名
說明
計算群組名稱
待建立的計算群組名稱。
計算群組單Cluster規格
計算群組中,每個Cluster的預留資源量。
計算群組預留Cluster數
計算群組初始狀態下的Cluster數,預留Cluster的計算資源需要從執行個體預留資源中擷取。
更多資訊請參見資源彈性概述。
SQL命令
命令格式
CALL hg_create_warehouse ('<warehouse_name>', <cu>);參數說明
參數
類型
說明
warehouse_name
TEXT
建立的計算群組名稱,命名要求:
僅支援數字、英文字母和底線的組合。
最長支援127個字元。
cu
INTEGER
計算群組的CU數。
最大值:512。
最小值:32。
步長:16。
刪除計算群組
注意事項
僅支援使用阿里雲帳號或者RAM使用者刪除計算群組,需要具備執行個體的Superuser許可權。
執行個體的預設計算群組不支援刪除。
Table Group的主計算群組不支援使用SQL命令刪除。
由於刪除計算群組的過程是非同步,執行SQL後,並不代表計算群組刪除完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
在目標計算群組的操作列單擊停止,確認並停止計算群組。
計算群組停止後,可單擊操作列的刪除,以刪除計算群組。
SQL命令
命令格式
CALL hg_drop_warehouse ('<warehouse_name>');參數說明
參數
類型
說明
warehouse_name
TEXT
需要刪除的計算群組名稱。
計算群組變更配置
許可權說明
V3.0.28版本前,僅支援使用阿里雲帳號或者RAM使用者執行計算群組變更配置操作。V3.0.28版本起,支援RamRole(即STS帳號)執行計算群組變更配置操作。
執行計算群組變更配置操作需要具備以下許可權:
RAM角色許可權:AliyunHologresWarehouseFullAccess或AliyunHologresFullAccess許可權。
執行個體內部的Superuser許可權。
計算群組彈性變更配置原理請參見資源彈性概述。
計算群組縱向擴容(Scale up)
使用說明
擴容計算群組前,需要先在管控台上擴容執行個體的資源,確保執行個體有足夠的未分配資源。當執行個體資源調整完畢後,系統會拉起新的Pod,但是此時Pod上並未載入任何Shard的中繼資料,所以擴容出來的Pod不會參與計算,執行個體擴容的操作不會影響計算群組的查詢和寫入。
執行個體擴容完成,且有足夠的未分配資源後,可以繼續使用該部分未分配資源,擴容計算群組資源。如果執行個體未分配資源不足,則無法完成計算群組擴容。
自Hologres V2.2版本起,如果計算群組有空Pod,系統會自動執行Rebalance操作,使新的Pod載入Shard的中繼資料。在Rebalance完成後,才能使用新擴容的資源,Rebalance時查詢和寫入會中斷15秒。因此,如果您的執行個體為V2.2及以上版本,擴容計算群組後,無需手動執行Rebalance操作。如果您的執行個體版本低於V2.2,則需手動執行Rebalance操作。
Hologres V3.0.28版本起,計算群組擴容期間,計算群組的查詢和寫入不會中斷,但Flink任務可能失敗重試。
說明擴容期間,多行DML事務仍會中斷,包括顯式開啟
hg_experimental_enable_transaction參數的DML事務、原生INSERT OVERWRITE文法,以及Dynamic Table增量重新整理等。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
單擊目標計算群組操作列的調整配置,增加計算群組單Cluster規格至目標資源量,並單擊確認,即可完成縱向擴容。
(可選)待執行個體資源擴容完畢後,可單擊目標計算群組操作列的Rebalance,按需進行Rebalance,使Shard重新分配到增加擴容的pods上。
SQL命令
擴容計算群組資源,操作文法如下:
CALL hg_alter_warehouse ('<warehouse_name>',<cu>);參數說明:
參數
類型
說明
warehouse_name
TEXT
需要調整的計算群組名稱。
cu
INTEGER
計算群組的CU數。
最大值:512。
最小值:32。
步長:16。
查詢計算群組的狀態。
由於調整計算群組計算資源的過程是非同步,執行SQL後,並不代表計算群組計算資源調整完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。select hg_get_warehouse_status('<warehouse_name>');返回結果為Running,即計算群組在Running狀態下,繼續下面步驟。
Shard重分布。
使用如下命令讓Shard重新分配到增加擴容的計算群組上。
SELECT hg_rebalance_warehouse ('<warehouse_name>');查詢計算群組的狀態。
由於rebalance的過程是非同步,執行SQL後,並不代表rebalance調整完成,需要您使用如下命令查詢計算群組的狀態。
hg_get_rebalance_warehouse_status函數返回當前計算群組的狀態:SELECT hg_get_rebalance_warehouse_status ('<warehouse_name>');返回
DONE即表示成功。hg_wait_until_rebalance_warehouse_done函數可以直到指定計算群組處於Running狀態時,再返回結果:select hg_wait_until_rebalance_warehouse_done('<warehouse_name>',<timeout_seconds>);其中timeout_seconds:非必填。代表返回逾時時間,單位為秒,類型為INTEGER。
返回
DONE即表示成功。
樣本:使用如下SQL為read_warehouse_1計算群組擴容至64CU。
-- 增加計算群組的資源
CALL hg_alter_warehouse ('read_warehouse_1',64);
-- 等待計算群組擴容完畢
SELECT wait_until_warehouse_running ('read_warehouse_1');
-- rebalance
SELECT hg_rebalance_warehouse ('read_warehouse_1');
-- 等待rebalance完畢
SELECT hg_wait_until_rebalance_warehouse_done ('read_warehouse_1');計算群組縱向縮容(Scale down)
使用說明
縮容時Hologres系統會先做Shard的Rebalance,將準備下線的Pod上的Shard遷移到其他Pod上。
Hologres V3.1版本前,計算群組縮容期間,Rebalance中查詢和寫入會中斷15秒。Rebalance完成後,直接下線多餘的Pods。
(Beta)Hologres V3.1版本起,最佳化了計算群組縮容時的Pod下線邏輯。計算群組縮容期間,計算群組中主要的查詢和寫入不會中斷,Pod上的串連會隨Pod下線出現一次秒級閃斷,Flink任務可能失敗重試。但如果觸發縮容時,計算群組中正在運行某條大查詢或大寫入,並且需要繼續運行60分鐘以上,則該任務將在縮容後第60分鐘報錯。
說明縮容期間,多行DML事務仍會中斷,包括顯式開啟
hg_experimental_enable_transaction參數的DML事務、原生INSERT OVERWRITE文法,以及Dynamic Table增量重新整理等。縮容後,計算資源會歸屬到執行個體未分配資源中,您可以繼續使用該資源建立計算群組或擴容其他計算群組,也可以縮容執行個體以釋放該資源。
操作方式
(推薦)介面操作
操作步驟請參考計算群組縱向擴容,減少計算群組單Cluster規格至目標資源量,即可完成縱向縮容。
SQL命令
縮容計算群組資源,操作文法如下:
CALL hg_alter_warehouse ('<warehouse_name>',<cu>);參數說明:
參數
類型
說明
warehouse_name
TEXT
需要調整的計算群組名稱。
cu
INTEGER
計算群組的CU數。
最大值:512。
最小值:32。
步長:16。
查詢計算群組的狀態。
由於調整計算群組計算資源的過程是非同步,執行SQL後,並不代表計算群組計算資源調整完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。select hg_get_warehouse_status('<warehouse_name>');返回結果為running,即計算群組狀態為running狀態。
計算群組橫向增加Cluster(Scale out)
使用說明
詳情請參見Scale up使用說明。
操作步驟
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
單擊目標計算群組操作列的調整配置,增加計算群組預留Cluster數至目標數量,並單擊確認,即可完成橫向增加Cluster操作。
計算群組橫向減少Cluster(Scale in)
使用說明
詳情請參見Scale down使用說明。
操作步驟
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
單擊目標計算群組操作列的調整配置,減少計算群組預留Cluster數至目標數量,並單擊確認,即可完成橫向減少Cluster操作。
計算群組營運操作
查看計算群組
命令格式
系統資料表
hologres.hg_warehouses存放了當前執行個體所有計算群組的資訊,您可以使用如下SQL查看當前執行個體下所有的計算群組的資訊。SELECT * FROM hologres.hg_warehouses;使用如下SQL查看當前使用的計算群組,系統將會返回當前使用的計算群組名稱。
SELECT current_warehouse();
參數說明
系統資料表
hologres.hg_warehouses中包含的欄位資訊如下:欄位
欄位類型
說明
樣本值
warehouse_id
INTEGER
計算群組ID,是計算群組的唯一ID。
1
warehouse_name
TEXT
計算群組名稱。
init_warehouse
cpu
INTEGER
計算群組的CPU(單位Core)。
32
mem
INTEGER
計算群組的記憶體(單位GB)。
128
cluster_min_count
INTEGER
計算群組的最小分區數量。
1
cluster_max_count
INTEGER
計算群組的最大分區數量。
1
target_status
INTEGER
計算群組的目標狀態,由於變更計算群組狀態是非同步,例如執行建立計算群組的SQL,系統會立即返回SQL執行結果,但返回SQL結果時,並非計算群組已經建立成功,系統會在後台非同步建立計算群組,這裡的狀態記錄了計算群組最終需要達到的狀態,有如下狀態:
1:運行中。
2:手動停機。
1
status
INTEGER
計算群組目前狀態,有如下狀態:
0:初始化。
1:運行中。
2:手動停機。
3:處理失敗,如果狀態為處理失敗,status_detail欄位會顯示具體的原因。
4:處理中。
1
status_detail
TEXT
計算群組狀態詳情。
無
is_default
BOOLEAN
是否是預設計算群組,有如下取值:
t:是預設計算群組。
f:不是預設計算群組。
t
config
TEXT
計算群組配置。
無
comment
TEXT
計算群組備忘。
無
停止計算群組
注意事項
停止計算群組需要具備執行個體的Superuser許可權。
若計算群組對應的Table Group有從計算群組,那麼該計算群組無法被停止。例如計算群組A是Table Group A的主計算群組,負責向Table Group A中的表寫入資料,計算群組B是Table Group A的從計算群組。此時暫時不支援停止計算群組A。
由於停止計算群組的過程是非同步,執行SQL後,並不代表計算群組停止完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
在目標計算群組的操作列單擊停止,確認並停止計算群組。
SQL命令
命令格式
CALL hg_suspend_warehouse ('<warehouse_name>');參數說明
參數
類型
說明
warehouse_name
TEXT
需要停止的計算群組名稱。
恢複計算群組
注意事項
恢複計算群組需要具備執行個體的Superuser許可權。
由於恢複計算群組的過程是非同步,執行SQL後,並不代表計算群組停止完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
在目標計算群組的操作列單擊啟動,確認並恢複計算群組。
SQL命令
命令格式
CALL hg_resume_warehouse ('<warehouse_name>');參數說明
參數
類型
說明
warehouse_name
TEXT
需要恢複的計算群組名稱。
重啟計算群組
注意事項
重啟計算群組需要具備執行個體的Superuser許可權。
由於重啟計算群組的過程是非同步,執行SQL後,並不代表計算群組重啟完成,需要您使用
hg_get_warehouse_status函數查詢計算群組的狀態。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
在目標計算群組的操作列單擊重啟,確認並重啟計算群組。
SQL命令
命令格式
CALL hg_restart_warehouse('<warehouse_name>');參數說明
參數
類型
說明
warehouse_name
TEXT
需要重啟的計算群組名稱。
擷取計算群組狀態
命令格式
使用如下SQL擷取計算群組的目前狀態:
select hg_get_warehouse_status('<warehouse_name>');由於Warehouse 的建立、擴縮容等都是非同步執行的,有時候需要變更計算群組狀態後再進行一些操作。此時可以使用
wait_until_warehouse_running函數,該函數可以直到指定計算群組處於Running狀態時,再返回結果,命令如下:select wait_until_warehouse_running('<warehouse_name>',<timeout_seconds>);
參數說明
參數
類型
說明
warehouse_name
TEXT
需要擷取狀態的計算群組名稱。
timeout_seconds
INTEGER
返回逾時時間,單位秒。非必填。
使用樣本
使用如下SQL實現每次從表
org_data向表res_data匯入資料時,先擴容計算群組,再匯入資料,然後縮容計算群組:-- warehouse_1擴容至64CU CALL hg_alter_warehouse ('warehouse_1',64); -- 等待warehouse_1擴容完成 SELECT wait_until_warehouse_running('warehouse_1'); -- 寫入資料 INSERT INTO res_data SELECT * FROM org_data; -- warehouse_1縮回32CU CALL hg_alter_warehouse ('warehouse_1',32);
修改計算群組名稱
注意事項
修改計算群組名稱需要具備執行個體的Superuser許可權。
操作方式
(推薦)介面操作
登入Hologres管理主控台,在頂部功能表列左側,選擇相應的地區。
在左側導覽列選擇執行個體列表,單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁的左側導覽列單擊計算群組管理,切換至計算群組資源管理頁簽。
在目標計算群組的計算群組名稱列單擊
表徵圖,修改計算群組名稱。
SQL命令
命令格式
CALL hg_rename_warehouse('<org_warehouse_name>','<new_warehouse_name>');參數說明
參數
類型
說明
org_warehouse_name
TEXT
需要修改的計算群組名稱。
new_warehouse_name
TEXT
計算群組的新名稱。
進階操作
計算群組均衡分區(Rebalance)
Hologres執行個體在運行時,每個計算群組的Worker節點會均勻地載入資料分區(Shard)的中繼資料。但是在某些情境下(例如觸發了快速恢複、擴容等),資料分區在Worker節點上分布不均,此時就需要觸發均衡分區操作,使系統主動的重新分配資料分區,最終讓計算群組的Worker節點均勻載入Shard的中繼資料。
許可權說明
觸發均衡分區操作需要具備執行個體的Superuser許可權。
注意事項
Hologres從 V2.1版本開始,如果計算群組內發現有空的Worker節點(未載入任何Shard),計算群組會自動觸發Rebalance。
Hologres從 V2.2版本開始,系統支援對計算群組Rebalance期間執行的查詢(SELECT)自動重試,使得查詢能在適當延長執行時間後順利完成,不會出現如
ERROR: fail to execute query internal error: Get rundown is not allowed in recovering state.異常報錯。
命令格式
SELECT hg_rebalance_warehouse ('<warehouse_name>');參數說明
參數
類型
說明
warehouse_name
TEXT
需要觸發均衡分區的計算群組名稱。
返回結果
觸發均衡分區操作後,有如下返回結果:
true:表示Rebalance觸發成功,系統開始進行Rebalance操作。
false:表示無需Rebalance。
報錯:表示Rebalance觸發失敗。例如存在Pod故障時,觸發Rebalance操作會報錯。
說明執行Rebalance過程中,系統會計算是否需要Rebalance,最終達到均衡狀態,即每個Worker載入的Shard數量差異小於等於1。例如:
如果有2個Worker,2個Shard,那麼最終每個Worker都會分到1個Shard。
如果有2個Worker,3個Shard,那麼最終其中1個Worker會分到1個Shard,另一個Worker會分到2個Shard。
Rebalance操作通常需要2~3分鐘,執行時間長度和計算群組中Table Group的數量有關,Table Group越多,Rebalance耗時越長。Rebalance過程中您的寫入大約會中斷15秒。
由於Rebalance是非同步執行,您可以使用如下SQL查看執行進度:
SELECT hg_get_rebalance_warehouse_status('<warehouse_name>');返回結果為
DOING表示正在執行Rebalance操作;返回結果為DONE表示Rebalance操作已完成。
設定計算群組的逾時時間長度
您可以通過設定statement_timeout參數,實現Session層級或資料庫層級的逾時時間長度設定,詳情請參見GUC參數。
針對計算群組,可以執行如下命令,為計算群組設定逾時時間長度。該配置優先順序低於上述Session層級和資料庫層級配置,因此需要先取消資料庫層級的配置。
-- 取消資料庫層級設定
ALTER DATABASE <db_name> RESET statement_timeout;
-- 設定計算群組的逾時時間長度為600s
CALL hg_alter_warehouse ('<warehouse_name>', <cu>, '{"configs":{"gucs":{"statement_timeout":"600000"}}}');