Aprende a usar Dataproc Serverless para enviar una carga de trabajo por lotes en una infraestructura de procesamiento administrada con Dataproc que escala recursos según sea necesario.
Antes de comenzar
- 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.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita la API de Dataproc.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita la API de Dataproc.
Envía una carga de trabajo por lotes de Spark
Console
En la consola de Google Cloud, ve a Lotes de Dataproc. 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 del lote:
- 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 una región en la que se ejecutará tu carga de trabajo.
- 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
- Contenedor:
- Tipo de lote: Spark.
- Versión del entorno de ejecución: Se seleccionó la versión predeterminada del entorno de ejecución. De manera opcional, puedes especificar una versión del entorno de ejecución de Dataproc Serverless no predeterminada.
- Clase principal:
org.apache.spark.examples.SparkPi
- Archivos JAR (este archivo está preinstalado en el entorno de ejecución de Spark sin servidores de Dataproc.
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1,000.
- Configuración de la ejecución: Puedes especificar una cuenta de servicio para ejecutar tu carga de trabajo. Si no especificas una cuenta de servicio, la carga de trabajo se ejecuta bajo la cuenta de servicio predeterminada de Compute Engine.
- Configuración de red: La subred de VPC que ejecuta las cargas de trabajo de Dataproc Serverless para Spark debe estar habilitada para el Acceso privado a Google y cumplir los otros requisitos que se enumeran en Configuración de red de Dataproc Serverless para Spark. En la lista de subredes, se muestran las subredes de la red seleccionada que están habilitadas para el Acceso privado a Google.
- Propiedades: Ingresa el
Key
(nombre de propiedad) y elValue
de las propiedades de Spark admitidas para configurar tu carga de trabajo por lotes de Spark. Nota: A diferencia de las propiedades del clúster de Dataproc en Compute Engine, las propiedades de cargas de trabajo de Dataproc Serverless para Spark no incluyen un prefijospark:
. - Otras opciones:
- Puedes configurar la carga de trabajo por lotes para usar un Hive Metastore externo externo.
- Puedes usar un servidor de historial persistente (PHS). El PHS debe estar ubicado en la región en la que ejecutas las cargas de trabajo por lotes.
- Información del lote:
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 para calcular el valor aproximado
de pi
, ejecuta el siguiente comando de gcloud CLI
gcloud dataproc batches submit spark
de forma local en una ventana de 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:
- REGION: Especifica la región en la que se ejecutará tu carga de trabajo.
- Subred:
La subred de VPC que ejecuta las cargas de trabajo de Dataproc Serverless para Spark debe
estar habilitada para el Acceso privado a Google
y cumplir con los demás requisitos que se enumeran en
Configuración de red de Dataproc Serverless para Spark.
Si la subred de la red
default
correspondiente a la región especificada en el comandogcloud dataproc batches submit
no está habilitada para el Acceso privado a Google, debes realizar una de las siguientes acciones:- Habilita la subred de la red predeterminada para la región del Acceso privado a Google.
- Usa la marca
--subnet=[SUBNET_URI]
en el comando para especificar una subred que tenga habilitado el Acceso privado a Google. Puedes ejecutar el comandogcloud compute networks describe [NETWORK_NAME]
para enumerar los URI de las subredes en una red.
--jars
: El archivo JAR de ejemplo está preinstalado en el entorno de ejecución de Spark. El argumento del comando1000
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 de “--”).--properties
: Puedes agregar la marca--properties
para ingresar a las propiedades compatibles de Spark que deseas que use tu 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 subirá las dependencias de las cargas de trabajo. El prefijo de URIgs://
del bucket no es obligatorio. Puedes especificar la ruta de acceso del bucket o el nombre del bucket, por ejemplo, “mybucketname”. Dataproc Serverless para Spark sube los archivos locales a una carpeta/dependencies
en el bucket antes de ejecutar la carga de trabajo por lotes. Nota: Esta marca es obligatoria si la carga de trabajo por lotes hace referencia a los archivos de la máquina local.--ttl
: Puedes agregar la marca--ttl
para especificar la duración del ciclo de vida del lote. Cuando la carga de trabajo excede esta duración, se finaliza de manera incondicional sin esperar a que finalice el trabajo en curso. Especifica la duración con el sufijos
,m
,h
od
(segundos, minutos, horas o días). El valor mínimo es 10 minutos (10m
) y el valor máximo es 14 días (14d
).- Lotes en entorno de ejecución 1.1 o 2.0: Si no se especifica
--ttl
para una carga de trabajo por lotes del entorno de ejecución 1.1 o 2.0, la carga de trabajo puede ejecutarse hasta que salga de forma natural (o para siempre si no sale). - 2.1 o más lotes del entorno de ejecución: Si no se especifica
--ttl
para una carga de trabajo por lotes del entorno de ejecución 2.1 o posterior, el valor predeterminado es4h
.
- Lotes en entorno de ejecución 1.1 o 2.0: Si no se especifica
- Otras opciones: Puedes agregar marcas de comando
gcloud dataproc batches submit
para especificar otras opciones de carga de trabajo y propiedades de Spark.- Hive Metastore: Con el siguiente comando, se configura una carga de trabajo por lotes para usar un Metastore de Hive autoadministrado externo con una configuración de Spark estándar.
gcloud dataproc batches submit \ --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \ other args ...
- Servidor de historial persistente:
- El siguiente comando crea un PHS en un clúster de Dataproc de un solo nodo. El PHS debe estar ubicado en la región en la que ejecutas las cargas de trabajo por lotes,
y 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
- Envía una carga de trabajo por lotes en la que se especifique el servidor de historial persistente 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
- El siguiente comando crea un PHS en un clúster de Dataproc de un solo nodo. El PHS debe estar ubicado en la región en la que ejecutas las cargas de trabajo por lotes,
y el bucket-name de Cloud Storage debe
existir.
- Versión del entorno de ejecución:
Usa la marca
--version
para especificar la versión del entorno de ejecución de Dataproc Serverless de la carga de trabajo.gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --version=VERSION -- 1000
- Hive Metastore: Con el siguiente comando, se configura una carga de trabajo por lotes para usar un Metastore de Hive autoadministrado externo con una configuración de Spark estándar.
API
En esta sección, se muestra cómo crear una carga de trabajo por lotes a fin de calcular el valor aproximado de pi
con Dataproc Serverless for Spark batches.create
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: Es un ID del proyecto de Google Cloud.
- region: Es una región de Compute Engine en la que Dataproc Serverless ejecutará la carga de trabajo. Notas:
- Custom-container-image::Especifica la imagen de contenedor personalizada con el
formato de nombre de imagen de Docker:
{hostname}/{project-id}/{image}:{tag}
, por ejemplo, “gcr.io/my-project-id/my-image:1.0.1”. Nota: Debes alojar tu contenedor personalizado en Container Registry. - Subred:
La subred de VPC que ejecuta las cargas de trabajo de Dataproc Serverless para Spark debe
estar habilitada para el Acceso privado a Google
y cumplir con los demás requisitos que se enumeran en
la configuración de red de Dataproc sin servidores para Spark.
Si la subred de la red
default
para la región especificada no está habilitada para el Acceso privado a Google, debes realizar una de las siguientes acciones:- Habilita la subred de la red predeterminada para la región del Acceso privado a Google.
- Usa el campo
ExecutionConfig.subnetworkUri
para especificar una subred que tenga habilitado el Acceso privado a Google. Puedes ejecutar el comandogcloud 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. ElsparkBatch.args
"1000" 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 compatibles de Spark que quieres que use la carga de trabajo por lotes de Spark.--ttl
: Puedes usar el campoEnvironmentConfig.ttl
para especificar la duración del ciclo de vida del lote. Cuando la carga de trabajo excede esta duración, se finaliza de manera incondicional sin esperar a que finalice el trabajo en curso. Especifica la duración como la representación JSON de la Duración. El valor mínimo es 10 minutos y el valor máximo es 14 días.- Lotes en entorno de ejecución 1.1 o 2.0: Si no se especifica
--ttl
para una carga de trabajo por lotes del entorno de ejecución 1.1 o 2.0, la carga de trabajo puede ejecutarse hasta que salga de forma natural (o para siempre si no sale). - 2.1 o más lotes del entorno de ejecución: Si no se especifica
--ttl
para una carga de trabajo por lotes del entorno de ejecución 2.1 o posterior, el valor predeterminado es de 4 horas.
- Lotes en entorno de ejecución 1.1 o 2.0: Si no se especifica
- Otras opciones:
- Configura la carga de trabajo por lotes para usar un Hive Metastore externo administrado.
- Usa un servidor de historial persistente (PHS). El PHS debe estar ubicado en la región en la que ejecutas las cargas de trabajo por lotes.
- Usa el campo
RuntimeConfig.version
como parte de la solicitudbatches.create
para especificar una versión no predeterminada del entorno de ejecución de Dataproc Serverless
Método HTTP y 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" }
Estima los costos de las cargas de trabajo
Las cargas de trabajo sin servidores de Dataproc para Spark consumen unidades de procesamiento de datos (DCU) y recursos de almacenamiento aleatorio. Para ver un ejemplo en el que se da como resultado UsageMetrics de Dataproc para estimar el consumo y los costos de los recursos de las cargas de trabajo, consulta Precios de Dataproc Serverless .
¿Qué sigue?
Obtén más información acerca de los siguientes temas: