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
- Předplatné Azure. Viz Získání bezplatné zkušební verze Azure.
- Účet Data Lake Storage Gen1. Pokyny k jeho vytvoření najdete v tématu Začínáme s Azure Data Lake Storage Gen1.
- Cluster Azure HDInsight s přístupem k účtu Data Lake Storage Gen1. Viz Vytvoření clusteru HDInsight pomocí Data Lake Storage Gen1. Ujistěte se, že jste pro cluster povolili Vzdálenou plochu.
- Spuštění Hivu ve službě HDInsight. Informace o spouštění úloh Hive ve službě HDInsight najdete v tématu Použití Hivu ve službě HDInsight.
- Pokyny pro ladění výkonu pro Data Lake Storage Gen1 Obecné koncepty výkonu najdete v tématu Data Lake Storage Gen1 pokyny k ladění výkonu.
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:
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.
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:
- Optimalizace dotazů Hive pro Hadoop ve službě HDInsight
- Kódování souboru dotazu Hive ve službě Azure HDInsight
- Ignite talk on optimize Hive on HDInsight