Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Arbetsbelastningshantering (WLM) är tillgängligt för kunder som startar HDInsight 4.0-kluster. Använd resurserna nedan för att felsöka problem som rör WLM-funktionen.
Hämta entiteter för WLM-resursplan och -plan
Så här hämtar du alla resursplaner i klustret:
SHOW RESOURCE PLANS;
Så här hämtar du definitionen av en viss resursplan
SHOW RESOURCE PLAN <plan_name>;
Hämta information om WLM-entiteter från metaarkivdatabasen
Anteckning
Gäller endast för anpassad hive-metaarkivdatabas
Information om WLM-entiteter kan också visas från följande tabeller i Hive Metastore-databasen
- WM_RESOURCEPLANS (NAMNsträng, STATUS-sträng, QUERY_PARALLELISM int, DEFAULT_POOL_PATH sträng)
- WM_POOLS (RP_NAME sträng, PATH-sträng, ALLOC_FRACTION dubbel, QUERY_PARALLELISM int, SCHEDULING_POLICY sträng)
- WM_MAPPINGS (RP_NAME sträng, ENTITY_TYPE sträng, ENTITY_NAME sträng, POOL_PATH sträng, ORDERING int)
- WM_TRIGGERS (RP_NAME sträng, NAMNsträng, TRIGGER_EXPRESSION sträng, ACTION_EXPRESSION sträng)
- WM_POOLS_TO_TRIGGERS (RP_NAME sträng, POOL_PATH sträng, TRIGGER_NAME sträng)
WLM-mått
WLM-mått kan nås direkt via HS2Interactive
användargränssnittet under fliken Måttdump.
Exempelmått som publicerats av WLM för en viss pool i en resursplan.
"name" : "Hadoop:service=hiveserver2,name=WmPoolMetrics.etl",
"modelerType" : "WmPoolMetrics.etl",
"tag.Context" : "HS2",
"tag.SessionId" : "etl",
"tag.Hostname" : "hn0-c2b-ll.cu1cgjaim53urggr4psrgczloa.cx.internal.cloudapp.net",
"NumExecutors" : 10,
"NumRunningQueries" : 2,
"NumParallelQueries" : 3,
"NumQueuedQueries" : 0,
"NumExecutorsMax" : 10
HS2Interactive
Användargränssnittet kanske inte fungerar för de ESP(Enterprise Security Package)-aktiverade kluster som släpptes före apr 2021. I sådana fall kan WLM-relaterade mått hämtas från anpassade Grafana-instrumentpaneler.
Måttnamnet följer nedanstående mönster:
default.General.WM_<pool>_numExecutors
default.General.WM_<pool>_numExecutorsMax
default.General.WM_<pool>_numRunningQueries
default.General.WM_<pool>_numParallelQueries
default.General.WM_<pool>_numQueuedQueries
Ersätt <pool>
med respektive poolnamn för att hämta måtten i grafana.
Obs! Kontrollera att hiveserver2-komponenten är markerad i ovanstående filter och komponentnamn.
Egenskaper för WLM-funktioner
Livscykel för Tez AMs i WLM-aktiverade kluster
Till skillnad från standard-LLAP-kluster har WLM-aktiverade kluster en annan uppsättning Tez-AM:er. Dessa Tez-AM:er är schemalagda att köras i wm
kö om hive.server2.tez.interactive.queue=wm har angetts i hive-konfigurationer.
Dessa Tez-AM:er skapas när WLM aktiveras baserat på summan av QUERY_PARALLELISM av alla pooler som definierats i resursplanen.
När vi inaktiverar arbetsbelastningshantering i klustret dödas dessa Tez-AM:er automatiskt.
{ DISABLE WORKLOAD MANAGEMENT; }
Resurskonkurration
I WLM-aktiverat LLAP-kluster delas resurser mellan frågor baserat på konfiguration av resursplan. Resursdelningen leder ibland till långsamma frågor.
Vissa justeringar kan göras i resursplanen för att minska den resurskonkurration som sker i en pool. Kan till exempel scheduling_policy
definieras som antingen fair
, vilket garanterar en lika stor andel resurser i klustret till varje fråga som är tilldelad till poolen, eller fifo
, som garanterar alla resurser till den första frågan som kommer till poolen.
I följande exempel visas hur du ställer in schemaläggningsprincipen för en pool med namnet etl
i resursplanen wlm_basic
:
ALTER POOL wlm_basic.etl SET SCHEDULING_POLICY = fair;
Du kan också ange schemaläggningsprincipen när du skapar poolen:
CREATE POOL wlm_basic.default WITH ALLOC_FRACTION = 0.5, QUERY_PARALLELISM = 2, SCHEDULING_POLICY = fifo;
Frågefel för vissa specifika användningsfall
Frågor som körs i WLM kan avlivas automatiskt i följande fall:
- När Flytta utlösare tillämpas på en fråga och målpool som inte har några Tez-AM:er tillgängliga, avlivas frågan i stället.
Ovanstående är en designbegränsning för WLM-funktionen. Du kan kringgå denQUERY_PARALLELISM
här funktionen genom att öka egenskapen för målpoolen så att även för scenariot med maximal belastning kan de frågor som skickas till klustret stödjas av den här poolen. Justera även köstorlekenwm
för att hantera den här ändringen. - När WLM är inaktiverat misslyckas alla inflight-frågor med följande undantagsmönster:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Dag received [DAG_TERMINATE, DAG_KILL] in RUNNING state.
- När en WLM Tez AM avlivas manuellt kan vissa frågor misslyckas med följande mönster.
De här frågorna bör köras utan problem vid vidareprenumerering.
java.util.concurrent.CancellationException: Task was cancelled.
at com.google.common.util.concurrent.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1349) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:550) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:513) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:90) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:237) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.Futures.getDone(Futures.java:1064) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1013) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1137) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:957) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture.cancel(AbstractFuture.java:611) ~[guava-28.0-jre.jar:?]
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.cancel(AbstractFuture.java:118) ~[guava-28.0-jre.jar:?]
at org.apache.hadoop.hive.ql.exec.tez.WmTezSession$TimeoutRunnable.run(WmTezSession.java:264) ~[hive-exec-3.1.3.4.1.3.6.jar:3.1.3.4.1.3.6]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_275]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_275]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_275]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_275]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_275]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_275]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_275]
Kända problem
Spark-jobb som skickas via Hive Warehouse Connector (HWC) kan uppleva tillfälliga fel om mål-LLAP-klustret har WLM-funktionen aktiverad.
För att undvika ovanstående problem kan kunden ha två LLAP-kluster, ett med WLM aktiverat och ett annat utan WLM. Kunden kan sedan använda HWC för att ansluta sitt Spark-kluster till LLAP-klustret utan WLM.Kommandot
DISABLE WORKLOAD MANAGEMENT;
hänger sig länge ibland.
Avbryt kommandot och kontrollera statusen för resursplaner med följande kommando:SHOW RESOURCE PLANS;
Kontrollera om en aktiv resursplan är tillgänglig innan du körDISABLE WORKLOAD MANAGEMENT
kommandot igen.En del av Tez AM kan fortsätta köras och försvinner inte med
DISABLE WORKLOAD MANAGEMENT
kommandot eller HS2-omstarten.
Döda dessa Tez AMs viayarn UI
elleryarn console application
efter inaktivering av arbetsbelastningshantering.