Průvodce určením velikosti clusteru Azure HDInsight Interactive Query (Hive LLAP)

Tento dokument popisuje velikost clusteru HDInsight Interactive Query (Cluster Hive LLAP) pro typickou úlohu, aby bylo možné dosáhnout přiměřeného výkonu. Všimněte si, že doporučení uvedená v tomto dokumentu jsou obecné pokyny a konkrétní úlohy můžou potřebovat konkrétní ladění.

Výchozí typy virtuálních počítačů Azure pro cluster HDInsight Interactive Query (LLAP)

Typ uzlu Instance Velikost
Head D13 v2 8 vcpus, 56 GB PAMĚTI RAM, 400 GB SSD
Pracovní podproces D14 v2 16 vcpus, 112 GB RAM, 800 GB SSD
ZooKeeper A4 v2 4 vcpus, 8 GB PAMĚTI RAM, 40 GB SSD

Poznámka: Všechny doporučené hodnoty konfigurace jsou založené na pracovním uzlu typu D14 v2.

Configuration (Konfigurace):

Konfigurační klíč Doporučená hodnota Popis
yarn.nodemanager.resource.memory-mb 102400 (MB) Celková paměť zadaná v MB pro všechny kontejnery YARN na uzlu
yarn.scheduler.maximum-allocation-mb 102400 (MB) Maximální přidělení každého požadavku na kontejner v RM v mb. Požadavky na paměť vyšší než tato hodnota se neprojeví.
yarn.scheduler.maximum-allocation-vcores 12 Maximální počet jader procesoru pro každý požadavek na kontejner v Resource Manageru. Požadavky vyšší než tato hodnota se neprojeví.
yarn.nodemanager.resource.cpu-vcores 12 Počet jader procesoru na NodeManager, které je možné přidělit kontejnerům.
yarn.scheduler.capacity.root.llap.capacity 85 (%) Přidělení kapacity YARN pro frontu LLAP
tez.am.resource.memory.mb 4096 (MB) Velikost paměti v MB, kterou bude používat tez AppMaster
hive.server2.tez.sessions.per.default.queue <number_of_worker_nodes> Počet relací pro každou frontu pojmenovanou v hive.server2.tez.default.queues. Toto číslo odpovídá počtu koordinátorů dotazů (Tez AM)
hive.tez.container.size 4096 (MB) Zadaná velikost kontejneru Tez v MB
hive.llap.daemon.num.executors 19 Počet exekutorů na démon LLAP
hive.llap.io.threadpool.size 19 Velikost fondu vláken pro exekutory
hive.llap.daemon.yarn.container.mb 81920 (MB) Celková paměť v MB využitá jednotlivými démony LLAP (paměť na démona)
hive.llap.io.memory.size 242688 (MB) Velikost mezipaměti v MB na démon LLAP za předpokladu, že je povolená mezipaměť SSD
hive.auto.convert.join.noconditionaltask.size 2048 (MB) velikost paměti v MB pro připojení k mapě

Architektura/komponenty LLAP:

`LLAP Architecture/Components`.

Odhady velikosti démona LLAP:

1. Určení celkového přidělení paměti YARN pro všechny kontejnery na uzlu

Konfigurace: yarn.nodemanager.resource.memory-mb

Tato hodnota označuje maximální součet paměti v MB, který lze použít kontejnery YARN na každém uzlu. Zadaná hodnota by měla být menší než celková velikost fyzické paměti na daném uzlu.
Celková paměť pro všechny kontejnery YARN na uzlu = (celková fyzická paměť – paměť pro operační systém a další služby)
Nastavte tuto hodnotu na ~90 % dostupné velikosti paměti RAM.
U D14 v2 je doporučená hodnota 102400 MB

2. Určení maximálního množství paměti na požadavek kontejneru YARN

Konfigurace: yarn.scheduler.maximum-allocation-mb

Tato hodnota označuje maximální přidělení každého požadavku na kontejner v Resource Manageru, v MB. Požadavky na paměť vyšší než zadaná hodnota se neprojeví. Resource Manager může dát paměti kontejnerům v přírůstcích od yarn.scheduler.minimum-allocation-mb a nemůže překročit velikost určenou yarn.scheduler.maximum-allocation-mb. Zadaná hodnota by neměla být větší než celková daná paměť pro všechny kontejnery v uzlu určeném yarn.nodemanager.resource.memory-mb.
U pracovních uzlů D14 v2 je doporučená hodnota 102400 MB.

3. Určení maximálního vcores množství na požadavek na kontejner YARN

Konfigurace: yarn.scheduler.maximum-allocation-vcores

Tato hodnota označuje maximální počet virtuálních jader procesoru pro každý požadavek na kontejner v Resource Manageru. Žádost o vyšší počet vcores hodnot se neprojeví. Jedná se o globální vlastnost plánovače YARN. Pro kontejner démona LLAP lze tuto hodnotu nastavit na 75 % celkového dostupného vcoreskontejneru . Zbývající 25 % by mělo být vyhrazeno pro NodeManager, DataNode a další služby spuštěné v pracovních uzlech.
16 vcores Kontejner démona LLAP může využívat na virtuálních počítačích D14 v2 a 75 % z celkového 16 vcores počtu.
U D14 v2 je doporučená hodnota 12.

4. Počet souběžných dotazů

Konfigurace: hive.server2.tez.sessions.per.default.queue

Tato hodnota konfigurace určuje počet relací Tez, které lze spustit paralelně. Tyto relace Tez se spustí pro každou frontu určenou parametrem hive.server2.tez.default.queues. Odpovídá počtu AM Tez (koordinátorů dotazů). Doporučuje se, aby byl stejný jako počet pracovních uzlů. Počet uzlů démona LLAP může být vyšší než počet uzlů démona LLAP. Primární odpovědnostÍ Tez AM je koordinovat provádění dotazů a přiřazovat fragmenty plánu dotazů k odpovídajícím démonům LLAP ke spuštění. Tuto hodnotu ponechte jako několik uzlů démonů LLAP, abyste dosáhli vyšší propustnosti.

Výchozí cluster HDInsight má čtyři procesy démon LLAP spuštěné na čtyřech pracovních uzlech, takže doporučená hodnota je 4.

Posuvník uživatelského rozhraní Ambari pro proměnnou hive.server2.tez.sessions.per.default.queuekonfigurace Hivu:

`LLAP maximum concurrent queries`.

5. Velikost kontejneru Tez a hlavní velikosti aplikace Tez

Konfigurace: tez.am.resource.memory.mb, hive.tez.container.size

tez.am.resource.memory.mb – definuje velikost hlavního serveru aplikace Tez.
Doporučená hodnota je 4096 MB.

hive.tez.container.size – definuje množství paměti zadané pro kontejner Tez. Tato hodnota musí být nastavená mezi minimální velikostí kontejneru YARN(yarn.scheduler.minimum-allocation-mb) a maximální velikostí kontejneru YARN(yarn.scheduler.maximum-allocation-mb). Exekutory procesu démon LLAP používají tuto hodnotu pro omezení využití paměti na exekutor.
Doporučená hodnota je 4096 MB.

6. Přidělení kapacity fronty LLAP

Konfigurace: yarn.scheduler.capacity.root.llap.capacity

Tato hodnota označuje procento kapacity přidělené frontě LLAP. Přidělení kapacity může mít různé hodnoty pro různé úlohy v závislosti na konfiguraci front YARN. Pokud je vaše úloha operace jen pro čtení, pak by měla fungovat až 90 % kapacity. Pokud je ale vaše úloha kombinací operací aktualizace, odstranění nebo sloučení pomocí spravovaných tabulek, doporučuje se poskytnout 85 % kapacity fronty LLAP. Zbývající 15% kapacitu můžou používat jiné úlohy, jako je komprimace atd. k přidělení kontejnerů z výchozí fronty. Tímto způsobem nebudou úlohy ve výchozí frontě připraveny o prostředky YARN.

U pracovních uzlů D14v2 je doporučená hodnota pro frontu LLAP 85.
(U úloh jen pro čtení je možné ho podle potřeby zvýšit až na 90.)

7. Velikost kontejneru démona LLAP

Konfigurace: hive.llap.daemon.yarn.container.mb

Proces démon LLAP se spouští jako kontejner YARN na každém pracovním uzlu. Celková velikost paměti pro kontejner démona LLAP závisí na následujících faktorech:

  • Konfigurace velikosti kontejneru YARN (yarn.scheduler.minimum-allocation-mb, yarn.scheduler.maximum-allocation-mb, yarn.nodemanager.resource.memory-mb)
  • Počet AM Tez na uzlu
  • Celková paměť nakonfigurovaná pro všechny kontejnery v uzlu a kapacitě fronty LLAP

Paměť, kterou potřebuje Tez Application Masters (Tez AM), je možné vypočítat následujícím způsobem.
Tez AM funguje jako koordinátor dotazů a počet AM Tez by se měl nakonfigurovat na základě mnoha souběžných dotazů, které se mají obsluhovat. Teoreticky můžeme zvážit jeden Tez AM na pracovní uzel. Je však možné, že na pracovním uzlu uvidíte více než jeden Tez AM. Pro účely výpočtu předpokládáme jednotné rozdělení AM Tez napříč všemi uzly/pracovními uzly/pracovními uzly LLAP. Doporučujeme mít 4 GB paměti na Tez AM.

Number of Tez Ams = value specified by Hive config hive.server2.tez.sessions.per.default.queue.
Počet uzlů démona LLAP = určený proměnnou env num_llap_nodes_for_llap_daemons v uživatelském rozhraní Ambari.
Tez AM container size = value specified by Tez config tez.am.resource.memory.mb.

Tez AM memory per node = (ceil(Number of Tez AMs / Number of LLAP daemon nodes)x Tez AM container size**)**
Pro D14 v2 má výchozí konfigurace čtyři uzly Tez AM a čtyři uzly démon LLAP.
Tez AM memory per node = (ceil(4/4) x 4 GB) = 4 GB

Celkovou paměť dostupnou pro frontu LLAP na pracovní uzel lze vypočítat následujícím způsobem:
Tato hodnota závisí na celkovém množství paměti dostupné pro všechny kontejnery YARN na uzlu (yarn.nodemanager.resource.memory-mb) a procento kapacity nakonfigurované pro frontu LLAP(yarn.scheduler.capacity.root.llap.capacity).
Celková paměť pro frontu LLAP na pracovním uzlu = Celková paměť dostupná pro všechny kontejnery YARN na uzlu x procento kapacity pro frontu LLAP.
U D14 v2 je tato hodnota (100 GB x 0,85) = 85 GB.

Velikost kontejneru démona LLAP se vypočítá následujícím způsobem;

Velikost kontejneru démona LLAP = (celková paměť pro frontu LLAP na pracovním uzlu) – (paměť Tez AM na uzel) – (velikost kontejneru Service Master)
V clusteru, který se vytváří na jednom z pracovních uzlů, existuje pouze jeden hlavní server služby (Application Master pro službu LLAP). Pro účely výpočtu považujeme jeden hlavní server služby za pracovní uzel.
U pracovního uzlu D14 v2 je HDI 4,0 – doporučená hodnota je (85 GB – 4 GB – 1 GB)) = 80 GB.

8. Určení počtu exekutorů na démon LLAP

Konfigurace: hive.llap.daemon.num.executors, hive.llap.io.threadpool.size

hive.llap.daemon.num.executors:
Tato konfigurace řídí počet exekutorů, které mohou provádět úlohy paralelně pro proces démon LLAP. Tato hodnota závisí na počtu virtuálních jader, množství využité paměti pro exekutor a množství celkové paměti dostupné pro kontejner procesu démon LLAP. Počet exekutorů je možné přepsat na 120 % dostupných virtuálních jader na pracovní uzel. Pokud však nesplňuje požadavky na paměť na základě paměti potřebné pro exekutor a velikost kontejneru démona LLAP, je potřeba ho upravit.

