Aprende a enviar una carga de trabajo por lotes en la infraestructura de procesamiento administrada por Google Cloud Serverless for Apache Spark, que ajusta la escala de los recursos según sea necesario.
Antes de comenzar
Configura tu proyecto y, si es necesario, otorga roles de Identity and Access Management.
Configura tu proyecto
Realiza uno o más de los siguientes pasos según sea necesario:
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Editor de Dataproc (
roles/dataproc.editor) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser) en la cuenta de servicio predeterminada de Compute Engine En la consola de Google Cloud , ve a Dataproc Batches.
Haz clic en Crear.
Envía una carga de trabajo por lotes de Spark que calcule el valor aproximado de pi. Para ello, 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ú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 del 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: Confirma o selecciona la versión del entorno de ejecución
2.3. - Clase principal:
org.apache.spark.examples.SparkPi
- Archivos JAR (este archivo está preinstalado en el entorno de ejecución de Spark de Serverless for Apache Spark).
file:///usr/lib/spark/examples/jars/spark-examples.jar
- Argumentos: 1000.
- Configuración de ejecución: Selecciona Cuenta de servicio. De forma predeterminada, el lote se ejecutará con la cuenta de servicio predeterminada de Compute Engine. Puedes especificar una cuenta de servicio personalizada. La cuenta de servicio predeterminada o personalizada debe tener el rol de trabajador de Dataproc.
- Configuración de red: Selecciona una subred en la región de la sesión. Serverless for Apache Spark habilita el Acceso privado a Google (PGA) en la subred especificada. Para conocer los requisitos de conectividad de red, consulta Google Cloud Configuración de red de Serverless for Apache Spark.
- Propiedades: Ingresa el
Key(nombre de la propiedad) y elValuede las propiedades de Spark admitidas para establecer 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 la carga de trabajo de Serverless for Apache Spark no incluyen un prefijospark:. - Otras opciones:
- Puedes configurar la carga de trabajo por lotes para que use un Hive Metastore 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.
- REGION: Especifica la región en la que se ejecutará tu carga de trabajo.
- Otras opciones: Puedes agregar marcas
gcloud dataproc batches submit sparkpara especificar otras opciones de carga de trabajo y propiedades de Spark.--jars: El archivo JAR de ejemplo está preinstalado en el entorno de ejecución de Spark. El argumento de comando1000que 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 "-- ").--subnet: Puedes agregar esta marca para especificar el nombre de una subred en la región de la sesión. Si no especificas una subred, Serverless for Apache Spark selecciona la subreddefaulten la región de la sesión. Serverless para Apache Spark habilita el Acceso privado a Google (PGA) en la subred. Para conocer los requisitos de conectividad de red, consulta Google Cloud Configuración de red de Serverless for Apache Spark.--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 Serverless for Apache Spark 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. Serverless for Apache Spark sube los archivos locales a una carpeta/dependenciesen 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--ttlpara 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 sufijo des,m,hod(segundos, minutos, horas o días). El valor mínimo es de 10 minutos (10m) y el máximo, de 14 días (14d).- Lotes de tiempo de ejecución 1.1 o 2.0: Si no se especifica
--ttlpara una carga de trabajo por lotes de tiempo de ejecución 1.1 o 2.0, se permite que la carga de trabajo se ejecute hasta que salga de forma natural (o que se ejecute para siempre si no sale). - Lotes de entorno de ejecución 2.1 y versiones posteriores: Si no se especifica
--ttlpara una carga de trabajo por lotes del entorno de ejecución 2.1 o posterior, se establece de forma predeterminada en4h.
- Lotes de tiempo 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.- Hive Metastore: 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 ... - Persistent History Server:
- 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 cargas de trabajo por lotes, y el bucket de Cloud Storage bucket-name 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 y especifica 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 Dataproc de un solo nodo. El PHS debe estar ubicado en la región en la que ejecutas cargas de trabajo por lotes, y el bucket de Cloud Storage bucket-name debe existir.
- Versión del entorno de ejecución:
Usa la marca
--versionpara especificar la versión del entorno de ejecución de Serverless for Apache Spark 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
- project-id: Es el ID de un proyecto Google Cloud .
- region: Es una región de Compute Engine en la que Google Cloud Serverless for Apache Spark ejecutará la carga de trabajo.
- PROJECT_ID: Es el ID del proyecto de Google Cloud . Los IDs de los proyectos se enumeran en la sección Información del proyecto del panel de la consola de Google Cloud .
- REGION: Es la región de la sesión.
Otorga roles de IAM si es necesario
Se requieren ciertos roles de IAM para ejecutar los ejemplos de esta página. Según las políticas de la organización, es posible que estos roles ya se hayan otorgado. Para verificar las asignaciones de roles, consulta ¿Necesitas otorgar roles?.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Funciones de usuario
Para obtener los permisos que necesitas para enviar una carga de trabajo por lotes sin servidores, pídele a tu administrador que te otorgue los siguientes roles de IAM:
Función de cuenta de servicio
Para asegurarte de que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios para enviar una carga de trabajo por lotes sin servidores, pídele a tu administrador que otorgue a la cuenta de servicio predeterminada de Compute Engine el rol de IAM de trabajador de Dataproc (roles/dataproc.worker) en el proyecto.
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 para crear y enviar una carga de trabajo por lotes de Serverless for Apache Spark.
Console
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 \ --version=2.3 \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
Reemplaza lo siguiente:
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 Serverless for Apache Spark.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Notas:
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"
],
"runtimeConfig": {
"version": "2.3",
},
"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":{
"version":"2.3",
"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 Serverless for Apache Spark consumen recursos de unidades de procesamiento de datos (DCU) y de almacenamiento de Shuffle. Para ver un ejemplo que genera UsageMetrics de Dataproc para estimar el consumo de recursos y los costos de la carga de trabajo, consulta Precios de Serverless for Apache Spark.
¿Qué sigue?
Obtén más información acerca de los siguientes temas: