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
- Een Azure-abonnement. Zie Gratis proefversie van Azure ophalen.
- Een Data Lake Storage Gen1-account. Zie Aan de slag met Azure Data Lake Storage Gen1 voor instructies over het maken van een account.
- Azure HDInsight-cluster met toegang tot een Data Lake Storage Gen1-account. Zie Een HDInsight-cluster maken met Data Lake Storage Gen1. Zorg ervoor dat u Extern bureaublad inschakelt voor het cluster.
- Hive uitvoeren in HDInsight. Zie Hive gebruiken in HDInsight voor meer informatie over het uitvoeren van Hive-taken in HDInsight
- Richtlijnen voor het afstemmen van prestaties op Data Lake Storage Gen1. Zie Data Lake Storage Gen1 Richtlijnen voor het afstemmen van prestaties voor algemene prestatieconcepten
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:
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.
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:
- Hive-query's optimaliseren voor Hadoop in HDInsight
- Het Hive-querybestand coderen in Azure HDInsight
- Ignite talk over het optimaliseren van Hive in HDInsight