Grupos de nodos del controlador de Dataproc

Descripción general

Un recurso NodeGroup de Dataproc es un grupo de nodos del clúster de Dataproc que ejecutan una función asignada. En esta página, se describe el grupo de nodos del controlador, que es un grupo de VM de Compute Engine a las que se les asigna la función Driver con el fin de ejecutar controladores de trabajos en el clúster de Dataproc.

Cuándo usar grupos de nodos del controlador

  • Usa los grupos de nodos del controlador solo cuando necesites ejecutar muchos trabajos simultáneos en un clúster compartido.
  • Aumenta los recursos del nodo principal antes de usar los grupos de nodos del controlador para evitar las limitaciones de los grupos de nodos del controlador.

Cómo te ayudan los nodos del controlador a ejecutar trabajos simultáneos

Dataproc inicia un proceso del controlador de trabajos en un nodo instancia principal del clúster de Dataproc para cada trabajo. A su vez, el proceso del controlador ejecuta un controlador de aplicaciones, como spark-submit, como su proceso secundario. Sin embargo, la cantidad de trabajos simultáneos en ejecución en la instancia principal está limitada por los recursos disponibles en el nodo principal, y como los nodos principales de Dataproc no se pueden escalar, un trabajo puede fallar o limitarse cuando los recursos del nodo principal no son suficientes para ejecutar un trabajo.

Los grupos de nodos del controlador son grupos de nodos especiales que administra YARN, por lo que la simultaneidad de trabajos no está limitada por los recursos del nodo principal. En clústeres con un grupo de nodos de controladores, los controladores de aplicaciones se ejecutan en nodos de controladores. Cada nodo de controlador puede ejecutar varios controladores de la aplicación si el nodo tiene recursos suficientes.

Ventajas

El uso de un clúster de Dataproc con un grupo de nodos de controladores te permite hacer lo siguiente:

  • Escala horizontalmente los recursos del controlador de trabajos para ejecutar más trabajos simultáneos.
  • Escala los recursos del controlador por separado de los recursos de los trabajadores
  • Obtener una reducción de escala más rápida en clústeres de imágenes de Dataproc 2.0 y versiones posteriores En estos clústeres, la instancia principal de la app se ejecuta dentro de un controlador de Spark en un grupo de nodos del controlador (el spark.yarn.unmanagedAM.enabled se establece en true de forma predeterminada).
  • Personaliza el inicio del nodo del controlador. Puedes agregar {ROLE} == 'Driver' en una secuencia de comandos de inicialización a fin de que esta realice acciones para un grupo de nodos del controlador en la selección de nodos.

Limitaciones

  • Los grupos de nodos no son compatibles con las plantillas de flujo de trabajo de Dataproc.
  • Los clústeres de grupos de nodos no se pueden detener, reiniciar ni escalar de forma automática.
  • La instancia principal de la app de MapReduce se ejecuta en nodos trabajadores. Una reducción de escala vertical de los nodos trabajadores puede ser lenta si habilitas el retiro de servicio ordenado.
  • La simultaneidad del trabajo se ve afectada por la propiedad del clúster dataproc:agent.process.threads.job.max. Por ejemplo, con tres instancias principales y esta propiedad se configura con el valor predeterminado de 100, la simultaneidad máxima de trabajos a nivel de clúster es 300.

Comparación del grupo de nodos del controlador con el modo de clúster de Spark

Atributo Modo de clúster de Spark Grupo de nodos del controlador
Disminución de la escala verticalmente de los nodos trabajadores Los controladores de larga duración se ejecutan en los mismos nodos trabajadores que los contenedores de corta duración, lo que hace que la reducción de escala de los trabajadores que usan el retiro de servicio ordenado sea lenta. Los nodos trabajadores reducen la escala verticalmente con mayor rapidez cuando los controladores se ejecutan en grupos de nodos.
Resultado del controlador transmitido Requiere buscar en registros YARN para encontrar el nodo en el que se programó el controlador. El resultado del controlador se transmite a Cloud Storage y se puede ver en la consola de Google Cloud y en el resultado del comando gcloud dataproc jobs wait después de que se completa un trabajo.

Permisos de IAM del grupo de nodos del controlador

Los siguientes permisos de IAM están asociados a las siguientes acciones relacionadas con el grupo de nodos de Dataproc.

Permiso Acción
dataproc.nodeGroups.create Crear grupos de nodos de Dataproc Si un usuario tiene dataproc.clusters.create en el proyecto, se otorga este permiso.
dataproc.nodeGroups.get Obtén los detalles de un grupo de nodos de Dataproc.
dataproc.nodeGroups.update Cambiar el tamaño de un grupo de nodos de Dataproc

Operaciones del grupo de nodos del controlador

Puedes usar gcloud CLI y la API de Dataproc para crear, obtener, cambiar el tamaño, borrar y enviar un trabajo a un grupo de nodos del controlador de Dataproc.

Crea un clúster de grupo de nodos de controladores

Se asocia un grupo de nodos del controlador con un clúster de Dataproc. Creas un grupo de nodos como parte de la creación de un clúster de Dataproc. Puedes usar gcloud CLI o la API de REST de Dataproc para crear un clúster de Dataproc con un grupo de nodos del controlador.

gcloud

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

Marcas obligatorias:

  • CLUSTER_NAME: Es el nombre del clúster, que debe ser único dentro de un proyecto. El nombre debe comenzar con una letra minúscula y puede contener hasta 51 letras minúsculas, números y guiones. No puede terminar con un guion. El nombre de un clúster borrado se puede volver a usar.
  • REGION: Es la región en la que se ubicará el clúster.
  • SIZE: La cantidad de nodos del controlador en el grupo de nodos. La cantidad de nodos necesarios depende de la carga de trabajo y del tipo de máquina del grupo de controladores. La cantidad de nodos mínimo del grupo de controladores es igual a la memoria total o las CPU virtuales requeridas por los controladores de trabajos divididos por la memoria o las CPU virtuales de cada grupo de controladores.
  • NODE_GROUP_ID: Opcional y recomendado El ID debe ser único dentro del clúster. Usa este ID para identificar el grupo de controladores en operaciones futuras, como cambiar el tamaño del grupo de nodos. Si no se especifica, Dataproc genera el ID del grupo de nodos.

Marca recomendada:

  • --enable-component-gateway: Agrega esta marca para habilitar la puerta de enlace de componentes de Dataproc, que proporciona acceso a la interfaz web de YARN. Las páginas del programador y de la aplicación de la IU de YARN muestran el estado del clúster y del trabajo, la memoria de la cola de la aplicación, la capacidad principal y otras métricas.

Marcas adicionales: Las siguientes marcas driver-pool opcionales se pueden agregar al comando gcloud dataproc clusters create para personalizar el grupo de nodos.

Marca Valor predeterminado
--driver-pool-id Un identificador de string, que genera el servicio si no lo configura la marca. Este ID se puede usar para identificar el grupo de nodos cuando se realizan operaciones futuras del grupo de nodos, como cambiar el tamaño del grupo de nodos.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator No hay predeterminado. Cuando se especifica un acelerador, se requiere el tipo de GPU; la cantidad de GPU es opcional.
--num-driver-pool-local-ssds Sin opción predeterminada
--driver-pool-local-ssd-interface Sin opción predeterminada
--driver-pool-boot-disk-type pd-standard
--driver-pool-boot-disk-size 1000 GB
--driver-pool-min-cpu-platform AUTOMATIC

REST

Completa un AuxiliaryNodeGroup como parte de una solicitud cluster.create de la API de Dataproc.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. ID del proyecto de Google Cloud.
  • REGION: Obligatorio. La región del clúster de Dataproc.
  • CLUSTER_NAME: Obligatorio. El nombre del clúster, que debe ser único dentro de un proyecto. El nombre debe comenzar con una letra minúscula y puede contener hasta 51 letras minúsculas, números y guiones. No puede terminar con un guion. El nombre de un clúster borrado se puede volver a usar.
  • SIZE: Obligatorio. Cantidad de nodos en el grupo de nodos.
  • NODE_GROUP_ID: Opcional y recomendado. El ID debe ser único dentro del clúster. Usa este ID para identificar el grupo de controladores en operaciones futuras, como cambiar el tamaño del grupo de nodos. Si no se especifica, Dataproc genera el ID del grupo de nodos.

Opciones adicionales: Consulta NodeGroup.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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"
      }
    ]
  },
}

Obtén metadatos de clústeres del grupo de nodos del controlador

Puedes usar el comando gcloud dataproc node-groups describe o la API de Dataproc para obtener metadatos del grupo de nodos del controlador.

gcloud

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

Marcas obligatorias:

  • NODE_GROUP_ID: Puedes ejecutar gcloud dataproc clusters describe CLUSTER_NAME para mostrar el ID del grupo de nodos.
  • CLUSTER_NAME: Es el nombre del clúster.
  • REGION: Es la región del clúster.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. ID del proyecto de Google Cloud.
  • REGION: Obligatorio. Es la región del clúster.
  • CLUSTER_NAME: Obligatorio. El nombre del clúster.
  • NODE_GROUP_ID: Obligatorio. Puedes ejecutar gcloud dataproc clusters describe CLUSTER_NAME para mostrar el ID del grupo de nodos.

Método HTTP y URL:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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"
  }
}

Cambia el tamaño de un grupo de nodos de controlador

Puedes usar el comando gcloud dataproc node-groups rename o la API de Dataproc para agregar o quitar nodos controladores de un grupo de nodos del controlador de clústeres.

gcloud

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

Marcas obligatorias:

  • NODE_GROUP_ID: Puedes ejecutar gcloud dataproc clusters describe CLUSTER_NAME para mostrar el ID del grupo de nodos.
  • CLUSTER_NAME: Es el nombre del clúster.
  • REGION: Es la región del clúster.
  • SIZE: Especifica la cantidad nueva de nodos del controlador en el grupo de nodos.

Marca opcional:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: Cuando reduces el escalamiento de un grupo de nodos, puedes agregar esta marca para especificar un retiro de servicio ordenado TIMEOUT_DURATION y evitar la finalización inmediata de los controladores de trabajos. Recomendación: Establece una duración de tiempo de espera que sea, al menos, igual a la duración del trabajo más largo en ejecución en el grupo de nodos (no se admite la recuperación de controladores con errores).

Ejemplo: Comando de escalamiento vertical de NodeGroup de gcloud CLI:

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

Ejemplo: Comando de reducción de escala NodeGroup de gcloud CLI:

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

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. ID del proyecto de Google Cloud.
  • REGION: Obligatorio. Es la región del clúster.
  • NODE_GROUP_ID: Obligatorio. Puedes ejecutar gcloud dataproc clusters describe CLUSTER_NAME para mostrar el ID del grupo de nodos.
  • SIZE: Obligatorio. Nueva cantidad de nodos en el grupo de nodos.
  • TIMEOUT_DURATION: Opcional Cuando reduces el escalamiento de un grupo de nodos, puedes agregar un gracefulDecommissionTimeout al cuerpo de la solicitud para evitar la finalización inmediata de los controladores de trabajos. Recomendación: Establece una duración de tiempo de espera que sea, al menos, igual a la duración del trabajo más largo en ejecución en el grupo de nodos (no se admite la recuperación de controladores con errores).

    Ejemplo:

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

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "size": SIZE,
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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."
  }
}

Borra el clúster de un grupo de nodos del controlador

Cuando borras un clúster de Dataproc, se borran los grupos de nodos asociados con el clúster.

Envía un trabajo

Puedes usar el comando gcloud dataproc jobs submit o la API de Dataproc para enviar un trabajo a un clúster con un grupo de nodos de controlador.

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

Marcas obligatorias:

  • JOB_COMMAND: Especifica el comando de trabajo.
  • CLUSTER_NAME: Es el nombre del clúster.
  • DRIVER_MEMORY: Cantidad de memoria del controlador de trabajos en MB necesaria para ejecutar un trabajo (consulta Controles de memoria Yarn).
  • DRIVER_VCORES: La cantidad de CPU virtuales necesarias para ejecutar un trabajo.

