Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
- předplatné Azure. Viz Získání bezplatné zkušební verze Azure.
- Účet služby 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 sData Lake Storage Gen1 . Ujistěte se, že pro klastr povolíte Vzdálenou Plochu.
- Spuštění Hivu ve službě HDInsight. Další informace o spouštění úloh Hive ve službě HDInsight najdete v tématu Použití Hivu ve službě HDInsight
- Pokyny pro optimalizaci výkonu pro úložiště Data Lake Gen1. Obecné koncepty výkonu najdete v tématu Pokyny k ladění výkonu Data Lake Storage Gen1
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:
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.
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:
- optimalizace dotazů Hive pro Hadoop ve službě HDInsight
- Kódování souboru dotazu Hive ve službě Azure HDInsight
- Přednáška Ignite o optimalizaci Hive na HDInsight