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í bylo nastaveno tak, aby poskytovalo dobrý výkon v mnoha různých případech použití. U dotazů náročných na vstupně-výstupní operace je možné Hive vyladit tak, aby se s Azure Data Lake Storage Gen1 zlepšil výkon.

Požadavky

Parametry

Tady jsou nejdůležitější nastavení pro vylepšení výkonu Data Lake Storage Gen1:

  • hive.tez.container.size – velikost paměti využité jednotlivými úkoly.

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

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

  • hive.exec.reducer.bytes.per.reducer – velikost jednotlivých reduktorů

hive.tez.container.size – velikost kontejneru určuje, kolik paměti je k dispozici pro jednotlivé úlohy. 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 mapovače. 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 mapovače. 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í má každý reduktor 256 MB.

Pokyny

Set 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 redukce.

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

Úlohy náročné na vstupně-výstupní operace můžou těžit z většího paralelismu tím, že zmenšují velikost kontejneru Tez. Uživatel tak získá 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 mimo paměť. Pokud dojde k výjimkám kvůli nedostatku paměti, měli byste paměť zvětšit.

Souběžný počet spuštěných úloh nebo paralelismus bude ohraničen celkovou pamětí YARN. Počet kontejnerů YARN určuje, kolik souběžných úloh může běžet. Pokud chcete najít paměť YARN na uzel, můžete přejít na 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é se mají 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ů × 96 GB = 768 GB Počet kontejnerů YARN = 768 GB / 3072 MB = 256

Omezení

Data Lake Storage Gen1 omezování

Pokud dosáhnete limitů šířky pásma poskytovaných Data Lake Storage Gen1, začnou se zobrazovat selhání úkolů. To by se dalo zjistit podle chyb omezování v protokolech úloh. Paralelismus můžete snížit zvětšením velikosti kontejneru Tez. Pokud potřebujete pro svou práci větší souběžnost, kontaktujte nás.

Pokud chcete zkontrolovat, jestli dochází k omezování, musíte povolit protokolování ladění na straně klienta. Můžete to udělat takto:

  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=LADIT Restartujte všechny uzly nebo službu, aby se konfigurace projevila.

  2. Pokud dochází k omezování, uvidíte v souboru protokolu Hive kód chyby HTTP 429. Soubor protokolu Hive je v /tmp/<user>/hive.log

Další informace o ladění Hive

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