Condividi tramite


Risolvere i problemi di Apache Spark tramite Azure HDInsight

Informazioni sui problemi principali che possono verificarsi quando si usano i payload di Apache Spark in Apache Ambari unitamente alle risoluzioni.

Come si configura un'applicazione Apache Spark tramite Apache Ambari nei cluster?

I valori di configurazione di Spark possono essere ottimizzati per evitare un'eccezione OutofMemoryError dell'applicazione Apache Spark. I passaggi seguenti illustrano i valori di configurazione di Spark predefiniti in Azure HDInsight:

  1. Accedere ad Ambari all'indirizzo https://CLUSTERNAME.azurehdidnsight.net con le credenziali del cluster. La schermata iniziale visualizza un dashboard generale. Esistono lievi differenze cosmetiche tra HDInsight 4.0.

  2. Andare a Spark2>Configurazioni.

    Selezionare la scheda Configs (Configurazioni).

  3. Nell'elenco delle configurazioni selezionare ed espandere Custom-spark2-defaults.

  4. Ricercare l'impostazione del valore che si desidera modificare, come spark.executor.memory. In questo caso il valore 9728m è troppo alto.

    Selezionare custom-spark-defaults.

  5. Configurare il valore sull'impostazione consigliata. Il valore 2048m è consigliato per questa impostazione.

  6. Salvare il valore, quindi salvare la configurazione. Seleziona Salva.

    Cambiare il valore in 2048m.

    Immettere una nota sulle modifiche apportate alla configurazione, quindi selezionare Save (Salva).

    Immettere una nota sulle modifiche apportate.

    Si riceve una notifica se una delle configurazioni richiede attenzione. Annotare gli elementi e quindi selezionare Proceed Anyway (Continuare comunque).

    Selezionare Continuare comunque.

  7. Ogni volta che viene salvata una configurazione, viene chiesto di riavviare il servizio. Seleziona Riavvia.

    Selezionare Riavvia.

    Confermare il riavvio.

    Selezionare Confirm Restart All (Conferma riavvio di tutti gli elementi).

    È possibile esaminare i processi in esecuzione.

    Esaminare i processi in esecuzione.

  8. È possibile aggiungere configurazioni. Nell'elenco delle configurazioni selezionare Custom-spark2-defaults e quindi selezionare Add Property (Aggiungi proprietà).

    Selezionare Aggiungi proprietà.

  9. Definire una nuova proprietà. È possibile definire una singola proprietà usando una finestra di dialogo per impostazioni specifiche, ad esempio il tipo di dati. In alternativa, è possibile definire più proprietà usando una definizione per riga.

    In questo esempio la proprietà spark.driver.memory è stata definita con un valore di 4g.

    Definire una nuova proprietà.

  10. Salvare la configurazione e quindi riavviare il servizio come descritto nei passaggi 6 e 7.

Queste modifiche si applicano a tutto il cluster ma è possibile eseguirne l'override quando si invia il processo Spark.

Come si configura un'applicazione Apache Spark usando un notebook di Jupyter nei cluster?

Nella prima cella del Jupyter Notebook, dopo la direttiva %%configure, specificare le configurazioni di Spark in un formato JSON valido. Modificare i valori effettivi in base alla necessità:

Aggiungere una configurazione.

Come si configura un'applicazione Apache Spark tramite Apache Livy nei cluster?

Inviare l'applicazione Spark a Livy usando un client REST come cURL. Usare un comando simile al seguente. Modificare i valori effettivi in base alla necessità:

curl -k --user 'username:password' -v -H 'Content-Type: application/json' -X POST -d '{ "file":"wasb://container@storageaccountname.blob.core.windows.net/example/jars/sparkapplication.jar", "className":"com.microsoft.spark.application", "numExecutors":4, "executorMemory":"4g", "executorCores":2, "driverMemory":"8g", "driverCores":4}'  

Come si configura un'applicazione Apache Spark tramite lo script spark-submit nei cluster?

Avviare spark-shell usando un comando simile al seguente. Modificare il valore effettivo delle configurazioni in base alla necessità:

spark-submit --master yarn-cluster --class com.microsoft.spark.application --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4 /home/user/spark/sparkapplication.jar

Lettura aggiuntiva

Invio del processo Apache Spark nei cluster HDInsight

Passaggi successivi

Se il problema riscontrato non è presente in questo elenco o se non si riesce a risolverlo, visitare uno dei canali seguenti per ottenere ulteriore assistenza: