Gerenciar recursos para o cluster Apache Spark no Azure HDInsight
Saiba como acessar interfaces como Apache Ambari UI, Apache Hadoop YARN UI e o Spark History Server associado ao cluster Apache Spark e como ajustar a configuração do cluster para um desempenho ideal.
Abra o Servidor de Histórico do Spark
O Spark History Server é a interface do usuário da Web para aplicativos Spark concluídos e em execução. É uma extensão da interface do usuário da Web do Spark. Para obter informações completas, consulte Spark History Server.
Abra a interface do usuário do Yarn
Você pode usar a interface do usuário do YARN para monitorar aplicativos que estão atualmente em execução no cluster do Spark.
No portal do Azure, abra o cluster do Spark. Para obter mais informações, consulte Listar e mostrar clusters.
Em Painéis de cluster, selecione Yarn. Quando solicitado, insira as credenciais de administrador para o cluster do Spark.
Gorjeta
Como alternativa, você também pode iniciar a interface do usuário do YARN a partir da interface do usuário do Ambari. Na interface do usuário do Ambari, navegue até a interface do usuário do Gerenciador de Recursos Ativos de Links>>Rápidos do YARN.>
Otimizar clusters para aplicativos Spark
Os três parâmetros-chave que podem ser usados para a configuração do Spark, dependendo dos requisitos do aplicativo, são spark.executor.instances
, spark.executor.cores
e spark.executor.memory
. Um Executor é um processo iniciado para um aplicativo Spark. Ele é executado no nó de trabalho e é responsável por executar as tarefas para o aplicativo. O número padrão de executores e os tamanhos dos executores para cada cluster são calculados com base no número de nós de trabalho e no tamanho do nó de trabalho. Essas informações são armazenadas nos spark-defaults.conf
nós principais do cluster.
Os três parâmetros de configuração podem ser configurados no nível do cluster (para todos os aplicativos executados no cluster) ou também podem ser especificados para cada aplicativo individual.
Alterar os parâmetros usando Ambari UI
Na interface do usuário do Ambari, navegue até Spark 2>Configs>Custom spark2-defaults.
Os valores padrão são bons para que quatro aplicativos Spark sejam executados simultaneamente no cluster. Você pode alterar esses valores a partir da interface do usuário, conforme mostrado na captura de tela a seguir:
Selecione Salvar para salvar as alterações de configuração. Na parte superior da página, você será solicitado a reiniciar todos os serviços afetados. Selecione Reiniciar.
Alterar os parâmetros de um aplicativo em execução no Jupyter Notebook
Para aplicativos executados no Jupyter Notebook, você pode usar a %%configure
magia para fazer as alterações de configuração. Idealmente, você deve fazer essas alterações no início do aplicativo, antes de executar sua primeira célula de código. Isso garante que a configuração seja aplicada à sessão Livy, quando ela for criada. Se você quiser alterar a configuração em um estágio posterior no aplicativo, você deve usar o -f
parâmetro. No entanto, ao fazer isso, todo o progresso no aplicativo é perdido.
O trecho a seguir mostra como alterar a configuração de um aplicativo em execução no Jupyter.
%%configure
{"executorMemory": "3072M", "executorCores": 4, "numExecutors":10}
Os parâmetros de configuração devem ser passados como uma cadeia de caracteres JSON e devem estar na próxima linha após a mágica, conforme mostrado na coluna de exemplo.
Alterar os parâmetros de um aplicativo enviado usando spark-submit
O comando a seguir é um exemplo de como alterar os parâmetros de configuração para um aplicativo em lote que é enviado usando spark-submit
o .
spark-submit --class <the application class to execute> --executor-memory 3072M --executor-cores 4 –-num-executors 10 <location of application jar file> <application parameters>
Alterar os parâmetros de um aplicativo enviado usando cURL
O comando a seguir é um exemplo de como alterar os parâmetros de configuração para um aplicativo em lote que é enviado usando 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
Nota
Copie o arquivo JAR para sua conta de armazenamento de cluster. Não copie o arquivo JAR diretamente para o nó principal.
Alterar esses parâmetros em um servidor Spark Thrift
O Spark Thrift Server fornece acesso JDBC/ODBC a um cluster do Spark e é usado para atender consultas SQL do Spark. Ferramentas como Power BI, Tableau e assim por diante, usam o protocolo ODBC para se comunicar com o Spark Thrift Server para executar consultas SQL do Spark como um aplicativo Spark. Quando um cluster Spark é criado, duas instâncias do Spark Thrift Server são iniciadas, uma em cada nó principal. Cada Spark Thrift Server é visível como um aplicativo Spark na interface do usuário do YARN.
O Spark Thrift Server usa a alocação de executor dinâmico do Spark e, portanto, o spark.executor.instances
não é usado. Em vez disso, o Spark Thrift Server usa spark.dynamicAllocation.maxExecutors
e spark.dynamicAllocation.minExecutors
para especificar a contagem de executores. Os parâmetros spark.executor.cores
de configuração , e spark.executor.memory
são usados para modificar o tamanho do executor. Você pode alterar esses parâmetros conforme mostrado nas seguintes etapas:
Expanda a categoria Advanced spark2-thrift-sparkconf para atualizar os parâmetros
spark.dynamicAllocation.maxExecutors
espark.dynamicAllocation.minExecutors
.Expanda a categoria Custom spark2-thrift-sparkconf para atualizar os parâmetros
spark.executor.cores
espark.executor.memory
.
Alterar a memória do driver do Spark Thrift Server
A memória do driver do Spark Thrift Server é configurada para 25% do tamanho da RAM do nó principal, desde que o tamanho total da RAM do nó principal seja maior que 14 GB. Você pode usar a interface do usuário do Ambari para alterar a configuração da memória do driver, conforme mostrado na captura de tela a seguir:
Na interface do usuário do Ambari, navegue até Spark2>Configs>Advanced spark2-env. Em seguida, forneça o valor para spark_thrift_cmd_opts.
Recuperar recursos de cluster do Spark
Devido à alocação dinâmica do Spark, os únicos recursos que são consumidos pelo servidor thrift são os recursos para os dois mestres de aplicativos. Para recuperar esses recursos, você deve parar os serviços do Thrift Server em execução no cluster.
Na interface do usuário do Ambari, no painel esquerdo, selecione Spark2.
Na página seguinte, selecione Spark 2 Thrift Servers.
Você deve ver os dois nós principais nos quais o Spark 2 Thrift Server está sendo executado. Selecione um dos nós principais.
A página seguinte lista todos os serviços em execução nesse nó principal. Na lista, selecione o botão suspenso ao lado de Spark 2 Thrift Server e selecione Parar.
Repita estas etapas no outro nó principal também.
Reinicie o serviço Jupyter
Inicie a interface do usuário da Web do Ambari como mostrado no início do artigo. No painel de navegação esquerdo, selecione Jupyter, selecione Ações de Serviço e, em seguida, selecione Reiniciar Tudo. Isso inicia o serviço Jupyter em todos os headnodes.
Monitorizar recursos
Inicie a interface do usuário do Yarn como mostrado no início do artigo. Na tabela Métricas de Cluster na parte superior da tela, verifique os valores das colunas Memória Usada e Total de Memória. Se os dois valores estiverem próximos, pode não haver recursos suficientes para iniciar o próximo aplicativo. O mesmo se aplica às colunas VCores Used e VCores Total . Além disso, na visualização principal, se houver um aplicativo que permaneceu no estado ACEITO e não está fazendo a transição para o estado RUNNING nem FAILED , isso também pode ser uma indicação de que ele não está recebendo recursos suficientes para iniciar.
Matar aplicativos em execução
Na interface do usuário do Yarn, no painel esquerdo, selecione Em execução. Na lista de aplicativos em execução, determine o aplicativo a ser morto e selecione o ID.
Selecione Kill Application no canto superior direito e, em seguida, selecione OK.
Consulte também
Para analistas de dados
- Apache Spark com Machine Learning: use o Spark no HDInsight para analisar a temperatura do edifício usando dados de HVAC
- Apache Spark com Machine Learning: use o Spark no HDInsight para prever resultados de inspeção de alimentos
- Análise de log do site usando o Apache Spark no HDInsight
- Análise de dados de telemetria do Application Insight usando o Apache Spark no HDInsight
Para desenvolvedores do Apache Spark
- Criar uma aplicação autónoma com o Scala
- Executar trabalhos remotamente em um cluster Apache Spark usando o Apache Livy
- Utilizar o Plug-in das Ferramentas do HDInsight para o IntelliJ IDEA para criar e submeter aplicações do Spark Scala
- Use o plug-in HDInsight Tools para IntelliJ IDEA para depurar aplicativos Apache Spark remotamente
- Usar blocos de anotações Apache Zeppelin com um cluster Apache Spark no HDInsight
- Kernels disponíveis para o Jupyter Notebook no cluster Apache Spark para HDInsight
- Use pacotes externos com o Jupyter Notebooks
- Instalar o Jupyter no computador e ligar a um cluster do Spark do HDInsight