Ejecuta una carga de trabajo por lotes de Apache Spark

Crear

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  4. Habilita la API de Dataproc.

    Habilita la API

  5. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  7. Habilita la API de Dataproc.

    Habilita la API

Envía una carga de trabajo por lotes de Spark

Console

Ve a Dataproc Batch en Google Cloud Console. Haz clic en CREAR para abrir la página Crear lote.

Selecciona y completa los siguientes campos de la página para enviar una carga de trabajo por lotes de Spark que calcule el valor aproximado de pi:

  • Información por lotes
    • ID de lote: Especifica un ID para tu carga de trabajo por lotes. Este valor debe tener entre 4 y 63 caracteres en minúscula. Los caracteres válidos son /[a-z][0-9]-/.
    • Región: Selecciona la región en la que se ejecutará la carga de trabajo.
  • Contenedor
    • Tipo de lote: Spark
    • Clase principal:
      org.apache.spark.examples.SparkPi
    • Archivos jar:
      file:///usr/lib/spark/examples/jars/spark-examples.jar
    • Argumentos: 1,000
  • Configuración de ejecución: Puedes especificar una cuenta de servicio para usarla en la ejecución de tu carga de trabajo. Si no especificas una cuenta de servicio, la carga de trabajo se ejecutará en la cuenta de servicio predeterminada de Compute Engine.
  • Configuración de red La subred de VPC que ejecuta cargas de trabajo sin servidores de Spark debe cumplir con los requisitos que se mencionan en Configuración de red sin servidores de Dataproc para Spark. La lista de subredes muestra subredes de la red seleccionada que están habilitadas para el Acceso privado a Google.
  • Properties: Ingresa el valor de la clave (nombre de la propiedad) de cualquier propiedad de Spark compatible que desees que use la carga de trabajo por lotes de Spark. Nota: A diferencia de las propiedades del clúster de Dataproc en Compute Engine, las propiedades de las cargas de trabajo sin servidores de Dataproc para Spark no incluyen un prefijo "spark:"
  • Otras opciones

Haz clic en ENVIAR para ejecutar la carga de trabajo por lotes de Spark.

gcloud

Para enviar una carga de trabajo por lotes de Spark a fin de calcular el valor aproximado de pi, ejecuta el siguiente comando de gcloud CLI de gcloud gcloud dataproc de forma local en una ventana de la terminal o en Cloud Shell.

gcloud dataproc batches submit spark \
    --region=region \
    --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
    --class=org.apache.spark.examples.SparkPi \
    -- 1000

Notas:

  • Subred: La subred de VPC que ejecuta las cargas de trabajo sin servidores de Spark debe cumplir con los requisitos enumerados en Configuración de red sin servidores de Dataproc para Spark. Si la subred de red default de la región especificada en el comando gcloud dataproc batches submit no está habilitada para el Acceso privado a Google, debes realizar una de las siguientes acciones:
    1. Habilita la subred de red predeterminada para la región con acceso privado a Google.
    2. Usa la marca --subnet=[SUBNET_URI] en el comando para especificar una subred que tenga habilitado el Acceso privado a Google. Puedes ejecutar el comando gcloud compute networks describe [NETWORK_NAME] para enumerar los URI de las subredes en una red.
  • --jars: El archivo jar de ejemplo está preinstalado y el argumento de comando --1000 que se pasa a la carga de trabajo de SparkPi especifica 1,000 iteraciones de la lógica de estimación de pi (los argumentos de entrada de la carga de trabajo se incluyen después del "-- ").
  • --properties: Puedes agregar la marca --properties para ingresar las propiedades de Spark compatibles que deseas que use la carga de trabajo por lotes de Spark.
  • --deps-bucket: Puedes agregar esta marca para especificar un bucket de Cloud Storage en el que Dataproc Serverless para Spark suba las dependencias de cargas de trabajo. No es necesario el prefijo de URI gs:// del bucket. Solo puedes especificar la ruta de acceso o el nombre del bucket, por ejemplo, &nombredelbucket. Excepción: Si la carga de trabajo por lotes hace referencia a archivos en tu máquina local, la marca --deps-bucket es obligatoria; Dataproc sin servidores para Spark subirá los archivos locales a una carpeta /dependencies en el bucket antes de ejecutar la carga de trabajo por lotes.
  • --container-image: Puedes especificar una imagen de contenedor personalizado con el formato de nombre de imágenes de Docker: {hostname}/{project-id}/{image}:{tag}, por ejemplo, gcr.io/my-project-id/my-image:1.0.1. Debes alojar el contenedor personalizado en Container Registry.
  • Otras opciones:
    • Puedes agregar otras marcas de comando opcionales. Por ejemplo, el siguiente comando configura la carga de trabajo por lotes para usar una herramienta Hive Metastore externa que se administra con una configuración estándar de Spark:
      gcloud beta dataproc batches submit \
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
                 
      Consulta gcloud dataproc batches submit para conocer las marcas de comandos compatibles.
    • Usar un servidor de historial persistente
      1. Crear un servidor de historial persistente (PHS) en un clúster de Dataproc de un solo nodo. Nota: El bucket-name de Cloud Storage debe existir.
        gcloud dataproc clusters create PHS-cluster-name \
            --region=region \
            --single-node \
            --enable-component-gateway \
            --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
                     
      2. Envía una carga de trabajo por lotes y especifica el servidor de historial de ejecución en ejecución.
        gcloud dataproc batches submit spark \
            --region=region \
            --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
            --class=org.apache.spark.examples.SparkPi \
            --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name
            -- 1000
                      

LÍNEA DE CMD Y REST

En esta sección, se muestra cómo crear una carga de trabajo por lotes para calcular el valor aproximado de pi mediante la API de batches.create de Dataproc sin servidores para Spark.

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

  • project-id: Es el ID del proyecto de Google Cloud.
  • region: region
  • Notas:
    • Custom-container-image: Especifica la imagen de contenedor personalizada con el formato de nombre de la imagen de Docker: {hostname}/{project-id}/{image}:{tag}, por ejemplo, "gcr.io/my-project-id/my-image:1.0.1" Nota: Debes alojar el contenedor personalizado en Container Registry.
    • Subred: si la subred default de red del region especificado no está habilitada para el Acceso privado a Google, debes realizar una de las siguientes acciones:
      1. Habilita la subred de red predeterminada para la region del Acceso privado a Google.
      2. Usa el campo ExecutionConfig.subnetworkUri para especificar una subred que tenga habilitado el Acceso privado a Google. Puedes ejecutar el comando gcloud compute networks describe [NETWORK_NAME] para enumerar los URI de las subredes en una red.
    • sparkBatch.jarFileUris: El archivo jar de ejemplo está preinstalado en el entorno de ejecución de Spark. El valor sparkBatch.args se pasa a la carga de trabajo de SparkPi y especifica 1, 000 iteraciones de la lógica de estimación de pi.
    • Spark properties: Puedes usar el campo RuntimeConfig.properties para ingresar las propiedades de Spark compatibles que quieres que use la carga de trabajo por lotes de Spark.
    • Otras opciones:

    HTTP method and URL:

    POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches

    Cuerpo JSON de la solicitud:

    {
      "sparkBatch":{
        "args":[
          "1000"
        ],
        "jarFileUris":[
          "file:///usr/lib/spark/examples/jars/spark-examples.jar"
        ],
        "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:

    {
    "name":"projects/project-id/locations/region/batches/batch-id",
      "uuid":",uuid",
      "createTime":"2021-07-22T17:03:46.393957Z",
      "sparkBatch":{
        "mainClass":"org.apache.spark.examples.SparkPi",
        "args":[
          "1000"
        ],
        "jarFileUris":[
          "file:///usr/lib/spark/examples/jars/spark-examples.jar"
        ]
      },
      "runtimeInfo":{
        "outputUri":"gs://dataproc-.../driveroutput"
      },
      "state":"SUCCEEDED",
      "stateTime":"2021-07-22T17:06:30.301789Z",
      "creator":"account-email-address",
      "runtimeConfig":{
        "properties":{
          "spark:spark.executor.instances":"2",
          "spark:spark.driver.cores":"2",
          "spark:spark.executor.cores":"2",
          "spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id"
        }
      },
      "environmentConfig":{
        "peripheralsConfig":{
          "sparkHistoryServerConfig":{
          }
        }
      },
      "operation":"projects/project-id/regions/region/operation-id"
    }