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.

  1. No portal do Azure, abra o cluster do Spark. Para obter mais informações, consulte Listar e mostrar clusters.

  2. Em Painéis de cluster, selecione Yarn. Quando solicitado, insira as credenciais de administrador para o cluster do Spark.

    Launch YARN UI.

    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.corese 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

  1. Na interface do usuário do Ambari, navegue até Spark2>Configs>Custom spark2-defaults.

    Set parameters using Ambari custom.

  2. 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:

    Set parameters using Ambari.

  3. 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.

    Restart services.

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-submito .

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.coresde 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.maxExecutorse spark.dynamicAllocation.minExecutors.

    Configure Spark thrift server.

  • Expanda a categoria Custom spark2-thrift-sparkconf para atualizar os parâmetros spark.executor.corese spark.executor.memory.

    Configure Spark thrift server parameter.

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.

  1. Na interface do usuário do Ambari, no painel esquerdo, selecione Spark2.

  2. Na página seguinte, selecione Spark2 Thrift Servers.

    Restart thrift server1.

  3. Você deve ver os dois nós principais nos quais o Spark2 Thrift Server está sendo executado. Selecione um dos nós principais.

    Restart thrift server2.

  4. 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 Spark2 Thrift Server e selecione Parar.

    Restart thrift server3.

  5. 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.

Restart Jupyter.

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.

Resource Limit.

Matar aplicativos em execução

  1. 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.

    Kill App1.

  2. Selecione Kill Application no canto superior direito e, em seguida, selecione OK.

    Kill App2.

Consulte também

Para analistas de dados

Para desenvolvedores do Apache Spark