Grupos de nós de driver do Dataproc

Visão geral

Um recurso NodeGroup do Dataproc é um grupo de nós de cluster do Dataproc que executam um papel atribuído. Nesta página, descrevemos o grupo de nós do driver, que é um grupo de VMs do Compute Engine que recebem o papel Driver com a finalidade de executar drivers de job no cluster do Dataproc.

Quando usar grupos de nós de drivers

  • Use grupos de nós de driver somente quando precisar executar muitos jobs simultâneos em um cluster compartilhado.
  • Aumente os recursos do nó mestre antes de usar grupos de nós de driver para evitar limitações nos grupos de nós de driver.

Como os nós do driver ajudam a executar o job simultâneo

O Dataproc inicia um processo do driver do job em um nó mestre do cluster do Dataproc para cada job. O processo do driver, por sua vez, executa um driver de aplicativo, como o spark-submit, como o processo filho. No entanto, o número de jobs simultâneos em execução no mestre é limitado pelos recursos disponíveis no nó mestre e, como os nós mestres do Dataproc não podem ser escalonados, um job pode falhar ou ser limitado quando os recursos do nó mestre são insuficientes para executar um job.

Os grupos de nós de driver são grupos de nós especiais gerenciados pelo YARN. Portanto, a simultaneidade de jobs não é limitada pelos recursos do nó mestre. Em clusters com um grupo de nós de driver, os drivers de aplicativo são executados em nós de driver. Cada nó de driver poderá executar vários drivers de aplicativos se tiver recursos suficientes.

Benefícios

O uso de um cluster do Dataproc com um grupo de nós de driver permite:

  • Faça o escalonamento horizontal dos recursos de drivers de jobs para executar mais jobs simultâneos.
  • Escalonar recursos de driver separadamente dos recursos de worker
  • Consiga uma redução mais rápida nos clusters de imagem do Dataproc 2.0 ou mais recente. Nesses clusters, o mestre do app é executado em um driver do Spark em um grupo de nós do driver (spark.yarn.unmanagedAM.enabled é definido como true por padrão).
  • Personalize a inicialização do nó do driver. É possível adicionar {ROLE} == 'Driver' em um script de inicialização para que ele execute ações para um grupo de nós do driver na seleção de nós.

Limitações

  • Grupos de nós não são compatíveis com modelos de fluxo de trabalho do Dataproc.
  • Os clusters de grupos de nós não podem ser interrompidos, reiniciados nem escalonados automaticamente.
  • O mestre do aplicativo MapReduce é executado em nós de trabalho. A reduzir escala vertical dos nós de trabalho poderá ficar lenta se você ativar a desativação otimizada.
  • A simultaneidade de jobs é afetada pela propriedade de cluster dataproc:agent.process.threads.job.max. Por exemplo, com três mestres e essa propriedade definida como o valor padrão de 100, a simultaneidade máxima de jobs no nível do cluster é 300.

Grupo de nós do driver comparado ao modo do cluster do Spark

Engenharia de Modo de cluster do Spark Grupo de nós do driver
Reduzir escala vertical do nó de trabalho Drivers de longa duração são executados nos mesmos nós de trabalho que os contêineres de curta duração, diminuindo a escala vertical dos workers que usam a desativação otimizada. Os nós de trabalho reduzir escala vertical mais rapidamente quando os drivers são executados em grupos de nós.
Saída do driver com streaming Requer uma pesquisa nos registros YARN para encontrar o nó em que o driver foi programado. A saída do driver é transmitida para o Cloud Storage e pode ser visualizada no console do Google Cloud e na saída do comando gcloud dataproc jobs wait após a conclusão de um job.

Permissões do IAM do grupo de nós de driver

As permissões do IAM a seguir estão associadas às seguintes ações relacionadas ao grupo de nós do Dataproc.

Permissão Ação
dataproc.nodeGroups.create Criar grupos de nós do Dataproc. Se um usuário tiver dataproc.clusters.create no projeto, essa permissão será concedida.
dataproc.nodeGroups.get Acessar os detalhes de um grupo de nós do Dataproc.
dataproc.nodeGroups.update Redimensione um grupo de nós do Dataproc.

Operações do grupo de nós de driver

É possível usar a CLI gcloud e a API Dataproc para criar, receber, redimensionar, excluir e enviar um job para um grupo de nós de driver do Dataproc.

Criar um cluster de grupo de nós de driver

Um grupo de nós de driver está associado a um cluster do Dataproc. Crie um grupo de nós como parte da criação de um cluster do Dataproc. É possível usar a CLI gcloud ou a API REST do Dataproc para criar um cluster do Dataproc com um grupo de nós de driver.

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --driver-pool-size=SIZE \
    --driver-pool-id=NODE_GROUP_ID

Sinalizações obrigatórias:

  • CLUSTER_NAME: o nome do cluster, que precisa ser exclusivo em um projeto. O nome precisa começar com uma letra minúscula e pode conter até 51 letras minúsculas, números e hifens. Ele não pode terminar com hífen. O nome de um cluster excluído pode ser reutilizado.
  • REGION: a região em que o cluster estará localizado.
  • SIZE: o número de nós do driver no grupo de nós. O número de nós necessários depende da carga do job e do tipo de máquina do pool de drivers. O número mínimo de nós do grupo de drivers é igual à memória total ou às vCPUs exigidas pelos drivers do job divididas pelas vCPUs ou pela memória da máquina de cada pool do driver.
  • NODE_GROUP_ID: opcional e recomendado. O ID precisa ser exclusivo no cluster. Use esse ID para identificar o grupo de drivers em operações futuras, como o redimensionamento do grupo de nós. Se não for especificado, o Dataproc gerará o ID do grupo de nós.

Sinalização recomendada:

  • --enable-component-gateway: adicione essa sinalização para ativar o Gateway de componentes do Dataproc, que fornece acesso à interface da Web YARN. As páginas "Application" e " Scheduler" do programador da IU do YARN exibem o status do cluster e do job, a memória da fila do aplicativo, a capacidade principal e outras métricas.

Outras sinalizações: as sinalizações driver-pool opcionais a seguir podem ser adicionadas ao comando gcloud dataproc clusters create para personalizar o grupo de nós.

Flag Valor padrão
--driver-pool-id Um identificador de string, gerado pelo serviço se não for definido pela sinalização. Esse ID pode ser usado para identificar o grupo de nós ao realizar futuras operações de pool de nós, como o redimensionamento do grupo.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator Sem padrão. Ao especificar um acelerador, o tipo de GPU é obrigatório. O número de GPUs é opcional.
--num-driver-pool-local-ssds Sem padrão
--driver-pool-local-ssd-interface Sem padrão
--driver-pool-boot-disk-type pd-standard
--driver-pool-boot-disk-size 1000 GB
--driver-pool-min-cpu-platform AUTOMATIC

REST

Conclua um AuxiliaryNodeGroup como parte de uma solicitação cluster.create da API Dataproc.

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: obrigatório. ID do projeto do Google Cloud.
  • REGION: obrigatório. Região do cluster do Dataproc.
  • CLUSTER_NAME: obrigatório. O nome do cluster, que precisa ser exclusivo em um projeto. O nome precisa começar com uma letra minúscula e pode conter até 51 letras minúsculas, números e hifens. Ele não pode terminar com hífen. O nome de um cluster excluído pode ser reutilizado.
  • SIZE: obrigatório. Número de nós no grupo.
  • NODE_GROUP_ID: opcional e recomendado. O ID precisa ser exclusivo no cluster. Use esse ID para identificar o grupo de drivers em operações futuras, como o redimensionamento do grupo de nós. Se não for especificado, o Dataproc gerará o ID do grupo de nós.

Outras opções:consulte NodeGroup.

Método HTTP e URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

Corpo JSON da solicitação:

{
  "clusterName":"CLUSTER_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion":""
    },
    "endpointConfig": {
      "enableHttpPortAccess": true
    },
    "auxiliaryNodeGroups": [{
        "nodeGroup":{
            "roles":["DRIVER"],
            "nodeGroupConfig": {
                "numInstances": SIZE
             }
         },
        "nodeGroupId": "NODE_GROUP_ID"
    }]
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    ...
    "auxiliaryNodeGroups": [
      {
        "nodeGroup": {
"name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
          "roles": [
            "DRIVER"
          ],
          "nodeGroupConfig": {
            "numInstances": SIZE,
            "instanceNames": [
              "CLUSTER_NAME-np-q1gp",
              "CLUSTER_NAME-np-xfc0"
            ],
            "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
            "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
            "diskConfig": {
              "bootDiskSizeGb": 1000,
              "bootDiskType": "pd-standard"
            },
            "managedGroupConfig": {
              "instanceTemplateName": "dataproc-2a8224d2-...",
              "instanceGroupManagerName": "dataproc-2a8224d2-..."
            },
            "minCpuPlatform": "AUTOMATIC",
            "preemptibility": "NON_PREEMPTIBLE"
          }
        },
        "nodeGroupId": "NODE_GROUP_ID"
      }
    ]
  },
}

