Solucionar problemas do Apache Spark usando o Azure HDInsight

Saiba mais sobre os principais problemas e suas soluções ao trabalhar com cargas de Apache Spark no Apache Ambari.

Como fazer para configurar um aplicativo Apache Spark usando o Ambari nos clusters?

Os valores de configuração do Spark podem ser ajustados para ajudar a evitar uma exceção OutofMemoryError do aplicativo do Apache Spark. As seguintes etapas mostram os valores de configuração padrão do Spark no Azure HDInsight:

  1. Faça logon no Ambari em https://CLUSTERNAME.azurehdidnsight.net usando suas credenciais do cluster. A tela inicial exibe um painel de visão geral. Existem pequenas diferenças de caráter estético com relação ao HDInsight 4.0.

  2. Navegue até configurações>do Spark2.

    Select the Configs tab.

  3. Na lista de configurações, escolha e expanda Custom-spark2-defaults.

  4. Procure a configuração do valor que você precisa ajustar, como spark.executor.memory. Nesse caso, o valor de 9728m é alto demais.

    Select custom-spark-defaults.

  5. Defina o valor para a configuração recomendada. O valor de 2048m é recomendado para essa configuração.

  6. Salve o valor e, em seguida, salve a configuração. Selecione Salvar.

    Change value to 2048m.

    Escreva uma observação sobre as alterações de configuração e selecione Salvar.

    Enter a note about the changes you made.

    Você será notificado se alguma configuração requerer atenção. Observe os itens e, em seguida, selecione Continuar Assim Mesmo.

    Select Proceed Anyway.

  7. Sempre que uma configuração é salva, você é solicitado a reiniciar o serviço. Selecione Reiniciar.

    Select restart.

    Confirme a reinicialização.

    Select Confirm Restart All.

    Você pode examinar os processos em execução.

    Review running processes.

  8. Você pode adicionar configurações. Na lista de configurações, selecione Custom-spark2-defaults e, em seguida, selecione Adicionar Propriedade.

    Select add property.

  9. Defina uma nova propriedade. Você pode definir uma única propriedade usando uma caixa de diálogo para configurações específicas, como o tipo de dados. Ou você pode definir várias propriedades usando uma definição por linha.

    Neste exemplo, a propriedade spark.driver.memory é definida com um valor de 4g.

    Define new property.

  10. Salve a configuração e, em seguida, reinicie o serviço conforme descrito nas etapas 6 e 7.

Essas alterações valem para todo o cluster, mas podem ser substituídas quando você enviar o trabalho do Spark.

Como fazer para configurar um aplicativo Apache Spark usando um Jupyter Notebook nos clusters?

Na primeira célula do Jupyter Notebook, após a diretiva %%configure, especifique as configurações do Spark em um formato JSON válido. Altere os valores reais conforme necessário:

Add a configuration.

Como fazer para configurar um aplicativo Apache Spark usando o Apache Livy nos clusters?

Envie o aplicativo Spark ao Livy usando um cliente REST, como cURL. Use um comando semelhante ao seguinte. Altere os valores reais conforme necessário:

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}'  

Como fazer para configurar um aplicativo Apache Spark usando o envio spark nos clusters?

Inicie o shell do Spark usando um comando semelhante ao seguinte. Altere o valor real das configurações conforme necessário:

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

Leituras adicionais

Envio de trabalho do Apache Spark em clusters do HDInsight

Próximas etapas

Se você não encontrou seu problema ou não conseguiu resolver seu problema, visite um dos seguintes canais para obter mais suporte: