Aprende a usar Dataproc sin servidores para enviar una carga de trabajo por lotes en una infraestructura de procesamiento administrada por Dataproc que escale los recursos según sea necesario.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
- Asegúrate de que la subred de VPC regional en la que ejecutarás tu carga de trabajo tenga habilitado el Acceso privado a Google. Para obtener más información, consulta Cómo enviar una carga de trabajo por lotes de Spark.
Envía una carga de trabajo por lotes de Spark
Puedes usar la consola de Google Cloud, Google Cloud CLI o la API de Dataproc sin servidores para crear y enviar una carga de trabajo por lotes de Dataproc sin servidores para Spark.
Console
En la consola de Google Cloud, ve a Dataproc Batches.
Haz clic en Crear.
Para enviar una carga de trabajo por lotes de Spark que calcule el valor aproximado de pi, selecciona y completa los siguientes campos:
- Información del lote:
- ID del lote: Especifica un ID para tu carga de trabajo por lotes. Este valor debe tener entre 4 y 63 caracteres en minúsculas. 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 del lote: Especifica un ID para tu carga de trabajo por lotes. Este valor debe tener entre 4 y 63 caracteres en minúsculas. Los caracteres válidos son
- Contenedor:
- Tipo de lote: Spark
- Versión del entorno de ejecución: Se selecciona 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 de Dataproc Serverless).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1000.
- Configuración de ejecución: Puedes especificar una cuenta de servicio para usarla y ejecutar tu carga de trabajo. Si no especificas una cuenta de servicio, la carga de trabajo se ejecuta con la cuenta de servicio predeterminada de Compute Engine. Tu cuenta de servicio debe tener el rol de trabajador de Dataproc.
Configuración de la red: La subred de VPC que ejecuta cargas de trabajo de Dataproc Serverless para Spark debe estar habilitada para PGA de acceso privado de Google y cumplir con los otros requisitos que se indican en Configuración de la red de Dataproc Serverless para Spark.
Los selectores Red principal y subred muestran las redes con subredes en la región de carga de trabajo seleccionada que tienen habilitado el Acceso privado a Google. Selecciona una red y una subred de la lista. Si no se muestran redes ni subredes, puedes habilitar el Acceso privado a Google en una subred de VPC en la región de la carga de trabajo seleccionada actualmente o cambiar la región de la carga de trabajo a una región con una subred habilitada para el PGA y, luego, seleccionar esa red y subred.
Propiedades: Ingresa
Key
(nombre de la propiedad) yValue
de las propiedades de Spark compatibles para configurar en 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 carga de trabajo de Dataproc sin servidores para Spark no incluyen un prefijospark:
.Otras opciones:
- Puedes configurar la carga de trabajo por lotes para que use un almacén de metadatos de Hive autoadministrado externo.
- Puedes usar un servidor de historial persistente (PHS). El PHS debe estar ubicado en la región en la que ejecutas 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 manera 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:
- REGION: Especifica la región en la que se ejecutará tu carga de trabajo.
- Subred: La subred de VPC que ejecuta cargas de trabajo de Dataproc Serverless para Spark debe estar habilitada para el Acceso privado a Google y cumplir con los otros requisitos que se indican en Configuración de la red de Dataproc Serverless para Spark.
Si la subred de la red
default
para la región especificada en el comandogcloud dataproc batches submit
no está habilitada para el Acceso privado a Google, debes hacer 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
para especificar una subred que tenga habilitado el Acceso privado a Google. Puedes ejecutar el comandogcloud compute networks describe <var>NETWORK_NAME</var>
para enumerar los URIs de las subredes de 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 esta marca para ingresar propiedades de Spark compatibles para que las 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 la carga de trabajo. No se requiere el prefijo de URIgs://
del bucket. Puedes especificar la ruta de acceso 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 tu carga de trabajo por lotes hace referencia a archivos en tu 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 supera esta duración, se finaliza de forma incondicional sin esperar a que finalice el trabajo en curso. Especifica la duración con un sufijos
,m
,h
od
(segundos, minutos, horas o días). El valor mínimo es de 10 minutos (10m
) y el máximo es de 14 días (14d
).- Ejecuciones por lotes del 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 se cierre de forma natural (o ejecutarse para siempre si no se cierra). - Ejecuciones por lotes del entorno de ejecución 2.1 y versiones posteriores: Si no se especifica
--ttl
para una carga de trabajo por lotes del entorno de ejecución 2.1 o versiones posteriores, se establece de forma predeterminada en4h
.
- Ejecuciones por lotes del entorno de ejecución 1.1 o 2.0: Si no se especifica
--service-account
: 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 con la cuenta de servicio predeterminada de Compute Engine. Tu cuenta de servicio debe tener el rol de trabajador de Dataproc.- Otras opciones: Puedes agregar marcas
gcloud dataproc batches submit spark
para especificar otras opciones de carga de trabajo y propiedades de Spark.- Almacén de metadatos de Hive: El siguiente comando configura una carga de trabajo por lotes para usar un almacén de metadatos de Hive autoadministrado externo con una configuración estándar de Spark.
gcloud dataproc batches submit spark\ --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 un solo nodo de Dataproc. El PHS debe estar ubicado en la región donde ejecutas 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 especifiques tu 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 un solo nodo de Dataproc. El PHS debe estar ubicado en la región donde ejecutas 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 para 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
- Almacén de metadatos de Hive: El siguiente comando configura una carga de trabajo por lotes para usar un almacén de metadatos de Hive autoadministrado externo con una configuración estándar de Spark.
API
En esta sección, se muestra cómo crear una carga de trabajo por lotes para calcular el valor aproximado de pi
con batches.create
` de Dataproc Serverless para Spark.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: 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:
RuntimeConfig.containerImage
: Puedes especificar una imagen de contenedor personalizada con el formato de nombres de imágenes 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.ExecutionConfig.subnetworkUri
: La subred de VPC que ejecuta cargas de trabajo de Dataproc sin servidores para Spark debe estar habilitada para el Acceso privado a Google y cumplir con los otros requisitos que se indican en Configuración de red de Dataproc sin servidores para Spark. Si la subred de la reddefault
para la región especificada no está habilitada para el Acceso privado a Google, debes hacer 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 URIs de las subredes de una red.
sparkBatch.jarFileUris
: El archivo jar de ejemplo está preinstalado en el entorno de ejecución de Spark. El valor “1000” desparkBatch.args
se pasa a la carga de trabajo de SparkPi y especifica 1, 000 iteraciones de la lógica de estimación de pi.RuntimeConfig.properties
: Puedes usar este campo para ingresar propiedades de Spark compatibles para que las use tu carga de trabajo por lotes de Spark.ExecutionConfig.serviceAccount
: 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 con la cuenta de servicio predeterminada de Compute Engine. Tu cuenta de servicio debe tener el rol de trabajador de Dataproc.EnvironmentConfig.ttl
: Puedes usar este campo para especificar la duración del ciclo de vida del lote. Cuando la carga de trabajo supera esta duración, se finaliza de forma incondicional sin esperar a que finalice el trabajo en curso. Especifica la duración como la representación JSON de Duración. El valor mínimo es de 10 minutos y el máximo es de 14 días.- Ejecuciones por lotes del 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 se cierre de forma natural (o ejecutarse para siempre si no se cierra). - Trabajos por lotes del entorno de ejecución 2.1 y versiones posteriores: Si no se especifica
--ttl
para una carga de trabajo por lotes del entorno de ejecución 2.1 o versiones posteriores, el valor predeterminado es de 4 horas.
- Ejecuciones por lotes del 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 almacén de metadatos de Hive autoadministrado externo.
- Usa un servidor de historial persistente (PHS). El PHS debe estar ubicado en la región en la que ejecutas cargas de trabajo por lotes.
- Usa el campo
RuntimeConfig.version
como parte de la solicitudbatches.create
para especificar una versión del entorno de ejecución de Dataproc Serverless no predeterminada. .
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 la carga de trabajo
Las cargas de trabajo de Dataproc sin servidores para Spark consumen unidades de procesamiento de datos (DCU) y recursos de almacenamiento de shuffle. Para ver un ejemplo que genera UsageMetrics de Dataproc para estimar el consumo y los costos de recursos de la carga de trabajo, consulta Precios de Dataproc sin servidores.
¿Qué sigue?
Obtén más información acerca de los siguientes temas: