Tipos de máquina admitidos

Los clústeres de Managed Service para Apache Spark se compilan en instancias de Compute Engine. Los recursos de hardware virtualizados disponibles para una instancia dependen de los tipos de máquinas. Compute Engine ofrece tipos predefinidos de máquinas y tipos personalizados de máquinas. Los clústeres de Managed Service para Apache Spark pueden usar tipos predefinidos y personalizados para los nodos principales y trabajadores.

Los clústeres de Managed Service para Apache Spark admiten los siguientes tipos de máquinas predefinidos de Compute Engine (la disponibilidad de tipo de máquina varía según la región):

  • Tipos de máquinas de uso general, que incluyen los tipos de máquinas N1, N2, N2D, E2, C3, C4, N4 y N4D (Managed Service para Apache Spark también admite tipos personalizados de máquinas N1, N2, N2D, E2, N4 y N4D).

    Limitaciones:

    • El tipo de máquina n1-standard-1 no es compatible con imágenes 2.0 o posteriores (el tipo de máquina n1-standard-1 no se recomienda para imágenes anteriores a la versión 2.0; en su lugar, usa un tipo de máquina con más memoria).
    • Los tipos de máquinas de núcleo compartido no son compatibles, lo que incluye los siguientes tipos de máquinas no compatibles:
      • E2: Tipos de máquinas de núcleo compartido e2-micro, e2-small y e2-medium
      • N1: Tipos de máquinas de núcleo compartido f1-micro y g1-small
    • Managed Service para Apache Spark selecciona hyperdisk-balanced como el tipo de disco de arranque si el tipo de máquina es C4, N4 o N4D.
  • Tipos de máquinas optimizados para procesamiento, que incluyen los tipos de máquinas C2 y C2D.
  • Tipos de máquina con optimización de memoria, que incluyen tipos de máquinas M1 y M2.
  • Tipos de máquinas Arm, que incluyen los tipos de máquinas C4A

Tipos personalizados de máquinas

Managed Service para Apache Spark admite tipos personalizados de máquinas de las series N1, N2, N2D, E2, N4 y N4D.

Los tipos personalizados de máquinas son ideales para las siguientes cargas de trabajo:

  • Las cargas de trabajo que no son adecuadas para los tipos predefinidos de máquina
  • Las cargas de trabajo que requieren mayor memoria o poder de procesamiento, pero no todas las actualizaciones que proporciona el próximo nivel de tipo de máquina

Por ejemplo, si tienes una carga de trabajo que necesita más potencia de procesamiento que la que proporciona una instancia de n1-standard-4, pero en el siguiente paso, una instancia de n1-standard-8, proporciona demasiada capacidad. Con los tipos personalizados de máquinas, puedes crear clústeres de Managed Service para Apache Spark con nodos principales o trabajadores en el rango medio, con 6 CPU virtuales y 25 GB de memoria.

Especifica un tipo personalizado de máquina

Los tipos personalizados de máquinas usan una especificación machine type especial y están sujetos a limitaciones. A modo de ejemplo, la especificación del tipo personalizado de máquina para una VM personalizada con 6 CPU virtuales y 22.5 GB de memoria es custom-6-23040:

Los números en la especificación de tipo de máquina corresponden al número de CPU virtuales (vCPU) en la máquina (6) y la cantidad de memoria (23040). Se calcula la cantidad de memoria multiplicando la cantidad de memoria en gigabytes por 1024 (consulta Expresa la memoria en GB o MB). En este ejemplo, 22.5 (GB) se multiplica por 1024: 22.5 * 1024 = 23040.

El tipo de máquina personalizado se especifica cuando creas un clúster. Puedes establecer el tipo de máquina para nodos principales o trabajadores, o para ambos, cuando creas un clúster. Si estableces los dos, el nodo principal puede usar un tipo personalizado de máquina diferente al del tipo que usan los trabajadores. El tipo de máquina que usan los trabajadores secundarios sigue la configuración de los trabajadores principales y no se puede establecer por separado (consulta Trabajadores secundarios: VM interrumpibles y no interrumpibles).

Precios de los tipos personalizados de máquinas

Los precios de los tipos personalizados de máquinas se basan en los recursos usados en una máquina personalizada. El precio de Managed Service para Apache Spark se agrega al costo de los recursos de procesamiento y se basa en la cantidad total de CPU virtuales (vCPUs) que se usan en un clúster.

Crea un clúster con un tipo de máquina especificado

Consola deGoogle Cloud

  • Abre la página Crear clúster.
  • En Configuración del trabajador, selecciona la familia de máquinas, la serie y el tipo.
  • De forma predeterminada, la configuración del nodo del controlador(principal) es la misma que la del trabajador principal. En Configuración adicional, puedes editar Nodo del controlador para desactivar la casilla de verificación Nodo del controlador predeterminado igual que el trabajador principal y, luego, especificar la configuración del nodo del controlador.
  • Comando de gcloud CLI

    Ejecuta el comando gcloud dataproc clusters create con las siguientes marcas para crear un clúster de Managed Service para Apache Spark con tipos de máquinas principales o trabajadoras:

    • La marca --master-machine-type machine-type te permite establecer el tipo predefinido o personalizado de máquina que usa la instancia de VM principal en tu clúster (o instancias principales si creas un clúster de HA).
    • La marca --worker-machine-type custom-machine-type te permite establecer el tipo predefinido o personalizado de máquina que usan las instancias de VM de trabajador en tu clúster.

    Ejemplo:

    gcloud dataproc clusters create test-cluster /
        --master-machine-type custom-6-23040 /
        --worker-machine-type custom-6-23040 /
        other args
    
    Una vez que se inicie el clúster de Managed Service para Apache Spark, sus detalles se mostrarán en la ventana de terminal. La siguiente es una lista parcial de muestra de las propiedades del clúster mostradas en la ventana de terminal:
    ...
    properties:
      distcp:mapreduce.map.java.opts: -Xmx1638m
      distcp:mapreduce.map.memory.mb: '2048'
      distcp:mapreduce.reduce.java.opts: -Xmx4915m
      distcp:mapreduce.reduce.memory.mb: '6144'
      mapred:mapreduce.map.cpu.vcores: '1'
      mapred:mapreduce.map.java.opts: -Xmx1638m
    ...
    

    API

    Para crear un clúster con tipos de máquina personalizados, establece machineTypeUri en InstanceGroupConfig masterConfig y/o workerConfig en la solicitud a la API cluster.create.

    Ejemplo:

    POST /v1/projects/my-project-id/regions/is-central1/clusters/
    {
      "projectId": "my-project-id",
      "clusterName": "test-cluster",
      "config": {
        "configBucket": "",
        "gceClusterConfig": {
          "subnetworkUri": "default",
          "zoneUri": "us-central1-a"
        },
        "masterConfig": {
          "numInstances": 1,
          "machineTypeUri": "n1-highmem-4",
          "diskConfig": {
            "bootDiskSizeGb": 500,
            "numLocalSsds": 0
          }
        },
        "workerConfig": {
          "numInstances": 2,
          "machineTypeUri": "n1-highmem-4",
          "diskConfig": {
            "bootDiskSizeGb": 500,
            "numLocalSsds": 0
          }
        }
      }
    }
    

    Crea un clúster con un tipo personalizado de máquina y memoria extendida

    Managed Service para Apache Spark admite tipos personalizados de máquinas con memoria extendida más allá del límite de 6.5 GB por CPU virtual (consulta Precios de la memoria extendida).

    Consola deGoogle Cloud

  • Abre la página Crear clúster de Managed Service para Apache Spark.
  • En Configuración del trabajador, selecciona la familia de máquinas, la serie y el tipo.
  • De forma predeterminada, la configuración del nodo del controlador (principal) es la misma que la del trabajador principal. En Configuración adicional, puedes editar Nodo del controlador para desactivar la casilla de verificación Nodo del controlador predeterminado igual que el trabajador principal y, luego, especificar la configuración del nodo del controlador.
  • gcloud CLI

    Para crear un clúster desde la línea de comandos de gcloud con CPU personalizadas con memoria extendida, agrega un sufijo -ext a las marcas ‑‑master-machine-type o ‑‑worker-machine-type.

    Ejemplo

    La siguiente línea de comandos de gcloud de muestra crea un clúster de Managed Service para Apache Spark con 1 CPU y 50 GB de memoria (50 * 1,024 = 51,200) en cada nodo:

    gcloud dataproc clusters create test-cluster /
        --master-machine-type custom-1-51200-ext /
        --worker-machine-type custom-1-51200-ext /
        other args
    

    API

    El siguiente fragmento JSON de muestra de <code.instancegroupconfig< code="" dir="ltr" translate="no"></code.instancegroupconfig<> de una solicitud a la API de REST de clusters.create de Dataproc especifica 1 CPU y 50 GB de memoria (50 * 1,024 = 51,200) en cada nodo:

    ...
        "masterConfig": {
          "numInstances": 1,
          "machineTypeUri": "custom-1-51200-ext",
        ...
        },
        "workerConfig": {
          "numInstances": 2,
          "machineTypeUri": "custom-1-51200-ext",
         ...
    ...
    

    Tipos de máquinas ARM

    Managed Service para Apache Spark admite la creación de un clúster con nodos que usan tipos de máquinas Arm, como el tipo de máquina C4A.

    Requisitos y limitaciones:

    • La imagen de Managed Service para Apache Spark debe ser compatible con el chipset Arm. Las imágenes de Managed Service para Apache Spark 2.1-ubuntu20-arm, 2.2-ubuntu22-arm y 2.3-ubuntu22-arm (y, más adelante, el sufijo -arm) son compatibles con el chipset Arm. Las imágenes compatibles con ARM no admiten muchos componentes opcionales ni de acción de inicialización, como se indica en las páginas de versiones de actualización de imágenes.
    • Dado que se debe especificar una imagen para un clúster, los nodos principal, trabajador y trabajador secundario deben usar un tipo de máquina Arm que sea compatible con la imagen Arm de Managed Service para Apache Spark seleccionada.
    • Las funciones de Managed Service para Apache Spark que no son compatibles con los tipos de máquinas Arm no están disponibles (por ejemplo, los tipos de máquinas C4A no admiten SSD locales).
    • Las imágenes de ARM solo admiten componentes preinstalados y un conjunto limitado de componentes opcionales. No se admiten otros componentes opcionales ni acciones de inicialización.

    Crea un clúster con un tipo de máquina Arm

    Console

    Para crear un clúster de Managed Service para Apache Spark que use un tipo de máquina Arm, haz lo siguiente:

    1. Abre la página Crear clúster de Managed Service para Apache Spark.
    2. En Configuración del trabajador, selecciona la familia de máquinas, la serie y el tipo.
    3. De forma predeterminada, la configuración del nodo del controlador (principal) es la misma que la del trabajador principal. En Configuración adicional, puedes editar Nodo del controlador para desactivar la casilla de verificación Nodo del controlador predeterminado igual que el trabajador principal y, luego, especificar la configuración del nodo del controlador.

    gcloud

    Para crear un clúster de Managed Service para Apache Spark que use un tipo de máquina Arm, ejecuta el siguiente comando de gcloud de forma local en una ventana de la terminal o en Cloud Shell. En este ejemplo, se especifican la imagen 2.1-ubuntu20-arm y el tipo de máquina Arm c4a-standard-4.

    gcloud dataproc clusters create cluster-name \
        --region=REGION \
        --image-version=2.1-ubuntu20-arm \
        --master-machine-type=c4a-standard-4 \
        --worker-machine-type=c4a-standard-4
    

    Notas:

    • REGION: Es la región en la que se ubicará el clúster.

    • Consulta la documentación de referencia de gcloud dataproc clusters create para obtener información sobre las marcas de línea de comandos adicionales que puedes usar para personalizar tu clúster.

    API

    En la siguiente solicitud de ejemplo clusters.create de la API de REST de Dataproc, se crea un clúster que usa el tipo de máquina c4a-standard-4 Arm.

    POST /v1/projects/my-project-id/regions/is-central1/clusters/
    {
      "projectId": "my-project-id",
      "clusterName": "sample-cluster",
      "config": {
        "configBucket": "",
        "gceClusterConfig": {
          "subnetworkUri": "default",
          "zoneUri": "us-central1-a"
        },
        "masterConfig": {
          "numInstances": 1,
          **"machineTypeUri": "c4a-standard-4"**,
          "diskConfig": {
            "bootDiskSizeGb": 500,
          }
        },
        "workerConfig": {
          "numInstances": 2,
          **"machineTypeUri": "c4a-standard-4"**,
          "diskConfig": {
            "bootDiskSizeGb": 500,
            "numLocalSsds": 0
          }
        },
        "softwareConfig": {
          "imageVersion": "2.1-ubuntu20-arm"
        }
      }
    }
    

    ¿Qué sigue?