Každý exekutor je ekvivalentní kontejneru Tez a může spotřebovat 4 GB (velikost kontejneru Tez) paměti. Všechny exekutory v procesu démon LLAP sdílejí stejnou paměť haldy. S předpokladem, že ne všechny exekutory spouštějí operace náročné na paměť současně, můžete zvážit 75 % velikosti kontejneru Tez (4 GB) na exekutor. Tímto způsobem můžete zvýšit počet exekutorů tím, že každému exekutoru poskytnete méně paměti (například 3 GB) pro zvýšení souběžnosti. Doporučujeme ale toto nastavení ladit pro cílovou úlohu.

Virtuální počítače D14 v2 mají 16 virtuálních jader. U D14 v2 je doporučená hodnota pro počet exekutorů (16 virtuálních jader x 120 %) ~= 19 na každém pracovním uzlu vzhledem k 3 GB na exekutor.

hive.llap.io.threadpool.size:
Tato hodnota určuje velikost fondu vláken pro exekutory. Vzhledem k tomu, že exekutory jsou stanovené jako fixní, je tento počet stejný jako počet exekutorů na proces démon LLAP.
Pro D14 v2 je doporučená hodnota 19.

9. Určení velikosti mezipaměti démona LLAP

Konfigurace: hive.llap.io.memory.size

Paměť kontejneru démona LLAP se skládá z následujících komponent;

  • Hlavní místnost
  • Paměť haldy používaná exekutory (Xmx)
  • Mezipaměť v paměti na démona (velikost paměti mimo haldu, která se nedá použít, pokud je povolená mezipaměť SSD)
  • Velikost metadat mezipaměti v paměti (platí jenom v případě, že je povolená mezipaměť SSD)

Velikost místnosti: Tato velikost označuje část paměti mimo haldu použitou pro režii virtuálního počítače v Javě (metaprostor, zásobník vláken, gc datové struktury atd.). Obecně platí, že tato režie je přibližně 6 % velikosti haldy (Xmx). Pokud chcete být na bezpečnější straně, lze tuto hodnotu vypočítat jako 6 % celkové velikosti paměti démona LLAP.
U D14 v2 je doporučená hodnota ceil(80 GB x 0,06) ~= 4 GB.

Velikost haldy(Xmx): Velikost haldy je k dispozici pro všechny exekutory. Celková velikost haldy = počet exekutorů × 3 GB
U D14 v2 je tato hodnota 19 x 3 GB = 57 GB.

Ambari environment variable for LLAP heap size:

`LLAP heap size`.

Když je mezipaměť SSD zakázaná, je mezipaměť v paměti množství paměti, které zbývá po odečtení velikosti rezervy a haldy od velikosti kontejneru procesu démon LLAP.

Výpočet velikosti mezipaměti se liší, když je povolená mezipaměť SSD. Nastavení hive.llap.io.allocator.mmap = true umožňuje ukládání do mezipaměti SSD. Pokud je povolená mezipaměť SSD, část paměti se použije k ukládání metadat pro mezipaměť SSD. Metadata se ukládají do paměti a očekává se, že bude přibližně 8 % velikosti mezipaměti SSD.
Velikost metadat mezipaměti SSD v paměti = velikost kontejneru procesu démon LLAP – (velikost zásobníku + velikost haldy)
U D14 v2 s HDI 4.0 velikost metadat mezipaměti SSD v paměti = 80 GB – (4 GB + 57 GB) = 19 GB

Vzhledem k velikosti dostupné paměti pro ukládání metadat mezipaměti SSD můžeme vypočítat velikost mezipaměti SSD, kterou je možné podporovat.
Velikost metadat v paměti pro mezipaměť SSD = velikost kontejneru démona LLAP – (velikost hlavní místnosti + velikost haldy) = 19 GB
Velikost mezipaměti SSD = velikost metadat v paměti pro mezipaměť SSD (19 GB) / 0,08 (8 procent)

U D14 v2 a HDI 4,0 doporučená velikost mezipaměti SSD = 19 GB / 0,08 ~= 237 GB

10. Úprava paměti připojení k mapě

