Sdílet prostřednictvím


Pokyny k ladění výkonu pro Hive ve službě HDInsight a Azure Data Lake Storage Gen1

Výchozí nastavení byla nastavena tak, aby poskytovala dobrý výkon v mnoha různých případech použití. V případě dotazů náročných na vstupně-výstupní operace je možné Hive ladit, abyste získali lepší výkon pomocí Azure Data Lake Storage Gen1.

Požadavky

Parametry

Tady jsou nejdůležitější nastavení pro vyladění lepšího výkonu Data Lake Storage Gen1:

  • hive.tez.container.size – množství paměti používané jednotlivými úlohami

  • tez.grouping.min-size – minimální velikost každého mappera

  • tez.grouping.max-size – maximální velikost každého mapovače

  • hive.exec.reducer.bytes.per.reducer – velikost každého reduceru

hive.tez.container.size – velikost kontejneru určuje, kolik paměti je pro každý úkol k dispozici. Toto je hlavní vstup pro řízení souběžnosti v Hivu.

tez.grouping.min-size – tento parametr umožňuje nastavit minimální velikost každého mapperu. Pokud je počet mapovačů, které Tez zvolí, menší než hodnota tohoto parametru, použije Tez hodnotu nastavenou zde.

tez.grouping.max-size – parametr umožňuje nastavit maximální velikost každého mapperu. Pokud je počet mapovačů, které Tez zvolí, větší než hodnota tohoto parametru, použije Tez hodnotu nastavenou zde.

hive.exec.reducer.bytes.per.reducer – tento parametr nastaví velikost každého reduktoru. Ve výchozím nastavení je každý reducer 256 MB.

Vodítko

Nastavit hive.exec.reducer.bytes.per.reducer – výchozí hodnota funguje dobře, když jsou data nekomprimovaná. U komprimovaných dat byste měli zmenšit velikost reduktoru.

Nastavte hive.tez.container.size – V každém uzlu je paměť určena pomocí yarn.nodemanager.resource.memory-mb a ve výchozím nastavení by měla být správně nakonfigurována v clusteru HDI. Další informace o nastavení správné paměti v YARN naleznete v tomto příspěvku.

Úlohy náročné na vstupně-výstupní operace můžou těžit z větší paralelismu snížením velikosti kontejneru Tez. Díky tomu má uživatel více kontejnerů, což zvyšuje souběžnost. Některé dotazy Hive však vyžadují značné množství paměti (např. MapJoin). Pokud úloha nemá dostatek paměti, dojde během běhu k výjimce nedostatku paměti. Pokud dojde k výjimkám spojeným s nedostatkem paměti, měli byste zvýšit množství paměti.

Souběžný počet spuštěných úloh nebo paralelismu bude vázán celkovou pamětí YARN. Počet kontejnerů YARN určuje, kolik souběžných úloh se dá spustit. Pokud chcete zjistit, jaká je paměť YARN na jednom uzlu, můžete navštívit Ambari. Přejděte na YARN a zobrazte kartu Konfigurace. V tomto okně se zobrazí paměť YARN.

Celková paměť YARN = uzly * paměť YARN na uzel Počet kontejnerů YARN = Celková paměť YARN / velikost kontejneru Tez

Klíčem ke zlepšení výkonu pomocí Data Lake Storage Gen1 je co nejvíce zvýšit souběžnost. Tez automaticky vypočítá počet úkolů, které by se měly vytvořit, takže ho nemusíte nastavovat.

Příklad výpočtu

Řekněme, že máte cluster D14 s 8 uzly.

Celková paměť YARN = uzly * paměť YARN na uzel Celková paměť YARN = 8 uzlů * 96GB = 768GB Počet YARN kontejnerů = 768GB / 3072MB = 256

Omezení

omezení úložiště Data Lake Gen1

Pokud dosáhnete limitů šířky pásma poskytované službou Data Lake Storage Gen1, začnete se zobrazovat selhání úloh. To může být identifikováno sledováním chyb omezování v protokolech úloh. Paralelismus můžete snížit zvýšením velikosti kontejneru Tez. Pokud potřebujete více souběžnosti pro vaši práci, kontaktujte nás.

Pokud chcete zkontrolovat, jestli dochází k omezování, musíte povolit protokolování ladění na straně klienta. Tady je postup, jak to udělat:

  1. Do vlastností log4j v konfiguraci Hive vložte následující vlastnost. Můžete to udělat ze zobrazení Ambari: log4j.logger.com.microsoft.azure.datalake.store=DEBUG Restartovat všechny uzly/službu, aby se konfigurace projevila.

  2. Pokud je omezen váš provoz, zobrazí se v protokolu Hive kód chyby HTTP 429. Soubor protokolu hive je v /tmp/<uživatel>/hive.log

Další informace o ladění Hivu

Tady je několik blogů, které vám pomůžou ladit dotazy Hive: