Resources beheren voor Apache Spark-cluster in Azure HDInsight

Leer hoe u toegang krijgt tot de interfaces zoals de Gebruikersinterface van Apache Ambari , de Apache Hadoop YARN-gebruikersinterface en de Spark History Server die is gekoppeld aan uw Apache Spark-cluster en hoe u de clusterconfiguratie kunt afstemmen voor optimale prestaties.

De Spark History Server openen

Spark History Server is de webgebruikersinterface voor voltooide en actieve Spark-toepassingen. Het is een uitbreiding van de webgebruikersinterface van Spark. Zie Spark History Server voor volledige informatie.

De Yarn-gebruikersinterface openen

U kunt de YARN-gebruikersinterface gebruiken om toepassingen te bewaken die momenteel worden uitgevoerd op het Spark-cluster.

  1. Open het Spark-cluster vanuit Azure Portal. Zie Lijst en clusters weergeven voor meer informatie.

  2. Selecteer Yarn in clusterdashboards. Wanneer u hierom wordt gevraagd, voert u de beheerdersreferenties voor het Spark-cluster in.

    Launch YARN UI.

    Tip

    U kunt ook de YARN-gebruikersinterface starten vanuit de Ambari-gebruikersinterface. Navigeer vanuit de Ambari-gebruikersinterface naar de gebruikersinterface van YARN>Quick Links>Active>Resource Manager.

Clusters optimaliseren voor Spark-toepassingen

De drie belangrijkste parameters die kunnen worden gebruikt voor Spark-configuratie, afhankelijk van de toepassingsvereisten, zijn spark.executor.instances, spark.executor.coresen spark.executor.memory. Een executor is een proces dat wordt gestart voor een Spark-toepassing. Het wordt uitgevoerd op het werkknooppunt en is verantwoordelijk voor het uitvoeren van de taken voor de toepassing. Het standaardaantal uitvoerders en de uitvoerdersgrootten voor elk cluster wordt berekend op basis van het aantal werkknooppunten en de grootte van het werkknooppunt. Deze informatie wordt opgeslagen op spark-defaults.conf de hoofdknooppunten van het cluster.

De drie configuratieparameters kunnen worden geconfigureerd op clusterniveau (voor alle toepassingen die op het cluster worden uitgevoerd) of kunnen ook worden opgegeven voor elke afzonderlijke toepassing.

De parameters wijzigen met behulp van de Ambari-gebruikersinterface

  1. Navigeer vanuit de Ambari-gebruikersinterface naar de aangepaste spark2-standaardinstellingen voor Spark2-configuraties>>.

    Set parameters using Ambari custom.

  2. De standaardwaarden zijn handig om vier Spark-toepassingen gelijktijdig op het cluster uit te voeren. U kunt deze waarden wijzigen vanuit de gebruikersinterface, zoals wordt weergegeven in de volgende schermopname:

    Set parameters using Ambari.

  3. Selecteer Opslaan om de configuratiewijzigingen op te slaan. Boven aan de pagina wordt u gevraagd om alle betrokken services opnieuw op te starten. Selecteer Opnieuw starten.

    Restart services.

De parameters wijzigen voor een toepassing die wordt uitgevoerd in Jupyter Notebook

Voor toepassingen die worden uitgevoerd in Jupyter Notebook, kunt u de %%configure magie gebruiken om de configuratiewijzigingen aan te brengen. In het ideale stadium moet u dergelijke wijzigingen aanbrengen aan het begin van de toepassing voordat u uw eerste codecel uitvoert. Dit zorgt ervoor dat de configuratie wordt toegepast op de Livy-sessie wanneer deze wordt gemaakt. Als u de configuratie in een later stadium in de toepassing wilt wijzigen, moet u de -f parameter gebruiken. Hierdoor gaat echter alle voortgang in de toepassing verloren.

Het volgende codefragment laat zien hoe u de configuratie voor een toepassing die wordt uitgevoerd in Jupyter wijzigt.

%%configure
{"executorMemory": "3072M", "executorCores": 4, "numExecutors":10}

Configuratieparameters moeten worden doorgegeven als een JSON-tekenreeks en moeten zich op de volgende regel na de magie bevinden, zoals wordt weergegeven in de voorbeeldkolom.

De parameters voor een toepassing wijzigen die is verzonden met spark-submit

De volgende opdracht is een voorbeeld van het wijzigen van de configuratieparameters voor een batchtoepassing die wordt verzonden met behulp van spark-submit.

spark-submit --class <the application class to execute> --executor-memory 3072M --executor-cores 4 –-num-executors 10 <location of application jar file> <application parameters>

De parameters voor een toepassing wijzigen die is verzonden met behulp van cURL

De volgende opdracht is een voorbeeld van het wijzigen van de configuratieparameters voor een batchtoepassing die wordt verzonden met behulp van cURL.

curl -k -v -H 'Content-Type: application/json' -X POST -d '{"file":"<location of application jar file>", "className":"<the application class to execute>", "args":[<application parameters>], "numExecutors":10, "executorMemory":"2G", "executorCores":5' localhost:8998/batches

Notitie

Kopieer het JAR-bestand naar uw clusteropslagaccount. Kopieer het JAR-bestand niet rechtstreeks naar het hoofdknooppunt.

Deze parameters wijzigen op een Spark Thrift-server

Spark Thrift Server biedt JDBC/ODBC-toegang tot een Spark-cluster en wordt gebruikt voor het uitvoeren van Spark SQL-query's. Hulpprogramma's zoals Power BI, Tableau, enzovoort, gebruiken het ODBC-protocol om te communiceren met Spark Thrift Server om Spark SQL-query's uit te voeren als spark-toepassing. Wanneer een Spark-cluster wordt gemaakt, worden twee exemplaren van de Spark Thrift Server gestart, één op elk hoofdknooppunt. Elke Spark Thrift-server is zichtbaar als een Spark-toepassing in de YARN-gebruikersinterface.

Spark Thrift Server maakt gebruik van dynamische toewijzing van Spark-uitvoerders en wordt daarom spark.executor.instances niet gebruikt. In plaats daarvan gebruikt spark.dynamicAllocation.maxExecutors Spark Thrift Server het aantal uitvoerders en spark.dynamicAllocation.minExecutors geeft u het aantal uitvoerders op. De configuratieparameters spark.executor.coresen spark.executor.memory worden gebruikt om de grootte van de uitvoerder te wijzigen. U kunt deze parameters wijzigen, zoals wordt weergegeven in de volgende stappen:

  • Vouw de categorie Advanced spark2-thrift-sparkconf uit om de parameters spark.dynamicAllocation.maxExecutorsbij te werken, en spark.dynamicAllocation.minExecutors.

    Configure Spark thrift server.

  • Vouw de categorie Custom spark2-thrift-sparkconf uit om de parameters spark.executor.coresbij te werken, en spark.executor.memory.

    Configure Spark thrift server parameter.

Het stuurprogrammageheugen van de Spark Thrift-server wijzigen

Spark Thrift Server-stuurprogrammageheugen is geconfigureerd op 25% van de RAM-grootte van het hoofdknooppunt, mits de totale RAM-grootte van het hoofdknooppunt groter is dan 14 GB. U kunt de Ambari-gebruikersinterface gebruiken om de geheugenconfiguratie van het stuurprogramma te wijzigen, zoals wordt weergegeven in de volgende schermopname:

Navigeer vanuit de Ambari-gebruikersinterface naar Spark2>Configs>Advanced spark2-env. Geef vervolgens de waarde op voor spark_thrift_cmd_opts.

Spark-clusterbronnen vrijmaken

Vanwege dynamische spark-toewijzing zijn de enige resources die door de thriftserver worden gebruikt, de resources voor de twee toepassingsmodellen. Als u deze resources wilt vrijmaken, moet u de Thrift Server-services die op het cluster worden uitgevoerd, stoppen.

  1. Selecteer Spark2 in het linkerdeelvenster van de Ambari-gebruikersinterface.

  2. Selecteer op de volgende pagina Spark2 Thrift Servers.

    Restart thrift server1.

  3. U ziet nu de twee hoofdknooppunten waarop de Spark2 Thrift Server wordt uitgevoerd. Selecteer een van de hoofdknooppunten.

    Restart thrift server2.

  4. Op de volgende pagina ziet u alle services die op dat hoofdknooppunt worden uitgevoerd. Selecteer in de lijst de vervolgkeuzelijst naast Spark2 Thrift Server en selecteer vervolgens Stoppen.

    Restart thrift server3.

  5. Herhaal deze stappen ook op het andere hoofdknooppunt.

De Jupyter-service opnieuw starten

Start de Ambari-webgebruikersinterface, zoals wordt weergegeven in het begin van het artikel. Selecteer in het linkernavigatiedeelvenster Jupyter, selecteer Serviceacties en selecteer Vervolgens Alles opnieuw opstarten. Hiermee start u de Jupyter-service op alle hoofdknooppunten.

Restart Jupyter.

Resources bewaken

Start de Yarn-gebruikersinterface, zoals wordt weergegeven in het begin van het artikel. Controleer in de tabel Metrische gegevens van het cluster boven aan het scherm de waarden van de kolommen Geheugen gebruikt en Totaal geheugen . Als de twee waarden dicht zijn, zijn er mogelijk onvoldoende resources om de volgende toepassing te starten. Hetzelfde geldt voor de kolommen VCores Used en VCores Total . Als er in de hoofdweergave een toepassing in de status GEACCEPTEERD blijft en niet overgaat naar de status ACTIEF of MISLUKT, kan dit ook een indicatie zijn dat er onvoldoende resources zijn om te beginnen.

Resource Limit.

Actieve toepassingen beëindigen

  1. Selecteer Uitvoeren in de Yarn-gebruikersinterface in het linkerdeelvenster. Bepaal in de lijst met actieve toepassingen de toepassing die moet worden gedood en selecteer de id.

    Kill App1.

  2. Selecteer Toepassing beëindigen in de rechterbovenhoek en selecteer VERVOLGENS OK.

    Kill App2.

Zie ook

Voor gegevensanalisten

Voor Apache Spark-ontwikkelaars