Marcas adicionales:

  • DATAPROC_FLAGS: Agrega cualquier marca adicional gcloud dataproc jobs submit relacionada con el tipo de trabajo.
  • JOB_ARGS: Agrega cualquier argumento (después de -- para pasarlo al trabajo.

Ejemplos: Puedes ejecutar los siguientes ejemplos desde una sesión de terminal SSH en un clúster del grupo de nodos del controlador de Dataproc.

  • Trabajo de Spark para estimar el 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
    
  • Trabajo de recuento de palabras de 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'
    
  • Trabajo de PySpark para estimar el 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
    
  • Trabajo de MapReduce de Hadoop TeraGen:

    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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. ID del proyecto de Google Cloud.
  • REGION: Obligatorio. Región del clúster de Dataproc
  • CLUSTER_NAME: Obligatorio. El nombre del clúster, que debe ser único dentro de un proyecto. El nombre debe comenzar con una letra minúscula y puede contener hasta 51 letras minúsculas, números y guiones. No puede terminar con un guion. El nombre de un clúster borrado se puede volver a usar.
  • DRIVER_MEMORY: Obligatorio. Cantidad de memoria de los controladores de trabajos en MB necesaria para ejecutar un trabajo (consulta Controles de memoria de Yarn).
  • DRIVER_VCORES: Obligatorio. La cantidad de CPU virtuales necesarias para ejecutar un trabajo.
Campos adicionales: Agrega campos adicionales relacionados con el tipo de trabajo y los argumentos del trabajo (la solicitud de muestra incluye los campos necesarios para enviar un trabajo de Spark que calcule el valor de pi).

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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 de trabajos

Para ver el estado del trabajo y ayudar a depurar problemas del trabajo, puedes ver los registros del controlador con gcloud CLI o la consola de Google Cloud.

gcloud

Los registros del controlador de trabajos se transmiten a la salida de gcloud CLI o a la consola de Google Cloud durante la ejecución del trabajo. Los registros del controlador persisten en el bucket de etapa de pruebas del clúster de Dataproc en Cloud Storage.

Ejecuta el siguiente comando de gcloud CLI para mostrar la ubicación de los registros del controlador en Cloud Storage:

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

La ubicación de Cloud Storage de los registros del controlador se muestra como driverOutputResourceUri en el resultado del comando con el siguiente formato:

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

Console

Para ver los registros de clústeres de grupos de nodos, haz lo siguiente:

  1. Habilita Logging.

  2. Puedes usar el siguiente formato de consulta del Explorador de registros 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>"
    
    Reemplaza lo siguiente:

    • PROJECT_ID: ID del proyecto de Google Cloud
    • CLUSTER_NAME: Es el nombre del clúster.
    • LOG_TYPE:
      • Registros de usuario de YARN: yarn-userlogs
      • Registros del administrador de recursos de Yarn: hadoop-yarn-resourcemanager
      • Registros del administrador de nodos yarn: hadoop-yarn-nodemanager

Supervisa las métricas

Los controladores de trabajos del grupo de nodos de Dataproc se ejecutan en una cola secundaria dataproc-driverpool-driver-queue en una partición dataproc-driverpool.

Métricas del grupo de nodos del controlador

En la siguiente tabla, se enumeran las métricas del controlador de grupos de nodos asociadas, que se recopilan de forma predeterminada para los grupos de nodos del controlador.

Métrica del grupo de nodos del controlador Descripción
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB La cantidad de memoria disponible en mebibytes en dataproc-driverpool-driver-queue en la partición dataproc-driverpool.
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers La cantidad de contenedores pendientes (en cola) en dataproc-driverpool-driver-queue de la partición dataproc-driverpool.

Métricas de cola secundaria

En la siguiente tabla, se enumeran las métricas de las colas secundarias. Las métricas se recopilan de forma predeterminada para los grupos de nodos del controlador y se pueden habilitar para su recopilación en cualquier clúster de Dataproc.

Métrica de cola secundaria Descripción
yarn:ResourceManager:ChildQueueMetrics:AvailableMB La cantidad de memoria disponible en mebibytes en esta cola en la partición predeterminada.
yarn:ResourceManager:ChildQueueMetrics:PendingContainers Cantidad de contenedores pendientes (en cola) de esta cola en la partición predeterminada.
yarn:ResourceManager:ChildQueueMetrics:running_0 La cantidad de trabajos con un entorno de ejecución entre 0 y 60 minutos en esta cola en todas las particiones.
yarn:ResourceManager:ChildQueueMetrics:running_60 La cantidad de trabajos con un entorno de ejecución entre 60 y 300 minutos en esta cola en todas las particiones.
yarn:ResourceManager:ChildQueueMetrics:running_300 La cantidad de trabajos con un entorno de ejecución entre 300 y 1440 minutos en esta cola en todas las particiones.
yarn:ResourceManager:ChildQueueMetrics:running_1440 La cantidad de trabajos con un entorno de ejecución superior a 1440 minutos en esta cola en todas las particiones.
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted Cantidad de aplicaciones enviadas a esta cola en todas las particiones.

Para ver YARN ChildQueueMetrics y DriverPoolsQueueMetrics en la consola de Google Cloud, sigue estos pasos:

Depuración del controlador de trabajos del grupo de nodos

En esta sección, se proporcionan las condiciones y los errores del grupo de nodos del controlador con recomendaciones para corregir la condición o el error.

Condiciones

  • Condición: yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB se acerca a 0. Esto indica que la cola de grupos de controladores del clúster se está quedando sin memoria.

    Recomendación: Escala verticalmente el tamaño del grupo de controladores.

  • Condición: yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers es mayor que 0. Esto puede indicar que la cola de grupos de controladores del clúster se está quedando sin memoria y que YARN pone en cola los trabajos.

    Recomendación: Escala verticalmente el tamaño del grupo de controladores.

Errores

  • Error: 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.

    Recomendación: Configura driver-required-memory-mb y driver-required-vcores con números positivos.

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

    Recomendación: Aumenta driver-required-memory-mb para el uso de memoria del trabajo.