Dela via


Felsöka problem med hantering av Hive LLAP-arbetsbelastningar

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.
InteraktivT HS2-användargränssnitt.

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.

Grafana WLM-mått.

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:

  1. 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å den QUERY_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östorleken wm för att hantera den här ändringen.
  2. 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.
    
  3. 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ör DISABLE 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 via yarn UI eller yarn console application efter inaktivering av arbetsbelastningshantering.