Konfigurace: hive.auto.convert.join.noconditionaltask.size

Ujistěte se, že je pro tento parametr povolený hive.auto.convert.join.noconditionaltask , aby se tento parametr projevil. Tato konfigurace určuje prahovou hodnotu pro výběr MapJoin optimalizátorem Hive, která považuje nadměrné využití paměti z jiných exekutorů, aby měla více místa pro tabulky hash v paměti, aby bylo možné provádět více převodů spojení map. Vzhledem k tomu, že 3 GB na exekutor, může být tato velikost přepsána na 3 GB, ale některé paměti haldy se můžou použít také pro řazení vyrovnávacích pamětí, vyrovnávací paměti pro shuffle atd. jinými operacemi.
Proto pro D14 v2 s 3 GB paměti na exekutor doporučujeme nastavit tuto hodnotu na 2048 MB.

(Poznámka: Tato hodnota může vyžadovat úpravy vhodné pro vaši úlohu. Nastavení příliš nízké hodnoty nemusí používat funkci automatického převodu. Nastavení příliš vysoké může vést k výjimkám paměti nebo pozastavení paměti, které můžou vést k nežádoucímu výkonu.)

11. Počet démonů LLAP

Proměnné prostředí Ambari: num_llap_nodes, num_llap_nodes_for_llap_daemons

num_llap_nodes – určuje počet uzlů používaných službou Hive LLAP, včetně uzlů se spuštěným procesem démon LLAP, LLAP Service Master a Tez Application Master(Tez AM).

`Number of Nodes for LLAP service`.
num_llap_nodes_for_llap_daemons – zadaný počet uzlů používaných pouze pro démony LLAP. Velikosti kontejnerů démona LLAP jsou nastaveny na maximální velikost uzlů, takže výsledkem je jeden llap proces démon na každém uzlu.

`Number of Nodes for LLAP daemons`.

Doporučujeme zachovat obě hodnoty stejné jako počet pracovních uzlů v clusteru Interactive Query.

Důležité informace o správě úloh

Pokud chcete povolit správu úloh pro LLAP, ujistěte se, že si rezervujete dostatečnou kapacitu pro správu úloh, aby fungovala podle očekávání. Správa úloh vyžaduje konfiguraci vlastní fronty YARN, která je navíc součástí llap fronty. Ujistěte se, že rozdělíte celkovou kapacitu prostředků clusteru mezi llap frontu a frontu správy úloh v souladu s vašimi požadavky na úlohy. Správa úloh vytváří při aktivaci plánu prostředků předlohy aplikací Tez (Tez AM).

Poznámka:

  • Tez AMs vytvořených aktivací plánu prostředků spotřebovává prostředky z fronty správy úloh podle specifikace hive.server2.tez.interactive.queue.
  • Počet AM Tez by závisel na hodnotě QUERY_PARALLELISM zadané v plánu zdrojů.
  • Jakmile je správa úloh aktivní, Tez AMs ve frontě LLAP se nepoužije. Ke koordinaci dotazů se používají pouze Tez AM z fronty správy úloh. Tez AM ve frontě llap se používají, když je správa úloh zakázaná.

Například: Celková kapacita clusteru = 100 GB paměti, rozdělená mezi LLAP, Správa úloh a výchozí fronty následujícím způsobem:

  • Kapacita fronty LLAP = 70 GB
  • Kapacita fronty správy úloh = 20 GB
  • Výchozí kapacita fronty = 10 GB

S 20 GB v kapacitě fronty správy úloh může plán prostředků zadat QUERY_PARALLELISM hodnotu 5, což znamená, že správa úloh může spouštět pět AM s velikostí kontejneru Tez o velikosti 4 GB. Pokud QUERY_PARALLELISM je vyšší než kapacita, může se zobrazit, že některé AM Tez přestanou reagovat ve ACCEPTED stavu. Server Hive 2 Interactive nemůže odeslat fragmenty dotazů do AM Tez, které nejsou ve RUNNING stavu.

Další kroky

Pokud nastavení těchto hodnot váš problém nevyřešilo, navštivte některou z následujících možností...