Receber metadados do cluster do grupo de nós de driver

Use o comando gcloud dataproc node-groups describe ou a API Dataproc para receber metadados do grupo de nós do driver.

gcloud

gcloud dataproc node-groups describe NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION

Sinalizações obrigatórias:

  • NODE_GROUP_ID: é possível executar gcloud dataproc clusters describe CLUSTER_NAME para listar o ID do grupo de nós.
  • CLUSTER_NAME: o nome do cluster.
  • REGION: a região do cluster.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: obrigatório. ID do projeto do Google Cloud.
  • REGION: obrigatório. A região do cluster.
  • CLUSTER_NAME: obrigatório. O nome do cluster.
  • NODE_GROUP_ID: obrigatório. É possível executar gcloud dataproc clusters describe CLUSTER_NAME para listar o ID do grupo de nós.

Método HTTP e URL:

GET https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAMEnodeGroups/Node_GROUP_ID

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
  "roles": [
    "DRIVER"
  ],
  "nodeGroupConfig": {
    "numInstances": 5,
    "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
    "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
    "diskConfig": {
      "bootDiskSizeGb": 1000,
      "bootDiskType": "pd-standard"
    },
    "managedGroupConfig": {
      "instanceTemplateName": "dataproc-driver-pool-mcia3j656h2fy",
      "instanceGroupManagerName": "dataproc-driver-pool-mcia3j656h2fy"
    },
    "minCpuPlatform": "AUTOMATIC",
    "preemptibility": "NON_PREEMPTIBLE"
  }
}

Redimensionar um grupo de nós de drivers

Use o comando gcloud dataproc node-groups resize ou a API Dataproc para adicionar ou remover nós de driver de um grupo de nós de driver do cluster.

gcloud

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=SIZE

Sinalizações obrigatórias:

  • NODE_GROUP_ID: é possível executar gcloud dataproc clusters describe CLUSTER_NAME para listar o ID do grupo de nós.
  • CLUSTER_NAME: o nome do cluster.
  • REGION: a região do cluster.
  • SIZE: especifica o novo número de nós de driver no grupo de nós.

Sinalização opcional:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: ao reduzir um grupo de nós, é possível adicionar essa flag para especificar uma TIMEOUT_DURATION de desativação otimizada para evitar o encerramento imediato dos drivers de job. Recomendação: defina uma duração de tempo limite que seja pelo menos igual à duração do job mais longo em execução no grupo de nós. Não há suporte para a recuperação de drivers com falha.

Exemplo: comando de escalonar verticalmente NodeGroup da CLI gcloud:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=4

Exemplo: comando de reduzir escala vertical NodeGroup da CLI gcloud:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=1 \
    --graceful-decommission-timeout="100s"

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: obrigatório. ID do projeto do Google Cloud.
  • REGION: obrigatório. A região do cluster.
  • NODE_GROUP_ID: obrigatório. É possível executar gcloud dataproc clusters describe CLUSTER_NAME para listar o ID do grupo de nós.
  • SIZE: obrigatório. Novo número de nós no grupo de nós.
  • TIMEOUT_DURATION: opcional. Ao reduzir um grupo de nós, é possível adicionar um gracefulDecommissionTimeout ao corpo da solicitação para evitar o encerramento imediato dos drivers de job. Recomendação: defina uma duração de tempo limite que seja pelo menos igual à duração do job mais longo em execução no grupo de nós. Não há suporte para a recuperação de drivers com falha.

    Exemplo:

    { "size": SIZE,
      "gracefulDecommissionTimeout": "TIMEOUT_DURATION"
    }
       

Método HTTP e URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/Node_GROUP_ID:resize

Corpo JSON da solicitação:

{
  "size": SIZE,
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.NodeGroupOperationMetadata",
    "nodeGroupId": "NODE_GROUP_ID",
    "clusterUuid": "CLUSTER_UUID",
    "status": {
      "state": "PENDING",
      "innerState": "PENDING",
      "stateStartTime": "2022-12-01T23:34:53.064308Z"
    },
    "operationType": "RESIZE",
    "description": "Scale "up or "down" a GCE node pool to SIZE nodes."
  }
}

Excluir um cluster de grupo de nós de driver

Quando você exclui um cluster do Dataproc, os grupos de nós associados a ele são excluídos.

Envie um job

Use o comando gcloud dataproc jobs submit ou a API Dataproc para enviar um job a um cluster com um grupo de nós de driver.

gcloud

gcloud dataproc jobs submit JOB_COMMAND \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --driver-required-memory-mb=DRIVER_MEMORY \
    --driver-required-vcores=DRIVER_VCORES \
    DATAPROC_FLAGS \
    -- JOB_ARGS

Sinalizações obrigatórias:

  • JOB_COMMAND: especifique o comando do job.
  • CLUSTER_NAME: o nome do cluster.
  • DRIVER_MEMORY: quantidade de memória em MB de drivers de job necessária para executar um job. Consulte Controles de memória do Yarn.
  • DRIVER_VCORES: o número de vCPUs necessárias para executar um job.

Outras sinalizações:

  • DATAPROC_FLAGS: inclua outras sinalizações gcloud dataproc jobs submit relacionadas ao tipo de job.
  • JOB_ARGS: adicione quaisquer argumentos (depois de -- para transmitir o job.

Exemplos: é possível executar os exemplos a seguir em uma sessão do terminal SSH em um cluster de grupo de nós de driver do Dataproc.

  • Job do Spark para estimar o valor de pi:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 1000
    
  • Job de contagem de palavras do Spark:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.JavaWordCount \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 'gs://apache-beam-samples/shakespeare/macbeth.txt'
    
  • Job do PySpark para estimar o valor de pi:

    gcloud dataproc jobs submit pyspark \
        file:///usr/lib/spark/examples/src/main/python/pi.py \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        -- 1000
    
  • Job MapReduce TeraGen do Hadoop:

    gcloud dataproc jobs submit hadoop \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --jar file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \
        -- teragen 1000 \
        hdfs:///gen1/test
    

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: obrigatório. ID do projeto do Google Cloud.
  • REGION: obrigatório. Região do cluster do Dataproc
  • CLUSTER_NAME: obrigatório. O nome do cluster, que precisa ser exclusivo em um projeto. O nome precisa começar com uma letra minúscula e pode conter até 51 letras minúsculas, números e hifens. Ele não pode terminar com hífen. O nome de um cluster excluído pode ser reutilizado.
  • DRIVER_MEMORY: obrigatório. Quantidade de memória em MB dos drivers de job necessária para executar um job. Consulte Controles de memória do Yarn.
  • DRIVER_VCORES: obrigatório. O número de vCPUs necessárias para executar um job.
Campos adicionais:inclua mais campos relacionados ao tipo de job e aos argumentos dele. O exemplo de solicitação inclui os campos necessários para enviar um job do Spark que estima o valor de pi.

Método HTTP e URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit

Corpo JSON da solicitação:

{
  "job": {
    "placement": {
    "clusterName": "CLUSTER_NAME",
    },
    "driverSchedulingConfig": {
      "memoryMb]": DRIVER_MEMORY,
      "vcores": DRIVER_VCORES
    },
    "sparkJob": {
      "jarFileUris": "file:///usr/lib/spark/examples/jars/spark-examples.jar",
      "args": [
        "10000"
      ],
      "mainClass": "org.apache.spark.examples.SparkPi"
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "reference": {
    "projectId": "PROJECT_ID",
    "jobId": "job-id"
  },
  "placement": {
    "clusterName": "CLUSTER_NAME",
    "clusterUuid": "cluster-Uuid"
  },
  "sparkJob": {
    "mainClass": "org.apache.spark.examples.SparkPi",
    "args": [
      "1000"
    ],
    "jarFileUris": [
      "file:///usr/lib/spark/examples/jars/spark-examples.jar"
    ]
  },
  "status": {
    "state": "PENDING",
    "stateStartTime": "start-time"
  },
  "jobUuid": "job-Uuid"
}

Ver registros do job

Para ver o status do job e ajudar a depurar problemas dele, acesse os registros do driver usando a CLI gcloud ou o console do Google Cloud.

gcloud

Os registros do driver do job são transmitidos para a saída da CLI gcloud ou o console do Google Cloud durante a execução do job. Os registros de driver permanecem em um bucket de preparação do cluster do Dataproc no Cloud Storage.

Execute o seguinte comando da CLI gcloud para listar o local dos registros do driver no Cloud Storage:

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

O local do Cloud Storage dos registros do driver é listado como driverOutputResourceUri na resposta ao comando no seguinte formato:

driverOutputResourceUri: gs://CLUSTER_STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/jobs/JOB_ID

Console

Para ver os registros do cluster do grupo de nós:

  1. Ative o Logging.

  2. Use o formato de consulta da Análise de registros a seguir para encontrar registros:

    resource.type="cloud_dataproc_cluster"
    resource.labels.project_id="PROJECT_ID"
    resource.labels.cluster_name="CLUSTER_NAME"
    log_name="projects/PROJECT_ID/logs/LOG_TYPE>"
    
    Substitua:

    • PROJECT_ID: ID do projeto do Google Cloud
    • CLUSTER_NAME: o nome do cluster.
    • LOG_TYPE:
      • Registros de usuário do Yarn: yarn-userlogs
      • Registros do gerenciador de recursos do Yarn: hadoop-yarn-resourcemanager
      • Registros do gerenciador de nós do Yarn: hadoop-yarn-nodemanager

Monitorar as métricas

Os drivers de job do grupo de nós do Dataproc são executados em uma fila filha dataproc-driverpool-driver-queue em uma partição dataproc-driverpool.

Métricas do grupo de nós de motorista

A tabela a seguir lista as métricas de driver do grupo de nós associadas, que são coletadas por padrão para esses grupos.

Métrica do grupo de nós de motorista Descrição
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB A quantidade de memória disponível em Mebibytes em dataproc-driverpool-driver-queue na partição dataproc-driverpool.
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers O número de contêineres pendentes (na fila) em dataproc-driverpool-driver-queue na partição dataproc-driverpool.

Métricas da fila filha

A tabela a seguir lista as métricas da fila filha. As métricas são coletadas por padrão para grupos de nós de drivers e podem ser ativadas para coleta em qualquer cluster do Dataproc.

Métrica da fila filha Descrição
yarn:ResourceManager:ChildQueueMetrics:AvailableMB A quantidade de memória disponível em Mebibytes nesta fila na partição padrão.
yarn:ResourceManager:ChildQueueMetrics:PendingContainers Número de contêineres pendentes (na fila) nessa fila na partição padrão.
yarn:ResourceManager:ChildQueueMetrics:running_0 O número de jobs com um ambiente de execução entre 0 e 60 minutos nesta fila em todas as partições.
yarn:ResourceManager:ChildQueueMetrics:running_60 O número de jobs com um ambiente de execução entre 60 e 300 minutos nesta fila em todas as partições.
yarn:ResourceManager:ChildQueueMetrics:running_300 O número de jobs com um ambiente de execução entre 300 e 1440 minutos nesta fila em todas as partições.
yarn:ResourceManager:ChildQueueMetrics:running_1440 O número de jobs com um ambiente de execução maior que 1440 minutos nesta fila sob todas as partições.
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted Número de aplicativos enviados para esta fila em todas as partições.

Para visualizar YARN ChildQueueMetrics e DriverPoolsQueueMetrics no Console do Google Cloud:

Depuração do driver do job do grupo de nós

Nesta seção, apresentamos condições e erros do grupo de nós de drivers com recomendações para corrigir a condição ou o erro.

Condições

  • Condição:yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB está se aproximando de 0. Isso indica que a fila dos pools de drivers do cluster está ficando sem memória.

    Recomendação: amplie o tamanho do pool de drivers.

  • Condição:yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers é maior que 0. Isso pode indicar que a fila dos pools de drivers do cluster está ficando sem memória e o YARN está enfileirando os jobs.

    Recomendação: amplie o tamanho do pool de drivers.

Erros

  • Erro: Cluster <var>CLUSTER_NAME</var> requires driver scheduling config to run SPARK job because it contains a node pool with role DRIVER. Positive values are required for all driver scheduling config values.

    Recomendação:defina driver-required-memory-mb e driver-required-vcores com números positivos.

  • Erro: Container exited with a non-zero exit code 137.

    Recomendação:aumente driver-required-memory-mb para o uso da memória do job.