Memecahkan masalah Manajemen Beban Kerja HIVE LLAP

Manajemen Beban Kerja (WLM) tersedia untuk pelanggan yang memulai kluster HDInsight 4.0. Gunakan sumber daya di bawah ini untuk membantu men-debug masalah yang terkait dengan fitur WLM.

Dapatkan paket sumber daya WLM dan entitas rencana

Untuk mendapat semua rencana sumber daya pada kluster:

SHOW RESOURCE PLANS;

Untuk mendapat definisi dari rencana sumber daya yang diberikan

SHOW RESOURCE PLAN <plan_name>;

Dapatkan informasi entitas WLM dari database metastore

Catatan

Hanya berlaku untuk database metastore hive kustom

Informasi entitas WLM juga dapat dilihat dari tabel berikut dalam database Hive Metastore

  • WM_RESOURCEPLANS (NAME string, STATUS string, QUERY_PARALLELISM int, DEFAULT_POOL_PATH string)
  • WM_POOLS (RP_NAME string, PATH string, ALLOC_FRACTION double, QUERY_PARALLELISM int, SCHEDULING_POLICY string)
  • WM_MAPPINGS (RP_NAME string, ENTITY_TYPE string, ENTITY_NAME string, POOL_PATH string, ORDERING int)
  • WM_TRIGGERS (RP_NAME string, NAME string, TRIGGER_EXPRESSION string, ACTION_EXPRESSION string)
  • WM_POOLS_TO_TRIGGERS (RP_NAME string, POOL_PATH string, TRIGGER_NAME string)

Metrik WLM

Metrik WLM dapat diakses langsung melalui HS2Interactive UI di bawah Tab Metrics Dump.
UI Interaktif HS2.

Contoh metrik yang diterbitkan oleh WLM untuk kumpulan tertentu dalam rencana sumber daya.

    "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 UI mungkin tidak berfungsi untuk kluster dengan dukungan ESP (Enterprise Security Package/Paket Keamanan Perusahaan) yang dirilis sebelum Apr 2021. Dalam kasus seperti itu, metrik terkait WLM dapat diperoleh dari dasbor Grafana yang disesuaikan.
Nama metrik mengikuti pola di bawah ini:

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

Ganti <pool> dengan nama pool masing-masing untuk mendapat metrik dalam grafana.

Metrik WLM Grafana.

Catatan: Pastikan komponen hiveserver2 dipilih dalam filter dan nama komponen di atas.


Karakteristik fitur WLM

Siklus hidup Tez AM di kluster dengan dukungan WLM

Berbeda dengan kluster LLAP default, kluster dengan dukungan WLM memiliki satu set Tez AM. Tez AM ini dijadwalkan untuk berjalan dalam antrean wm jika hive.server2.tez.interactive.queue=wm diatur dalam konfigurasi hive.
Tez AM ini muncul ketika WLM diaktifkan berdasarkan jumlah QUERY_PARALLELISM dari semua kumpulan yang ditentukan dalam rencana sumber daya.
Ketika kita menonaktifkan Workload Management di kluster, Tez AM ini secara otomatis DIBUNUH. { DISABLE WORKLOAD MANAGEMENT; }

Ketidaksesuaian sumber daya

Di kluster LLAP dengan dukungan WLM, sumber daya dibagi di antara kueri berdasarkan konfigurasi rencana sumber daya. Berbagi sumber daya terkadang menyebabkan perlambatan kueri. Beberapa penyetelan dapat dilakukan pada rencana sumber daya untuk mengurangi konten sumber daya yang terjadi dalam kumpulan. Misalnya scheduling_policy dapat didefinisikan sebagai fair yang menjamin bagian yang sama dari sumber daya pada kluster untuk setiap kueri yang ditetapkan ke kumpulan; atau fifo yang menjamin semua sumber daya ke kueri pertama yang datang ke kumpulan.
Contoh berikut menunjukkan cara menetapkan kebijakan penjadwalan untuk kumpulan yang dinamai etl dalam paket sumber daya wlm_basic:

ALTER POOL wlm_basic.etl SET SCHEDULING_POLICY = fair;

Seseorang juga dapat mengatur kebijakan penjadwalan saat membuat kumpulan:

CREATE POOL wlm_basic.default WITH ALLOC_FRACTION = 0.5, QUERY_PARALLELISM = 2, SCHEDULING_POLICY = fifo;

Kegagalan kueri untuk beberapa kasus penggunaan tertentu

Menjalankan kueri di WLM dapat dihentikan secara otomatis untuk kasus-kasus berikut:

  1. Saat Move Trigger diterapkan ke kueri dan kumpulan tujuan yang tidak memiliki Tez AM yang tersedia, lalu kueri akan dibunuh sebagai gantinya.
    Di atas adalah batasan desain fitur WLM. Anda dapat mengerjakan fitur ini dengan meningkatkan properti QUERY_PARALLELISM untuk kumpulan tujuan sehingga bahkan untuk skenario beban maksimum, kueri yang dikirim ke klaster dapat didukung oleh kumpulan ini. Juga, sesuaikan ukuran antrean wm untuk mengakomodasi perubahan ini.
  2. Ketika WLM dinonaktifkan, semua kueri dalam pergerakan akan gagal dengan pola pengecualian berikut:
    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. Ketika WLM Tez AM dibunuh secara manual, maka beberapa kueri mungkin gagal dengan pola berikut.
    Kueri ini harus berjalan tanpa masalah pada penyerahan ulang.
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]

Masalah yang diketahui

  • Pekerjaan spark yang diajukan melalui Hive Warehouse Connector (HWC) dapat mengalami kegagalan terputus-terputus jika kluster LLAP target memiliki fitur WLM yang diaktifkan.
    Untuk menghindari masalah di atas, Pelanggan dapat memiliki dua Kluster LLAP, satu dengan dukungan WLM dan lainnya tanpa WLM. Pelanggan kemudian dapat menggunakan HWC untuk menyambungkan kluster Sparknyaa ke kluster LLAP tanpa WLM.

  • Perintah DISABLE WORKLOAD MANAGEMENT; menggantung untuk waktu yang lama kadang-kadang.
    Batalkan perintah dan periksa status paket sumber daya dengan perintah berikut: SHOW RESOURCE PLANS; Periksa apakah paket sumber daya aktif tersedia sebelum menjalankan perintah DISABLE WORKLOAD MANAGEMENT lagi;

  • Beberapa Tez AM dapat terus berjalan dan tidak pergi dengan perintah DISABLE WORKLOAD MANAGEMENT atau restart HS2.
    Bunuh Tez AM ini melalui yarn UI atau yarn console application setelah menonaktifkan manajemen beban kerja.