En este documento se explica cómo crear y ejecutar un trabajo por lotes que use uno o varios volúmenes de almacenamiento externo. Entre las opciones de almacenamiento externo se incluyen discos persistentes nuevos o ya creados, SSDs locales nuevos, segmentos de Cloud Storage ya creados y un sistema de archivos de red (NFS) ya creado, como un recurso compartido de archivos de Filestore.
Independientemente de si añades volúmenes de almacenamiento externo, cada VM de Compute Engine de un trabajo tiene un disco de arranque, que proporciona almacenamiento para la imagen y las instrucciones del sistema operativo del trabajo. Para obtener información sobre cómo configurar el disco de arranque de un trabajo, consulta la descripción general del entorno del SO de la VM.
Antes de empezar
- Si no has usado Batch antes, consulta el artículo Empezar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine -
Crea un trabajo que use un segmento de Cloud Storage:
Visor de objetos de Storage (
roles/storage.objectViewer
) en el segmento
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Editor de trabajos por lotes (
Crear un trabajo que use volúmenes de almacenamiento
De forma opcional, un trabajo puede usar uno o varios volúmenes de almacenamiento externo de cada uno de los siguientes tipos. Para obtener más información sobre todos los tipos de volúmenes de almacenamiento, así como las diferencias y restricciones de cada uno, consulta la documentación sobre las opciones de almacenamiento de las VMs de Compute Engine.
- Disco persistente: almacenamiento en bloques persistente de zona o regional
- SSD local: almacenamiento en bloques transitorio de alto rendimiento
- Segmento de Cloud Storage: almacenamiento de objetos asequible
- Sistema de archivos de red (NFS): sistema de archivos distribuido que sigue el protocolo del sistema de archivos de red. Por ejemplo, un recurso compartido de archivos de Filestore, que es un NFS de alto rendimiento alojado en Google Cloud
Para permitir que un trabajo use cada volumen de almacenamiento, inclúyelo en la definición del trabajo y especifica su ruta de montaje (mountPath
) en los elementos ejecutables. Para saber cómo crear un trabajo que use volúmenes de almacenamiento, consulta una o varias de las siguientes secciones:
- Usar un disco persistente
- Usar un SSD local
- Usar un segmento de Cloud Storage
- Usar un sistema de archivos de red
Usar un disco persistente
Un trabajo que usa discos persistentes tiene las siguientes restricciones:
Todos los discos persistentes: consulte las restricciones de todos los discos persistentes.
Discos persistentes nuevos o ya creados: cada disco persistente de una tarea puede ser nuevo (definido y creado con la tarea) o ya creado (en tu proyecto y especificado en la tarea). Para usar un disco persistente, debe formatearse y montarse en las VMs del trabajo, que deben estar en la misma ubicación que el disco persistente. Batch monta los discos persistentes que incluyas en una tarea y formatea los discos persistentes nuevos, pero debes formatear y desmontar los discos persistentes que quieras que use una tarea.
Las opciones de ubicación, opciones de formato y opciones de montaje varían entre los discos persistentes nuevos y los que ya existen, tal como se describe en la siguiente tabla:
Nuevos discos persistentes Discos persistentes disponibles Opciones de formato El disco persistente se formatea automáticamente con un
ext4
sistema de archivos.Debes formatear el disco persistente para usar un sistema de archivos
ext4
antes de usarlo en un trabajo.Opciones de montaje Se admiten todas las opciones.
Se admiten todas las opciones excepto la escritura. Esto se debe a las restricciones del modo de varios escritores.
Debes desasociar el disco persistente de las VMs a las que esté asociado antes de usarlo en una tarea.
Opciones de ubicación Solo puedes crear discos persistentes zonales.
Puedes seleccionar cualquier ubicación para tu trabajo. Los discos persistentes se crean en la zona en la que se ejecuta tu proyecto.
Puedes seleccionar discos persistentes regionales y de zona.
Debes definir la ubicación de la tarea (o, si se especifica, solo las ubicaciones permitidas de la tarea) en solo las ubicaciones que contengan todos los discos persistentes de la tarea. Por ejemplo, en el caso de un disco persistente zonal, la ubicación de la tarea debe ser la zona del disco. En el caso de un disco persistente regional, la ubicación de la tarea debe ser la región del disco o, si se especifican zonas, una o ambas zonas específicas en las que se encuentre el disco persistente regional.Plantillas de instancia: si quieres usar una plantilla de instancia de VM al crear este trabajo, debes adjuntar los discos persistentes de este trabajo a la plantilla de instancia. De lo contrario, si no quieres usar una plantilla de instancia, debes adjuntar los discos persistentes directamente en la definición del trabajo.
Puedes crear un trabajo que use un disco persistente mediante laGoogle Cloud consola, la CLI de gcloud, la API de Batch, C++, Go, Java, Node.js o Python.
Consola
En el siguiente ejemplo se usa la Google Cloud consola para crear un trabajo que ejecuta una secuencia de comandos para leer un archivo de un disco persistente zonal que se encuentra en la zona us-central1-a
. La secuencia de comandos de ejemplo da por hecho que el trabajo tiene un disco persistente zonal que contiene un archivo de texto llamado example.txt
en el directorio raíz.
Opcional: Crea un disco persistente de zona de ejemplo
Si quieres crear un disco persistente zonal que puedas usar para ejecutar el script de ejemplo, haz lo siguiente antes de crear el trabajo:
Adjunta un disco persistente nuevo y vacío llamado
example-disk
a una VM de Linux en la zonaus-central1-a
y, a continuación, ejecuta comandos en la VM para formatear y montar el disco. Para obtener instrucciones, consulta Añadir un disco persistente a tu máquina virtual.No te desconectes de la VM todavía.
Para crear
example.txt
en el disco persistente, ejecuta los siguientes comandos en la VM:Para cambiar el directorio de trabajo actual al directorio raíz del disco persistente, escribe el siguiente comando:
cd VM_MOUNT_PATH
Sustituye VM_MOUNT_PATH por la ruta del directorio en el que se ha montado el disco persistente en esta VM en el paso anterior (por ejemplo,
/mnt/disks/example-disk
).Pulsa
Enter
.Para crear y definir un archivo llamado
example.txt
, escribe el siguiente comando:cat > example.txt
Pulsa
Enter
.Escribe el contenido del archivo. Por ejemplo, escribe
Hello world!
.Para guardar el archivo, pulsa
Ctrl+D
(oCommand+D
en macOS).
Cuando hayas terminado, puedes desconectarte de la VM.
Desvincula el disco persistente de la VM.
Si ya no necesitas la VM, puedes eliminarla, lo que desconectará automáticamente el disco persistente.
De lo contrario, desvincula el disco persistente. Para obtener instrucciones, consulta Desvincular y volver a vincular discos de arranque y desvincula el disco persistente
example-disk
en lugar del disco de arranque de la VM.
Crea un trabajo que use el disco persistente zonal
Para crear un trabajo que use discos persistentes zonales con laGoogle Cloud consola, sigue estos pasos:
En la Google Cloud consola, ve a la página Lista de tareas.
Haz clic en
Crear. Se abrirá la página Crear tarea por lotes. En el panel de la izquierda, se selecciona la página Detalles de la tarea.Configura la página Detalles del empleo:
Opcional: En el campo Nombre del trabajo, personaliza el nombre del trabajo.
Por ejemplo, escribe
example-disk-job
.Configura la sección Detalles de la tarea:
En la ventana Nuevo ejecutable, añade al menos una secuencia de comandos o un contenedor para que se ejecute este trabajo.
Por ejemplo, para ejecutar una secuencia de comandos que imprima el contenido de un archivo llamado
example.txt
que se encuentre en el directorio raíz del disco persistente que usa este trabajo, haz lo siguiente:Seleccione la casilla Secuencia de comandos. Aparecerá un cuadro de texto.
En el cuadro de texto, introduce la siguiente secuencia de comandos:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txt
Sustituye MOUNT_PATH por la ruta a la que quieras montar el disco persistente en las VMs de este trabajo (por ejemplo,
/mnt/disks/example-disk
).Haz clic en Listo.
En el campo Número de tareas, introduce el número de tareas de este trabajo.
Por ejemplo, introduce
1
(valor predeterminado).En el campo Paralelismo, introduce el número de tareas que se van a ejecutar simultáneamente.
Por ejemplo, introduce
1
(valor predeterminado).
Configura la página Especificaciones de recursos:
En el panel de la izquierda, haga clic en Especificaciones de recursos. Se abrirá la página Especificaciones de los recursos.
Selecciona la ubicación de este trabajo. Para usar un disco persistente zonal, las VMs de un trabajo deben estar en la misma zona.
En el campo Región, selecciona una región.
Por ejemplo, para usar el disco persistente zonal de ejemplo, selecciona
us-central1 (Iowa)
(opción predeterminada).En el campo Zona, selecciona una zona.
Por ejemplo, selecciona
us-central1-a (Iowa)
.
Configura la página Configuraciones adicionales:
En el panel de la izquierda, haz clic en Configuraciones adicionales. Se abrirá la página Configuraciones adicionales.
Para cada disco persistente zonal que quieras montar en esta tarea, haz lo siguiente:
En la sección Volumen de almacenamiento, haz clic en Añadir nuevo volumen. Aparecerá la ventana Nuevo volumen.
En la ventana Nuevo volumen, haz lo siguiente:
En la sección Tipo de volumen, selecciona Disco persistente (opción predeterminada).
En la lista Disco, selecciona un disco persistente zonal que quieras montar en este trabajo. El disco debe estar en la misma zona que este trabajo.
Por ejemplo, selecciona el disco persistente zonal que has preparado, que se encuentra en la zona
us-central1-a
y contiene el archivoexample.txt
.Opcional: Si quieres cambiar el nombre de este disco persistente de zona, haz lo siguiente:
Selecciona Personalizar el nombre del dispositivo.
En el campo Nombre del dispositivo, introduce el nuevo nombre del disco.
En el campo Ruta de montaje, introduce la ruta de montaje (MOUNT_PATH) de este disco persistente:
Por ejemplo, introduce lo siguiente:
/mnt/disks/EXISTING_PERSISTENT_DISK_NAME
Sustituye EXISTING_PERSISTENT_DISK_NAME por el nombre del disco. Si has cambiado el nombre del disco persistente zonal, usa el nuevo nombre.
Por ejemplo, sustituya EXISTING_PERSISTENT_DISK_NAME por
example-disk
.Haz clic en Listo.
Opcional: Configura los otros campos de este trabajo.
Opcional: Para revisar la configuración del trabajo, en el panel de la izquierda, haz clic en Vista previa.
Haz clic en Crear.
En la página Detalles de la tarea se muestra la tarea que has creado.
gcloud
Con la CLI de gcloud, en el siguiente ejemplo se crea un trabajo que adjunta y monta un disco persistente y un disco persistente nuevos.
El trabajo tiene 3 tareas que ejecutan una secuencia de comandos para crear un archivo en el nuevo disco persistente llamado output_task_TASK_INDEX.txt
donde TASK_INDEX es el índice de cada tarea: 0, 1 y 2.
Para crear un trabajo que use discos persistentes con la CLI de gcloud, usa el comando gcloud batch jobs submit
.
En el archivo de configuración JSON del trabajo, especifica los discos persistentes en el campo instances
y monta el disco persistente en el campo volumes
.
Crea un archivo JSON.
Si no usas una plantilla de instancia para este trabajo, crea un archivo JSON con el siguiente contenido:
{ "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.EXISTING_PERSISTENT_DISK_NAME
: el nombre de un disco persistente.EXISTING_PERSISTENT_DISK_LOCATION
: la ubicación de un disco persistente. En el caso de los discos persistentes zonales, la ubicación de la tarea debe ser la zona del disco. En el caso de los discos persistentes regionales, la ubicación de la tarea debe ser la región del disco o, si se especifican zonas, una o ambas zonas concretas en las que se encuentre el disco persistente regional. Si no especificas ningún disco persistente, puedes seleccionar cualquier ubicación. Más información sobre el campoallowedLocations
NEW_PERSISTENT_DISK_SIZE
: tamaño del nuevo disco persistente en GB. Los tamaños permitidos dependen del tipo de disco persistente, pero el mínimo suele ser de 10 GB (10
) y el máximo, de 64 TB (64000
).NEW_PERSISTENT_DISK_TYPE
: el tipo de disco del nuevo disco persistente, que puede serpd-standard
,pd-balanced
,pd-ssd
opd-extreme
. El tipo de disco predeterminado para los discos persistentes que no son de arranque espd-standard
.NEW_PERSISTENT_DISK_NAME
: el nombre del nuevo disco persistente.
Si utilizas una plantilla de instancia de VM para este trabajo, crea un archivo JSON como se ha indicado anteriormente, pero sustituye el campo
instances
por lo siguiente:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
donde
INSTANCE_TEMPLATE_NAME
es el nombre de la plantilla de instancia de este trabajo. En el caso de las tareas que usan discos persistentes, esta plantilla de instancia debe definir y adjuntar los discos persistentes que quieras que use la tarea. En este ejemplo, la plantilla debe definir y adjuntar un nuevo disco persistente llamadoNEW_PERSISTENT_DISK_NAME
y adjuntar un disco persistente llamadoEXISTING_PERSISTENT_DISK_NAME
.
Ejecuta el siguiente comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Haz los cambios siguientes:
JOB_NAME
: el nombre del puesto.LOCATION
: la ubicación del puesto.JSON_CONFIGURATION_FILE
: la ruta de un archivo JSON con los detalles de configuración del trabajo.
API
En el siguiente ejemplo se usa la API por lotes para crear un trabajo que adjunta y monta un disco persistente y un disco persistente nuevo. El trabajo tiene 3 tareas que ejecutan una secuencia de comandos para crear un archivo en el nuevo disco persistente llamado output_task_TASK_INDEX.txt
, donde TASK_INDEX es el índice de cada tarea: 0, 1 y 2.
Para crear un trabajo que use discos persistentes con la API Batch, usa el método jobs.create
.
En la solicitud, especifica los discos persistentes en el campo instances
y monta el disco persistente en el campo volumes
.
Si no utilizas una plantilla de instancia para este trabajo, haz la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.LOCATION
: la ubicación del puesto.JOB_NAME
: el nombre del puesto.EXISTING_PERSISTENT_DISK_NAME
: el nombre de un disco persistente.EXISTING_PERSISTENT_DISK_LOCATION
: la ubicación de un disco persistente. En el caso de los discos persistentes zonales, la ubicación de la tarea debe ser la zona del disco. En el caso de los discos persistentes regionales, la ubicación de la tarea debe ser la región del disco o, si se especifican zonas, una o ambas zonas concretas en las que se encuentre el disco persistente regional. Si no especificas ningún disco persistente, puedes seleccionar cualquier ubicación. Más información sobre el campoallowedLocations
NEW_PERSISTENT_DISK_SIZE
: tamaño del nuevo disco persistente en GB. Los tamaños permitidos dependen del tipo de disco persistente, pero el mínimo suele ser de 10 GB (10
) y el máximo, de 64 TB (64000
).NEW_PERSISTENT_DISK_TYPE
: el tipo de disco del nuevo disco persistente, que puede serpd-standard
,pd-balanced
,pd-ssd
opd-extreme
. El tipo de disco predeterminado para los discos persistentes que no son de arranque espd-standard
.NEW_PERSISTENT_DISK_NAME
: el nombre del nuevo disco persistente.
Si utilizas una plantilla de instancia de VM para este trabajo, crea un archivo JSON como se ha indicado anteriormente, pero sustituye el campo
instances
por lo siguiente:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
Donde
INSTANCE_TEMPLATE_NAME
es el nombre de la plantilla de instancia de este trabajo. En el caso de las tareas que usan discos persistentes, esta plantilla de instancia debe definir y adjuntar los discos persistentes que quieras que use la tarea. En este ejemplo, la plantilla debe definir y adjuntar un nuevo disco persistente llamadoNEW_PERSISTENT_DISK_NAME
y adjuntar un disco persistente llamadoEXISTING_PERSISTENT_DISK_NAME
.
C++
Para crear un trabajo por lotes que use discos persistentes nuevos o ya creados con las bibliotecas de cliente de Cloud para C++, usa la función CreateJob
e incluye lo siguiente:
- Para asociar discos persistentes a las VMs de un trabajo, incluye una de las siguientes opciones:
- Si no usas una plantilla de instancia de VM para este trabajo, usa el método
set_remote_path
. - Si usas una plantilla de instancia de VM para esta tarea, utiliza el método
set_instance_template
.
- Si no usas una plantilla de instancia de VM para este trabajo, usa el método
- Para montar los discos persistentes en el trabajo, usa el campo
volumes
con los camposdeviceName
ymountPath
. En el caso de los discos persistentes nuevos, también debes usar el campomountOptions
para habilitar la escritura.
Para ver un ejemplo de código de un caso de uso similar, consulta Usar un segmento de Cloud Storage.
Go
Para crear un trabajo por lotes que use discos persistentes nuevos o actuales con las bibliotecas de cliente de Cloud para Go, usa la función CreateJob
e incluye lo siguiente:
- Para asociar discos persistentes a las VMs de un trabajo, incluye una de las siguientes opciones:
- Si no utiliza una plantilla de instancia de VM para este trabajo, incluya el tipo
AllocationPolicy_AttachedDisk
. - Si vas a usar una plantilla de instancia de VM para este trabajo, incluye el tipo
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate
.
- Si no utiliza una plantilla de instancia de VM para este trabajo, incluya el tipo
- Para montar los discos persistentes en el trabajo, usa el tipo
Volume
con el tipoVolume_DeviceName
y el campoMountPath
. En el caso de los discos persistentes nuevos, también debes usar el campoMountOptions
para habilitar la escritura.
Java
Para crear un trabajo de Batch que use discos persistentes nuevos o ya creados con las bibliotecas de cliente de Cloud para Java, usa la clase CreateJobRequest
e incluye lo siguiente:
- Para asociar discos persistentes a las VMs de un trabajo, incluye una de las siguientes opciones:
- Si no usas una plantilla de instancia de VM para este trabajo, incluye el método
setDisks
. - Si vas a usar una plantilla de instancia de VM para este trabajo, incluye el método
setInstanceTemplate
.
- Si no usas una plantilla de instancia de VM para este trabajo, incluye el método
- Para montar los discos persistentes en el trabajo, usa la clase
Volume
con los métodossetDeviceName
ysetMountPath
. En el caso de los discos persistentes nuevos, también debes usar el métodosetMountOptions
para habilitar la escritura.
Por ejemplo, usa el siguiente código de muestra:
Node.js
Para crear un trabajo por lotes que use discos persistentes nuevos o ya creados con las bibliotecas de cliente de Cloud para Node.js, usa el método createJob
e incluye lo siguiente:
- Para asociar discos persistentes a las VMs de un trabajo, incluye una de las siguientes opciones:
- Si no usas una plantilla de instancia de VM para este trabajo, incluye la clase
AllocationPolicy.AttachedDisk
. - Si utilizas una plantilla de instancia de VM para este trabajo, incluye la propiedad
instanceTemplate
.
- Si no usas una plantilla de instancia de VM para este trabajo, incluye la clase
- Para montar los discos persistentes en la tarea, usa la clase
Volume
con las propiedadesdeviceName
ymountPath
. En el caso de los discos persistentes nuevos, también debes usar la propiedadmountOptions
para habilitar la escritura.
Python
Para crear un trabajo por lotes que use discos persistentes nuevos o ya creados con las bibliotecas de cliente de Cloud para Python, usa la función CreateJob
e incluye lo siguiente:
- Para asociar discos persistentes a las VMs de un trabajo, incluye una de las siguientes opciones:
- Si no usas una plantilla de instancia de VM para este trabajo, incluye la clase
AttachedDisk
. - Si vas a usar una plantilla de instancia de VM para este trabajo, incluye el atributo
instance_template
.
- Si no usas una plantilla de instancia de VM para este trabajo, incluye la clase
- Para montar los discos persistentes en el trabajo, usa la clase
Volume
con los atributosdevice_name
ymount_path
. En el caso de los discos persistentes nuevos, también debes usar el atributomount_options
para habilitar la escritura.
Por ejemplo, usa el siguiente código de muestra:
Usar un SSD local
Un trabajo que usa SSDs locales tiene las siguientes restricciones:
- Todas las unidades SSD locales: consulta las restricciones de todas las unidades SSD locales.
- Plantillas de instancia: si quieres especificar una plantilla de instancia de VM al crear este trabajo, debes adjuntar los discos persistentes de este trabajo en la plantilla de instancia. De lo contrario, si no quieres usar una plantilla de instancia, debes adjuntar los discos persistentes directamente en la definición de la tarea.
Puedes crear un trabajo que use un SSD local con la CLI de gcloud, la API Batch, Java o Python.
En el siguiente ejemplo se describe cómo crear un trabajo que cree, adjunte y monte un SSD local. El trabajo también tiene 3 tareas que ejecutan una secuencia de comandos para crear un archivo en el SSD local llamado output_task_TASK_INDEX.txt
, donde TASK_INDEX
es el índice de cada tarea: 0
, 1
y 2
.
gcloud
Para crear un trabajo que use SSDs locales con la CLI de gcloud, usa el comando gcloud batch jobs submit
.
En el archivo de configuración JSON del trabajo, crea y adjunta los SSDs locales en el campo instances
y monta los SSDs locales en el campo volumes
.
Crea un archivo JSON.
Si no usas una plantilla de instancia para este trabajo, crea un archivo JSON con el siguiente contenido:
{ "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Haz los cambios siguientes:
MACHINE_TYPE
: el tipo de máquina, que puede ser predefinido o personalizado, de las VMs del trabajo. El número permitido de SSDs locales depende del tipo de máquina de las VMs de tu trabajo.LOCAL_SSD_NAME
: nombre de una SSD local creada para este trabajo.LOCAL_SSD_SIZE
: tamaño de todos los SSD locales en GB. Cada SSD local tiene 375 GB, por lo que este valor debe ser un múltiplo de375
GB. Por ejemplo, si tienes 2 SSD locales, asigna el valor750
GB.
Si utilizas una plantilla de instancia de VM para este trabajo, crea un archivo JSON como se ha indicado anteriormente, pero sustituye el campo
instances
por lo siguiente:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
donde
INSTANCE_TEMPLATE_NAME
es el nombre de la plantilla de instancia de este trabajo. En el caso de los trabajos que usan SSDs locales, esta plantilla de instancia debe definir y adjuntar los SSDs locales que quieras que use el trabajo. En este ejemplo, la plantilla debe definir y adjuntar un SSD local llamadoLOCAL_SSD_NAME
.
Ejecuta el siguiente comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Haz los cambios siguientes:
JOB_NAME
: el nombre del puesto.LOCATION
: la ubicación del puesto.JSON_CONFIGURATION_FILE
: la ruta de un archivo JSON con los detalles de configuración del trabajo.
API
Para crear un trabajo que use SSDs locales con la API Batch, usa el método jobs.create
.
En la solicitud, crea y adjunta los SSD locales en el campo instances
y monta los SSD locales en el campo volumes
.
Si no utilizas una plantilla de instancia para este trabajo, haz la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.LOCATION
: la ubicación del puesto.JOB_NAME
: el nombre del puesto.MACHINE_TYPE
: el tipo de máquina, que puede ser predefinido o personalizado, de las VMs del trabajo. El número permitido de SSDs locales depende del tipo de máquina de las VMs de tu trabajo.LOCAL_SSD_NAME
: nombre de una SSD local creada para este trabajo.LOCAL_SSD_SIZE
: tamaño de todos los SSD locales en GB. Cada SSD local tiene 375 GB, por lo que este valor debe ser un múltiplo de375
GB. Por ejemplo, si tienes 2 SSD locales, asigna el valor750
GB.
Si utilizas una plantilla de instancia de VM para este trabajo, crea un archivo JSON como se ha indicado anteriormente, pero sustituye el campo
instances
por lo siguiente:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
Donde
INSTANCE_TEMPLATE_NAME
es el nombre de la plantilla de instancia de este trabajo. En el caso de los trabajos que usan SSDs locales, esta plantilla de instancia debe definir y adjuntar los SSDs locales que quieras que use el trabajo. En este ejemplo, la plantilla debe definir y adjuntar un SSD local llamadoLOCAL_SSD_NAME
.
Go
Java
Node.js
Python
Usar un segmento de Cloud Storage
Para crear un trabajo que use un segmento de Cloud Storage, selecciona uno de los siguientes métodos:
- Recomendación: monta un contenedor directamente en las VMs de tu trabajo especificando el contenedor en la definición del trabajo, tal como se muestra en esta sección. Cuando se ejecuta el trabajo, el segmento se monta automáticamente en las VMs del trabajo mediante Cloud Storage FUSE.
- Crea un trabajo con tareas que accedan directamente a un segmento de Cloud Storage mediante la CLI de gcloud o las bibliotecas de cliente de la API de Cloud Storage. Para saber cómo acceder a un segmento de Cloud Storage directamente desde una VM, consulta la documentación de Compute Engine sobre cómo escribir y leer datos de segmentos de Cloud Storage.
Antes de crear un trabajo que use un contenedor, crea uno o identifica uno que ya tengas. Para obtener más información, consulta los artículos Crear segmentos y Listar segmentos.
Puedes crear un trabajo que use un segmento de Cloud Storage con laGoogle Cloud consola, la CLI de gcloud, la API Batch, C++, Go, Java, Node.js o Python.
En el siguiente ejemplo se describe cómo crear un trabajo que monte un segmento de Cloud Storage. El trabajo también tiene 3 tareas que ejecutan una secuencia de comandos para crear un archivo en el contenedor llamado
output_task_TASK_INDEX.txt
donde TASK_INDEX
es el índice de cada tarea:
0
, 1
y 2
.
Consola
Para crear un trabajo que use un segmento de Cloud Storage con laGoogle Cloud consola, sigue estos pasos:
En la Google Cloud consola, ve a la página Lista de tareas.
Haz clic en
Crear. Se abrirá la página Crear tarea por lotes. En el panel de la izquierda, se selecciona la página Detalles de la tarea.Configura la página Detalles del empleo:
Opcional: En el campo Nombre del trabajo, personaliza el nombre del trabajo.
Por ejemplo, escribe
example-bucket-job
.Configura la sección Detalles de la tarea:
En la ventana Nuevo ejecutable, añade al menos una secuencia de comandos o un contenedor para que se ejecute este trabajo.
Por ejemplo, haz lo siguiente:
Seleccione la casilla Secuencia de comandos. Aparecerá un cuadro de texto.
En el cuadro de texto, introduce la siguiente secuencia de comandos:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Sustituye MOUNT_PATH por la ruta de montaje que usan los elementos ejecutables de este trabajo para acceder a un segmento de Cloud Storage. La ruta debe empezar por
/mnt/disks/
seguido del directorio o la ruta que elija. Por ejemplo, si quieres representar este contenedor con un directorio llamadomy-bucket
, define la ruta de montaje como/mnt/disks/my-bucket
.Haz clic en Listo.
En el campo Número de tareas, introduce el número de tareas de este trabajo.
Por ejemplo, escribe
3
.En el campo Paralelismo, introduce el número de tareas que se van a ejecutar simultáneamente.
Por ejemplo, introduce
1
(valor predeterminado).
Configura la página Configuraciones adicionales:
En el panel de la izquierda, haz clic en Configuraciones adicionales. Se abrirá la página Configuraciones adicionales.
Para cada segmento de Cloud Storage que quieras montar en este trabajo, haz lo siguiente:
En la sección Volumen de almacenamiento, haz clic en Añadir nuevo volumen. Aparecerá la ventana Nuevo volumen.
En la ventana Nuevo volumen, haz lo siguiente:
En la sección Tipo de volumen, selecciona Segmento de Cloud Storage.
En el campo Storage Bucket name (Nombre del segmento de almacenamiento), introduce el nombre de un segmento.
Por ejemplo, introduzca el segmento que haya especificado en el elemento ejecutable de este trabajo.
En el campo Ruta de montaje, introduce la ruta de montaje del contenedor (MOUNT_PATH), que has especificado en el archivo ejecutable.
Haz clic en Listo.
Opcional: Configura los otros campos de este trabajo.
Opcional: Para revisar la configuración del trabajo, en el panel de la izquierda, haz clic en Vista previa.
Haz clic en Crear.
En la página Detalles de la tarea se muestra la tarea que has creado.
gcloud
Para crear un trabajo que use un segmento de Cloud Storage con la CLI de gcloud, usa el comando gcloud batch jobs submit
.
En el archivo de configuración JSON del trabajo, monta el segmento en el campo volumes
.
Por ejemplo, para crear una tarea que genere archivos en Cloud Storage, haz lo siguiente:
Crea un archivo JSON con el siguiente contenido:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "gcs": { "remotePath": "BUCKET_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Haz los cambios siguientes:
BUCKET_PATH
: la ruta del directorio del segmento al que quieres que acceda este trabajo, que debe empezar por el nombre del segmento. Por ejemplo, en el caso de un segmento llamadoBUCKET_NAME
, la rutaBUCKET_NAME
representa el directorio raíz del segmento y la rutaBUCKET_NAME/subdirectory
representa el subdirectoriosubdirectory
.MOUNT_PATH
: la ruta de montaje que usan los elementos ejecutables del trabajo para acceder a este contenedor. La ruta debe empezar por/mnt/disks/
seguido del directorio o la ruta que elija. Por ejemplo, si quieres representar este segmento con un directorio llamadomy-bucket
, define la ruta de montaje como/mnt/disks/my-bucket
.
Ejecuta el siguiente comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Haz los cambios siguientes:
JOB_NAME
: el nombre del puesto.LOCATION
: la ubicación del puesto.JSON_CONFIGURATION_FILE
: la ruta de un archivo JSON con los detalles de configuración del trabajo.
API
Para crear un trabajo que utilice un segmento de Cloud Storage con la API Batch, usa el método jobs.create
y monta el segmento en el campo volumes
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"gcs": {
"remotePath": "BUCKET_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.LOCATION
: la ubicación del puesto.JOB_NAME
: el nombre del puesto.BUCKET_PATH
: la ruta del directorio del contenedor al que quieres que acceda este trabajo, que debe empezar por el nombre del contenedor. Por ejemplo, en el caso de un segmento llamadoBUCKET_NAME
, la rutaBUCKET_NAME
representa el directorio raíz del segmento y la rutaBUCKET_NAME/subdirectory
representa el subdirectoriosubdirectory
.MOUNT_PATH
: la ruta de montaje que usan los elementos ejecutables del trabajo para acceder a este contenedor. La ruta debe empezar por/mnt/disks/
seguido del directorio o la ruta que elija. Por ejemplo, si quieres representar este contenedor con un directorio llamadomy-bucket
, define la ruta de montaje como/mnt/disks/my-bucket
.
C++
C++
Para obtener más información, consulta la documentación de referencia de la API Batch C++.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Go
Para obtener más información, consulta la documentación de referencia de la API Batch Go.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Java
Para obtener más información, consulta la documentación de referencia de la API Batch Java.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Node.js
Para obtener más información, consulta la documentación de referencia de la API Batch Node.js.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Python
Para obtener más información, consulta la documentación de referencia de la API Batch Python.
Para autenticarte en Batch, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Usar un sistema de archivos de red
Puedes crear un trabajo que utilice un sistema de archivos de red (NFS) ya creado, como un recurso compartido de archivos de Filestore, mediante la consola de Google Cloud , la CLI de gcloud o la API Batch.
Antes de crear un trabajo que utilice un NFS, asegúrese de que el cortafuegos de su red esté configurado correctamente para permitir el tráfico entre las VMs de su trabajo y el NFS. Para obtener más información, consulta Configurar reglas de cortafuegos para Filestore.
En el siguiente ejemplo se describe cómo crear un trabajo que especifique y monte un NFS. El trabajo también tiene 3 tareas que ejecutan una secuencia de comandos para crear un archivo en el NFS llamado output_task_TASK_INDEX.txt
, donde TASK_INDEX
es el índice de cada tarea: 0
, 1
y 2
.
Consola
Para crear un trabajo que use un NFS con la Google Cloud consola, haz lo siguiente:
En la Google Cloud consola, ve a la página Lista de tareas.
Haz clic en
Crear. Se abrirá la página Crear tarea por lotes. En el panel de la izquierda, se selecciona la página Detalles de la tarea.Configura la página Detalles del empleo:
Opcional: En el campo Nombre del trabajo, personaliza el nombre del trabajo.
Por ejemplo, escribe
example-nfs-job
.Configura la sección Detalles de la tarea:
En la ventana Nuevo ejecutable, añade al menos una secuencia de comandos o un contenedor para que se ejecute este trabajo.
Por ejemplo, haz lo siguiente:
Seleccione la casilla Secuencia de comandos. Aparecerá un cuadro de texto.
En el cuadro de texto, introduce la siguiente secuencia de comandos:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Sustituye MOUNT_PATH por la ruta de montaje que usa el ejecutable del trabajo para acceder a este NFS. La ruta debe empezar por
/mnt/disks/
seguido del directorio o la ruta que elija. Por ejemplo, si quieres representar este NFS con un directorio llamadomy-nfs
, define la ruta de montaje como/mnt/disks/my-nfs
.Haz clic en Listo.
En el campo Número de tareas, introduce el número de tareas de este trabajo.
Por ejemplo, escribe
3
.En el campo Paralelismo, introduce el número de tareas que se van a ejecutar simultáneamente.
Por ejemplo, introduce
1
(valor predeterminado).
Configura la página Configuraciones adicionales:
En el panel de la izquierda, haz clic en Configuraciones adicionales. Se abrirá la página Configuraciones adicionales.
Para cada segmento de Cloud Storage que quieras montar en este trabajo, haz lo siguiente:
En la sección Volumen de almacenamiento, haz clic en Añadir nuevo volumen. Aparecerá la ventana Nuevo volumen.
En la ventana Nuevo volumen, haz lo siguiente:
En la sección Tipo de volumen, selecciona Sistema de archivos de red.
En el campo Servidor de archivos, introduzca la dirección IP del servidor en el que se encuentra el NFS que ha especificado en el elemento ejecutable de este trabajo.
Por ejemplo, si tu NFS es un sistema de archivos compartido de Filestore, especifica la dirección IP de la instancia de Filestore, que puedes obtener describiendo la instancia de Filestore.
En el campo Ruta remota, introduzca una ruta que pueda acceder al NFS que ha especificado en el paso anterior.
La ruta del directorio NFS debe empezar por
/
seguido del directorio raíz de NFS.En el campo Ruta de montaje, introduce la ruta de montaje de NFS (MOUNT_PATH), que especificaste en el paso anterior.
Haz clic en Listo.
Opcional: Configura los otros campos de este trabajo.
Opcional: Para revisar la configuración del trabajo, en el panel de la izquierda, haz clic en Vista previa.
Haz clic en Crear.
En la página Detalles de la tarea se muestra la tarea que has creado.
gcloud
Para crear un trabajo que use un NFS con la CLI de gcloud, usa el comando gcloud batch jobs submit
.
En el archivo de configuración JSON del trabajo, monta el NFS en el campo volumes
.
Crea un archivo JSON con el siguiente contenido:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "nfs": { "server": "NFS_IP_ADDRESS", "remotePath": "NFS_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Haz los cambios siguientes:
NFS_IP_ADDRESS
: la dirección IP de NFS. Por ejemplo, si tu NFS es un sistema de archivos compartido de Filestore, especifica la dirección IP de la instancia de Filestore, que puedes obtener describiendo la instancia de Filestore.NFS_PATH
: la ruta del directorio NFS al que quieres que acceda este trabajo, que debe empezar por/
seguido del directorio raíz de NFS. Por ejemplo, en el caso de un recurso compartido de archivos de Filestore llamadoFILE_SHARE_NAME
, la ruta/FILE_SHARE_NAME
representa el directorio raíz del recurso compartido de archivos y la ruta/FILE_SHARE_NAME/subdirectory
representa el subdirectoriosubdirectory
.MOUNT_PATH
: la ruta de montaje que usan los elementos ejecutables del trabajo para acceder a este NFS. La ruta debe empezar por/mnt/disks/
seguido del directorio o la ruta que elija. Por ejemplo, si quieres representar este NFS con un directorio llamadomy-nfs
, define la ruta de montaje como/mnt/disks/my-nfs
.
Ejecuta el siguiente comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Haz los cambios siguientes:
JOB_NAME
: el nombre del puesto.LOCATION
: la ubicación del puesto.JSON_CONFIGURATION_FILE
: la ruta de un archivo JSON con los detalles de configuración del trabajo.
API
Para crear un trabajo que use un NFS mediante la API Batch, usa el método jobs.create
y monta el NFS en el campo volumes
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"nfs": {
"server": "NFS_IP_ADDRESS",
"remotePath": "NFS_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.LOCATION
: la ubicación del puesto.JOB_NAME
: el nombre del puesto.NFS_IP_ADDRESS
: la dirección IP del sistema de archivos de red. Por ejemplo, si tu NFS es un sistema de archivos compartido de Filestore, especifica la dirección IP de la instancia de Filestore, que puedes obtener describiendo la instancia de Filestore.NFS_PATH
: la ruta del directorio NFS al que quieres que acceda este trabajo, que debe empezar por/
seguido del directorio raíz de NFS. Por ejemplo, en el caso de un recurso compartido de archivos de Filestore llamadoFILE_SHARE_NAME
, la ruta/FILE_SHARE_NAME
representa el directorio raíz del recurso compartido de archivos y la ruta/FILE_SHARE_NAME/subdirectory
representa un subdirectorio.MOUNT_PATH
: la ruta de montaje que usan los elementos ejecutables del trabajo para acceder a este NFS. La ruta debe empezar por/mnt/disks/
seguido del directorio o la ruta que elija. Por ejemplo, si quieres representar este NFS con un directorio llamadomy-nfs
, define la ruta de montaje como/mnt/disks/my-nfs
.
Java
Node.js
Python
Siguientes pasos
- Si tienes problemas para crear o ejecutar un trabajo, consulta la sección Solución de problemas.
- Ver trabajos y tareas.
- Consulta más información sobre las opciones de creación de trabajos.