Delen via


Richtlijnen voor het afstemmen van prestaties voor Hive in HDInsight en Azure Data Lake Storage Gen1

De standaardinstellingen zijn ingesteld om goede prestaties te bieden voor veel verschillende use cases. Voor I/O-intensieve query's kan Hive worden afgestemd voor betere prestaties met Azure Data Lake Storage Gen1.

Vereisten

Parameters

Dit zijn de belangrijkste instellingen om af te stemmen op verbeterde Data Lake Storage Gen1 prestaties:

  • hive.tez.container.size : de hoeveelheid geheugen die door elke taak wordt gebruikt

  • tez.grouping.min-size : minimale grootte van elke mapper

  • tez.grouping.max: maximale grootte van elke mapper

  • hive.exec.reducer.bytes.per.reducer : grootte van elk reducer

hive.tez.container.size : de grootte van de container bepaalt hoeveel geheugen beschikbaar is voor elke taak. Dit is de belangrijkste invoer voor het beheren van de gelijktijdigheid in Hive.

tez.grouping.min-size : met deze parameter kunt u de minimale grootte van elke mapper instellen. Als het aantal mappers dat Tez kiest kleiner is dan de waarde van deze parameter, gebruikt Tez de waarde die hier is ingesteld.

tez.grouping.max grootte : met de parameter kunt u de maximale grootte van elke mapper instellen. Als het aantal mappers dat Tez kiest groter is dan de waarde van deze parameter, gebruikt Tez de waarde die hier is ingesteld.

hive.exec.reducer.bytes.per.reducer : met deze parameter wordt de grootte van elke reducer ingesteld. Standaard is elke reducer 256 MB.

Hulp

Stel hive.exec.reducer.bytes.per.reducer in: de standaardwaarde werkt goed wanneer de gegevens worden gedecomprimeerd. Voor gegevens die zijn gecomprimeerd, moet u de grootte van het reducer verkleinen.

Hive.tez.container.size instellen : in elk knooppunt wordt geheugen opgegeven door yarn.nodemanager.resource.memory-mb en moet het standaard correct zijn ingesteld op het HDI-cluster. Zie dit bericht voor meer informatie over het instellen van het juiste geheugen in YARN.

I/O-intensieve workloads kunnen profiteren van meer parallelle uitvoering door de Tez-containergrootte te verkleinen. Hierdoor krijgt de gebruiker meer containers, waardoor de gelijktijdigheid toeneemt. Sommige Hive-query's vereisen echter een aanzienlijke hoeveelheid geheugen (bijvoorbeeld MapJoin). Als de taak onvoldoende geheugen heeft, krijgt u een uitzondering voor onvoldoende geheugen tijdens runtime. Als u uitzonderingen voor onvoldoende geheugen ontvangt, moet u het geheugen vergroten.

Het gelijktijdige aantal taken dat wordt uitgevoerd of parallellisme wordt begrensd door het totale YARN-geheugen. Het aantal YARN-containers bepaalt hoeveel gelijktijdige taken kunnen worden uitgevoerd. Als u het YARN-geheugen per knooppunt wilt vinden, gaat u naar Ambari. Ga naar YARN en bekijk het tabblad Configuraties. Het YARN-geheugen wordt weergegeven in dit venster.

Totaal YARN-geheugen = knooppunten * YARN-geheugen per knooppunt Aantal YARN-containers = Totaal YARN-geheugen/Tez-containergrootte

De sleutel tot het verbeteren van de prestaties met behulp van Data Lake Storage Gen1 is om de gelijktijdigheid zoveel mogelijk te vergroten. Tez berekent automatisch het aantal taken dat moet worden gemaakt, zodat u deze niet hoeft in te stellen.

Voorbeeldberekening

Stel dat u een D14-cluster met 8 knooppunten hebt.

Totaal YARN-geheugen = knooppunten * YARN-geheugen per knooppunt Totaal YARN-geheugen = 8 knooppunten * 96 GB = 768 GB Aantal YARN-containers = 768 GB / 3072 MB = 256

Beperkingen

beperking van Data Lake Storage Gen1

Als u de bandbreedtelimieten van Data Lake Storage Gen1 bereikt, krijgt u te maken met taakfouten. Dit kan worden geïdentificeerd door beperkingsfouten in taaklogboeken te observeren. U kunt de parallelle uitvoering verminderen door de tez-containergrootte te vergroten. Als u meer gelijktijdigheid nodig hebt voor uw taak, neem dan contact met ons op.

Als u wilt controleren of u wordt beperkt, moet u de logboekregistratie voor foutopsporing aan de clientzijde inschakelen. U kunt dit als volgt doen:

  1. Plaats de volgende eigenschap in de log4j-eigenschappen in Hive-configuratie. Dit kan worden gedaan vanuit de Ambari-weergave: log4j.logger.com.microsoft.azure.datalake.store=DEBUG Start alle knooppunten/service opnieuw op om de configuratie van kracht te laten worden.

  2. Als u wordt beperkt, ziet u de HTTP 429-foutcode in het Hive-logboekbestand. Het Hive-logboekbestand bevindt zich in /tmp/<user>/hive.log

Meer informatie over Het afstemmen van Hive

Hier volgen enkele blogs waarmee u uw Hive-query's kunt afstemmen: