Hive LLAP 工作負載管理 (WLM) 功能
在 Interactive Query 叢集中,資源管理是命令式的,特別是在多租用戶環境中。 Hive LLAP (低延遲分析處理) 會使用工作負載管理,讓使用者符合特定的工作負載需求,並防止爭用這些資源。
工作負載管理會實作資源集區 (也稱為查詢集區),其可讓您將 Hive/LLAP 可用的資源分割,以用於特定工作負載集區。
它也可讓您為每個個別資源集區設定資源百分比和查詢平行處理原則。
啟用 HDInsight 叢集的 Hive LLAP 工作負載管理功能
遵循下列步驟,在 HDInsight Interactive Query 叢集中啟用工作負載管理功能:
- 建立新的 yarn 佇列,其可用來啟動工作負載管理 Tez AM。
- 透過 Ambari 變更叢集設定,以在 Hive 中啟用該功能。
- 建立和啟用資源方案。
建立適用於工作負載管理功能的新 yarn 佇列
使用下列wm
指南的說明,建立名為 的新 yarn 佇列。
根據下列設定來設定叢集上的 wm
佇列:
QueueName | Capacity | 容量上限 | 優先順序 | AM 資源上限 |
---|---|---|---|---|
default |
5% | 5% | 0 | 33% |
llap |
85% | 100% | 10 | 33% |
wm |
10% | 15% | 9 | 100% |
確認 wm
佇列設定看起來是否如下所示。
在 Hive 設定中啟用工作負載管理功能
將下列屬性新增至自訂 hiveserver2-interactive-site,並將其值設定為新建立的 yarn 佇列名稱,也就是 wm
。 重新啟動互動式 HiveServer,以進行設定變更。
hive.server2.tez.interactive.queue=wm
建立資源方案
以下是如何建立基本資源方案的範例。
透過 Beeline 執行下列命令,以建立上述資源方案。
用來建立、檢視和卸除資源方案的命令
# CREATE RESOURCE PLAN
CREATE RESOURCE PLAN demo_plan;
# CREATE POOLS
ALTER POOL demo_plan.default SET ALLOC_FRACTION = 0.65, QUERY_PARALLELISM = 2;
CREATE POOL demo_plan.etl WITH ALLOC_FRACTION = 0.20, QUERY_PARALLELISM = 2;
CREATE POOL demo_plan.sys_accounts WITH ALLOC_FRACTION = 0.15, QUERY_PARALLELISM = 1;
# CREATE MAPPING
CREATE USER MAPPING 'hive' IN demo_plan TO sys_accounts WITH ORDER 1;
# CREATE TRIGGERS
CREATE TRIGGER demo_plan.defaultToETL WHEN ELAPSED_TIME > 20000 DO MOVE TO etl;
ALTER TRIGGER demo_plan.defaultToETL ADD TO POOL default;
CREATE TRIGGER demo_plan.ETLKill WHEN ELAPSED_TIME > 40000 DO KILL;
ALTER TRIGGER demo_plan.ETLKill ADD TO POOL etl;
# VALIDATE PLAN
ALTER RESOURCE PLAN demo_plan VALIDATE;
# ENABLE PLAN
ALTER RESOURCE PLAN demo_plan ENABLE;
# ACTIVATE PLAN
ALTER RESOURCE PLAN demo_plan ACTIVATE;
# SHOW RESOURCE PLAN
SHOW RESOURCE PLANS;
SHOW RESOURCE PLAN demo_plan;
# VALIDATE PLAN
ALTER RESOURCE PLAN demo_plan VALIDATE;
# ENABLE PLAN
ALTER RESOURCE PLAN demo_plan ENABLE;
# ACTIVATE PLAN
ALTER RESOURCE PLAN demo_plan ACTIVATE;
# SHOW RESOURCE PLAN
SHOW RESOURCE PLANS;
SHOW RESOURCE PLAN demo_plan;
# DISABLE PLAN
-- In case plan is in active state first run:
-- DISABLE WORKLOAD MANAGEMENT;
ALTER RESOURCE PLAN demo_plan DISABLE;
# DROP RESOURCE PLAN
DROP RESOURCE PLAN demo_plan;
了解資源方案
若要擁有最佳資源方案,您必須徹底了解工作負載需求。
集區數目
集區數目受限於查詢平行處理原則總計 (每個集區至少一個查詢)。 大部分的工作負載很少需要三個以上的集區。
- 預設,用於互動式查詢
- etl/batch,用於長時間執行的查詢
- sys,用於系統管理員
總計 QUERY_PARALLELISM
您可以使用下列公式來取得總計 QUERY_PARALLELISM 或並行查詢總計:
Number of total concurrent queries(Tez AMs) = Math.floor( (total cluster memory capacity / size of Tez AM container) x percentage of wm queue capacity)
例如:
假設 Tez AM 容器大小為 4 GB,而 yarn 叢集的記憶體容量總計為 400 GB,其中 10% 會配置給 wm 佇列,那麼,
並行查詢總計 = floor((400/4) x 0.10) = 10
提示
讓 wm 佇列中的容量較所需稍多,可避免 Tez AM 停滯在已接受狀態,也就是說,wm
佇列容量可以設為 10.01%,而 default
佇列容量可以縮減為 4.99%。
對應
對應提供將查詢導向特定集區的機制。 隨著對應數目增加,指定的查詢可能會適用多個規則。 若要建立應該優先的規則:如果使用選用的 WITH ORDER
子句指定排序,則較低順序的規則會優先。 否則,user
規則的優先順序會高於 application
規則,而 application
規則的優先順序會高於 group
規則。
具有相同優先順序的群組規則順序未定義。
注意
- 當 WLM 方案處於作用中狀態時,
llap
佇列中的 Tez AM 會維持未使用狀態。 當 WLM 資源方案停用時,llap
佇列中的這些 Tez AM 將會立即可供使用。 - 啟用 WLM 資源方案會啟動與針對指定資源方案所設定的總計
QUERY_PARALLELISM
相等的 Tez AM 數目。wm
佇列大小應經過微調,以避免這些 Tez AM 停滯在 ACCEPTED 狀態中。 - 我們僅支援使用下列兩個計數器,以用於資源方案:
- EXECUTION_TIME
- ELAPSED_TIME