Este documento explica como criar e executar uma tarefa em lote que usa um ou mais volumes de armazenamento externos. As opções de armazenamento externo incluem um disco persistente novo ou existente, SSDs locais novos, contentores do Cloud Storage existentes e um sistema de ficheiros de rede (NFS) existente, como uma partilha de ficheiros do Filestore.
Independentemente de adicionar volumes de armazenamento externo, cada VM do Compute Engine para uma tarefa tem um disco de arranque, que fornece armazenamento para a imagem e as instruções do sistema operativo (SO) da tarefa. Para obter informações sobre a configuração do disco de arranque para uma tarefa, consulte o artigo Vista geral do ambiente do SO da VM.
Antes de começar
- Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
-
Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa, que, por predefinição, é a conta de serviço predefinida do Compute Engine -
Crie uma tarefa que use um contentor do Cloud Storage:
Visualizador de objetos de armazenamento (
roles/storage.objectViewer
) no contentor
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Editor de tarefas em lote (
Crie uma tarefa que use volumes de armazenamento
Opcionalmente, uma tarefa pode usar um ou mais de cada um dos seguintes tipos de volumes de armazenamento externo. Para mais informações acerca de todos os tipos de volumes de armazenamento e das diferenças e restrições de cada um, consulte a documentação sobre as opções de armazenamento de VMs do Compute Engine.
- disco persistente: armazenamento de blocos persistente zonal ou regional
- SSD local: armazenamento em bloco transitório de elevado desempenho
- Contentor do Cloud Storage: armazenamento de objetos acessível
- Sistema de arquivos de rede (NFS): sistema de arquivos distribuído que segue o protocolo do sistema de arquivos de rede. Por exemplo, uma partilha de ficheiros do Filestore>, que é um NFS de alto desempenho alojado no Google Cloud
Pode permitir que uma tarefa use cada volume de armazenamento, incluindo-o na definição da tarefa e especificando o respetivo caminho de montagem (mountPath
) nos ficheiros executáveis. Para saber como criar uma tarefa que use volumes de armazenamento, consulte
uma ou mais das seguintes secções:
- Use um disco persistente
- Use um SSD local
- Use um contentor do Cloud Storage
- Use um sistema de ficheiros de rede
Use um disco persistente
Uma tarefa que usa discos persistentes tem as seguintes restrições:
Todos os discos persistentes: reveja as restrições para todos os discos persistentes.
Discos persistentes novos versus existentes: cada disco persistente num trabalho pode ser novo (definido e criado com o trabalho) ou existente (já criado no seu projeto e especificado no trabalho). Para usar um disco persistente, tem de ser formatado e montado nas VMs do trabalho, que têm de estar na mesma localização que o disco persistente. O Batch monta todos os discos persistentes que incluir num trabalho e formata todos os novos discos persistentes, mas tem de formatar e desmontar todos os discos persistentes existentes que quer que um trabalho use.
As opções de localização, opções de formato> e opções de montagem suportadas variam entre discos persistentes novos e existentes, conforme descrito na seguinte tabela:
Novos discos persistentes Discos persistentes existentes Opções de formato O disco persistente é formatado automaticamente com um
ext4
sistema de ficheiros.Tem de formatar o disco persistente para usar um
ext4
sistema de ficheiros antes de o usar para uma tarefa.Opções de montagem Todas as opções são suportadas.
Todas as opções, exceto a escrita, são suportadas. Isto deve-se a restrições do modo de vários autores.
Tem de desassociar o disco persistente de todas as VMs às quais está associado antes de o usar para uma tarefa.
Opções de localização Só pode criar discos persistentes zonais.
Pode selecionar qualquer localização para o seu trabalho. Os discos persistentes são criados na zona em que o seu projeto é executado.
Pode selecionar discos persistentes zonais e regionais.
Tem de definir a localização da tarefa (ou, se especificado, apenas as localizações permitidas) para apenas localizações que contenham todos os discos persistentes da tarefa. Por exemplo, para um disco persistente zonal, a localização da tarefa tem de ser a zona do disco; para um disco persistente regional, a localização da tarefa tem de ser a região do disco ou, se especificar zonas, uma ou ambas as zonas específicas onde o disco persistente regional está localizado.Modelos de instâncias: se quiser usar um modelo de instância de VM ao criar esta tarefa, tem de anexar todos os discos persistentes para esta tarefa no modelo de instância. Caso contrário, se não quiser usar um modelo de instância, tem de anexar todos os discos persistentes diretamente na definição da tarefa.
Pode criar uma tarefa que use um disco persistente através da Google Cloud consola, da CLI gcloud, da API Batch, C++, Go, Java, Node.js ou Python.
Consola
Usando a Google Cloud consola, o exemplo seguinte cria uma tarefa que
executa um script para ler um ficheiro de um disco persistente zonal existente que está
localizado na zona us-central1-a
. O script de exemplo pressupõe que a tarefa tem um disco persistente zonal existente que contém um ficheiro de texto denominado example.txt
no diretório raiz.
Opcional: crie um disco persistente zonal de exemplo
Se quiser criar um disco persistente zonal que possa usar para executar o script de exemplo, faça o seguinte antes de criar a tarefa:
Anexe um novo disco persistente vazio denominado
example-disk
a uma VM do Linux na zonaus-central1-a
e, em seguida, execute comandos na VM para formatar e montar o disco. Para ver instruções, consulte o artigo Adicione um disco persistente à sua VM.Não se desligue ainda da VM.
Para criar
example.txt
no disco persistente, execute os seguintes comandos na VM:Para alterar o diretório de trabalho atual para o diretório raiz do disco persistente, escreva o seguinte comando:
cd VM_MOUNT_PATH
Substitua VM_MOUNT_PATH pelo caminho para o diretório onde o disco persistente foi montado nesta VM no passo anterior, por exemplo,
/mnt/disks/example-disk
.Prima
Enter
.Para criar e definir um ficheiro denominado
example.txt
, escreva o seguinte comando:cat > example.txt
Prima
Enter
.Escreva o conteúdo do ficheiro. Por exemplo, escreva
Hello world!
.Para guardar o ficheiro, prima
Ctrl+D
(ouCommand+D
no macOS).
Quando terminar, pode desligar-se da VM.
Desassocie o disco persistente da VM.
Se já não precisar da VM, pode eliminá-la, o que desanexa automaticamente o disco persistente.
Caso contrário, desassocie o disco persistente. Para ver instruções, consulte o artigo Desassociar e voltar a associar discos de arranque e desassocie o disco persistente
example-disk
em vez do disco de arranque da VM.
Crie uma tarefa que use o disco persistente zonal existente
Para criar uma tarefa que use discos persistentes zonais existentes através da consolaGoogle Cloud , faça o seguinte:
Na Google Cloud consola, aceda à página Lista de tarefas.
Clique em
Criar. É apresentada a página Criar tarefa em lote. No painel do lado esquerdo, a página Detalhes da tarefa está selecionada.Configure a página Detalhes da tarefa:
Opcional: no campo Nome da tarefa, personalize o nome da tarefa.
Por exemplo, introduza
example-disk-job
.Configure a secção Detalhes da tarefa:
Na janela Novo executável, adicione, pelo menos, um script ou um contentor para que esta tarefa seja executada.
Por exemplo, para executar um script que imprime o conteúdo de um ficheiro denominado
example.txt
e localizado no diretório de raiz do disco persistente que esta tarefa usa, faça o seguinte:Selecione a caixa de verificação Script. É apresentada uma caixa de texto.
Na caixa de texto, introduza o seguinte script:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txt
Substitua MOUNT_PATH pelo caminho para onde planeia montar o disco persistente nas VMs para esta tarefa, por exemplo,
/mnt/disks/example-disk
.Clique em Concluído.
No campo Número de tarefas, introduza o número de tarefas para este trabalho.
Por exemplo, introduza
1
(predefinição).No campo Paralelismo, introduza o número de tarefas a executar em simultâneo.
Por exemplo, introduza
1
(predefinição).
Configure a página Especificações de recursos:
No painel esquerdo, clique em Especificações de recursos. É apresentada a página Especificações dos recursos.
Selecione a localização para este trabalho. Para usar um disco persistente zonal existente, as VMs de uma tarefa têm de estar localizadas na mesma zona.
No campo Região, selecione uma região.
Por exemplo, para usar o disco persistente zonal de exemplo, selecione
us-central1 (Iowa)
(predefinição).No campo Zona, selecione uma zona.
Por exemplo, selecione
us-central1-a (Iowa)
.
Configure a página Configurações adicionais:
No painel esquerdo, clique em Configurações adicionais. É apresentada a página Configurações adicionais.
Para cada disco persistente zonal existente que quer montar nesta tarefa, faça o seguinte:
Na secção Volume de armazenamento, clique em Adicionar novo volume. É apresentada a janela Novo volume.
Na janela Novo volume, faça o seguinte:
Na secção Tipo de volume, selecione Disco persistente (predefinição).
Na lista Disco, selecione um disco persistente zonal existente que quer montar neste trabalho. O disco tem de estar localizado na mesma zona que esta tarefa.
Por exemplo, selecione o disco persistente zonal existente que preparou, que se encontra na zona
us-central1-a
e contém o ficheiroexample.txt
.Opcional: se quiser mudar o nome deste disco persistente zonal, faça o seguinte:
Selecione Personalizar o nome do dispositivo.
No campo Nome do dispositivo, introduza o novo nome do disco.
No campo Caminho de montagem, introduza o caminho de montagem (MOUNT_PATH) para este Persistent Disk:
Por exemplo, introduza o seguinte:
/mnt/disks/EXISTING_PERSISTENT_DISK_NAME
Substitua EXISTING_PERSISTENT_DISK_NAME pelo nome do disco. Se mudou o nome do disco persistente zonal, use o novo nome.
Por exemplo, substitua EXISTING_PERSISTENT_DISK_NAME por
example-disk
.Clique em Concluído.
Opcional: configure os outros campos desta tarefa.
Opcional: para rever a configuração da tarefa, no painel esquerdo, clique em Pré-visualizar.
Clique em Criar.
A página Detalhes do trabalho apresenta o trabalho que criou.
gcloud
Usando a CLI gcloud, o exemplo seguinte cria uma tarefa que anexa e monta um disco persistente existente e um novo disco persistente.
A tarefa tem 3 tarefas que executam um script para criar um ficheiro no novo disco persistente denominado output_task_TASK_INDEX.txt
, onde TASK_INDEX é o índice de cada tarefa: 0, 1 e 2.
Para criar uma tarefa que use discos persistentes através da CLI gcloud, use o comando gcloud batch jobs submit
.
No ficheiro de configuração JSON da tarefa, especifique os discos persistentes no campo instances
e monte o disco persistente no campo volumes
.
Crie um ficheiro JSON.
Se não estiver a usar um modelo de instância para esta tarefa, crie um ficheiro JSON com o seguinte conteúdo:
{ "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" } }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.EXISTING_PERSISTENT_DISK_NAME
: o nome de um disco persistente existente.EXISTING_PERSISTENT_DISK_LOCATION
: a localização de um disco persistente existente. Para cada disco persistente zonal existente, a localização da tarefa tem de ser a zona do disco; para cada disco persistente regional existente, a localização da tarefa tem de ser a região do disco ou, se especificar zonas, uma ou ambas as zonas específicas onde o disco persistente regional está localizado. Se não estiver a especificar discos persistentes existentes, pode selecionar qualquer localização. Saiba mais acerca do campoallowedLocations
.NEW_PERSISTENT_DISK_SIZE
: o tamanho do novo disco persistente em GB. Os tamanhos permitidos dependem do tipo de disco persistente, mas o mínimo é frequentemente 10 GB (10
) e o máximo é frequentemente 64 TB (64000
).NEW_PERSISTENT_DISK_TYPE
: o tipo de disco do novo disco persistente,pd-standard
,pd-balanced
,pd-ssd
oupd-extreme
. O tipo de disco predefinido para discos persistentes não de arranque épd-standard
.NEW_PERSISTENT_DISK_NAME
: o nome do novo disco persistente.
Se estiver a usar um modelo de instância de VM para esta tarefa, crie um ficheiro JSON, conforme mostrado anteriormente, exceto que deve substituir o
instances
campo pelo seguinte:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
onde
INSTANCE_TEMPLATE_NAME
é o nome do modelo de instância para esta tarefa. Para uma tarefa que usa discos persistentes, este modelo de instância tem de definir e anexar os discos persistentes que quer que a tarefa use. Para este exemplo, o modelo tem de definir e anexar um novo disco persistente denominadoNEW_PERSISTENT_DISK_NAME
e anexar um disco persistente existente denominadoEXISTING_PERSISTENT_DISK_NAME
.
Execute o seguinte comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua o seguinte:
JOB_NAME
: o nome da tarefa.LOCATION
: a localização do trabalho.JSON_CONFIGURATION_FILE
: o caminho para um ficheiro JSON com os detalhes de configuração da tarefa.
API
Usando a API Batch, o exemplo seguinte cria uma tarefa
que anexa e monta um disco persistente existente e um novo disco
persistente. A tarefa tem 3 tarefas que executam um script para criar um ficheiro no novo disco persistente denominado output_task_TASK_INDEX.txt
, onde TASK_INDEX é o índice de cada tarefa: 0, 1 e 2.
Para criar uma tarefa que use discos persistentes com a API Batch, use o método jobs.create
.
No pedido, especifique os discos persistentes no campo
instances
e monte o disco persistente no campo volumes
.
Se não estiver a usar um modelo de instância para esta tarefa, faça o seguinte pedido:
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" } }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.LOCATION
: a localização do trabalho.JOB_NAME
: o nome da tarefa.EXISTING_PERSISTENT_DISK_NAME
: o nome de um disco persistente existente.EXISTING_PERSISTENT_DISK_LOCATION
: a localização de um disco persistente existente. Para cada disco persistente zonal existente, a localização da tarefa tem de ser a zona do disco. Para cada disco persistente regional existente, a localização da tarefa tem de ser a região do disco ou, se especificar zonas, uma ou ambas as zonas específicas onde o disco persistente regional está localizado. Se não estiver a especificar discos persistentes existentes, pode selecionar qualquer localização. Saiba mais acerca do campoallowedLocations
.NEW_PERSISTENT_DISK_SIZE
: o tamanho do novo disco persistente em GB. Os tamanhos permitidos dependem do tipo de disco persistente, mas o mínimo é frequentemente 10 GB (10
) e o máximo é frequentemente 64 TB (64000
).NEW_PERSISTENT_DISK_TYPE
: o tipo de disco do novo disco persistente,pd-standard
,pd-balanced
,pd-ssd
oupd-extreme
. O tipo de disco predefinido para discos persistentes não de arranque épd-standard
.NEW_PERSISTENT_DISK_NAME
: o nome do novo disco persistente.
Se estiver a usar um modelo de instância de VM para esta tarefa, crie um ficheiro JSON, conforme mostrado anteriormente, exceto que deve substituir o
instances
campo pelo seguinte:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
Onde
INSTANCE_TEMPLATE_NAME
é o nome do modelo de instância para esta tarefa. Para uma tarefa que usa discos persistentes, este modelo de instância tem de definir e anexar os discos persistentes que quer que a tarefa use. Para este exemplo, o modelo tem de definir e anexar um novo disco persistente denominadoNEW_PERSISTENT_DISK_NAME
e anexar um disco persistente existente denominadoEXISTING_PERSISTENT_DISK_NAME
.
C++
Para criar uma tarefa em lote que use discos persistentes novos ou existentes com as bibliotecas de cliente do Google Cloud para C++, use a função CreateJob
e inclua o seguinte:
- Para anexar discos persistentes às VMs de uma tarefa,
inclua um dos seguintes:
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
use o método
set_remote_path
. - Se estiver a usar um modelo de instância de VM para esta tarefa, use o método
set_instance_template
.
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
use o método
- Para montar os discos persistentes na tarefa, use o campo
volumes
com os camposdeviceName
emountPath
. Para novos discos persistentes, também pode usar o campomountOptions
para ativar a escrita.
Para ver um exemplo de código de um exemplo de utilização semelhante, consulte o artigo Use um contentor do Cloud Storage.
Ir
Para criar uma tarefa em lote que use discos persistentes novos ou existentes através das bibliotecas de cliente do Google Cloud para Go, use a função CreateJob
e inclua o seguinte:
- Para anexar discos persistentes às VMs de uma tarefa,
inclua um dos seguintes:
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua o tipo
AllocationPolicy_AttachedDisk
. - Se estiver a usar um modelo de instância de VM para esta tarefa,
inclua o tipo
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate
.
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua o tipo
- Para montar os discos persistentes na tarefa, use o tipo
Volume
com o tipoVolume_DeviceName
e o campoMountPath
. Para novos discos persistentes, use também o campoMountOptions
para ativar a escrita.
Java
Para criar uma tarefa em lote que use discos persistentes novos ou existentes através das bibliotecas de cliente do Google Cloud para Java, use a classeCreateJobRequest
e inclua o seguinte:
- Para anexar discos persistentes às VMs de uma tarefa,
inclua um dos seguintes:
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua o método
setDisks
. - Se estiver a usar um modelo de instância de VM para esta tarefa,
inclua o método
setInstanceTemplate
.
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua o método
- Para montar os discos persistentes na tarefa, use a classe
Volume
com o métodosetDeviceName
e o métodosetMountPath
. Para novos discos persistentes, também use o métodosetMountOptions
para ativar a escrita.
Por exemplo, use o seguinte exemplo de código:
Node.js
Para criar uma tarefa em lote que use discos persistentes novos ou existentes com as bibliotecas de cliente do Google Cloud para Node.js, use o método createJob
e inclua o seguinte:
- Para anexar discos persistentes às VMs de uma tarefa,
inclua um dos seguintes:
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua a classe
AllocationPolicy.AttachedDisk
. - Se estiver a usar um modelo de instância de VM para esta tarefa,
inclua a propriedade
instanceTemplate
.
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua a classe
- Para montar os discos persistentes na tarefa, use a
classe
Volume
com a propriedadedeviceName
e a propriedademountPath
. Para novos discos persistentes, também pode usar a propriedademountOptions
para ativar a escrita.
Python
Para criar uma tarefa em lote que use discos persistentes novos ou existentes com as bibliotecas cliente do Google Cloud para Python, use a função CreateJob
e inclua o seguinte:
- Para anexar discos persistentes às VMs de uma tarefa,
inclua um dos seguintes:
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua a classe
AttachedDisk
. - Se estiver a usar um modelo de instância de VM para esta tarefa,
inclua o atributo
instance_template
.
- Se não estiver a usar um modelo de instância de VM para esta tarefa,
inclua a classe
- Para montar os discos persistentes na tarefa, use a classe
Volume
com o atributodevice_name
e o atributomount_path
. Para novos discos persistentes, use também o atributomount_options
para ativar a escrita.
Por exemplo, use o seguinte exemplo de código:
Use um SSD local
Uma tarefa que usa SSDs locais tem as seguintes restrições:
- Todos os SSDs locais Reveja as restrições para todos os SSDs locais.
- Modelos de instâncias Se quiser especificar um modelo de instância de VM ao criar esta tarefa, tem de anexar todos os discos persistentes desta tarefa no modelo de instância. Caso contrário, se não quiser usar um modelo de instância, tem de anexar todos os discos persistentes diretamente na definição da tarefa.
Pode criar uma tarefa que use um SSD local através da CLI gcloud, da API Batch, do Java ou do Python.
O exemplo seguinte descreve como criar uma tarefa que cria, anexa e
monta um SSD local. A tarefa também tem 3 tarefas que executam um script para criar um ficheiro no SSD local com o nome output_task_TASK_INDEX.txt
, em que TASK_INDEX
é o índice de cada tarefa: 0
, 1
e 2
.
gcloud
Para criar uma tarefa que use SSDs locais através da CLI gcloud, use o comando gcloud batch jobs submit
.
No ficheiro de configuração JSON da tarefa, crie e anexe os SSDs locais no campo instances
e monte os SSDs locais no campo volumes
.
Crie um ficheiro JSON.
Se não estiver a usar um modelo de instância para esta tarefa, crie um ficheiro JSON com o seguinte conteúdo:
{ "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" } }
Substitua o seguinte:
MACHINE_TYPE
: o tipo de máquina, que pode ser predefinido ou personalizado, das VMs da tarefa. O número permitido de SSDs locais depende do tipo de máquina das VMs da tarefa.LOCAL_SSD_NAME
: o nome de um SSD local criado para esta tarefa.LOCAL_SSD_SIZE
: o tamanho de todos os SSDs locais em GB. Cada SSD local tem 375 GB, pelo que este valor tem de ser um múltiplo de375
GB. Por exemplo, para 2 SSDs locais, defina este valor como750
GB.
Se estiver a usar um modelo de instância de VM para esta tarefa, crie um ficheiro JSON, conforme mostrado anteriormente, exceto que deve substituir o
instances
campo pelo seguinte:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
onde
INSTANCE_TEMPLATE_NAME
é o nome do modelo de instância para esta tarefa. Para uma tarefa que usa SSDs locais, este modelo de instância tem de definir e anexar os SSDs locais que quer que a tarefa use. Para este exemplo, o modelo tem de definir e anexar um SSD local denominadoLOCAL_SSD_NAME
.
Execute o seguinte comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua o seguinte:
JOB_NAME
: o nome da tarefa.LOCATION
: a localização do trabalho.JSON_CONFIGURATION_FILE
: o caminho para um ficheiro JSON com os detalhes de configuração da tarefa.
API
Para criar uma tarefa que use SSDs locais através da API Batch, use o método jobs.create
.
Na solicitação, crie e anexe os SSDs locais no campo instances
e monte os SSDs locais no campo volumes
.
Se não estiver a usar um modelo de instância para esta tarefa, faça o seguinte pedido:
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" } }
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.LOCATION
: a localização do trabalho.JOB_NAME
: o nome da tarefa.MACHINE_TYPE
: o tipo de máquina, que pode ser predefinido ou personalizado, das VMs da tarefa. O número permitido de SSDs locais depende do tipo de máquina das VMs da tarefa.LOCAL_SSD_NAME
: o nome de um SSD local criado para esta tarefa.LOCAL_SSD_SIZE
: o tamanho de todos os SSDs locais em GB. Cada SSD local tem 375 GB, pelo que este valor tem de ser um múltiplo de375
GB. Por exemplo, para 2 SSDs locais, defina este valor como750
GB.
Se estiver a usar um modelo de instância de VM para esta tarefa, crie um ficheiro JSON, conforme mostrado anteriormente, exceto que deve substituir o
instances
campo pelo seguinte:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
Onde
INSTANCE_TEMPLATE_NAME
é o nome do modelo de instância para esta tarefa. Para uma tarefa que usa SSDs locais, este modelo de instância tem de definir e anexar os SSDs locais que quer que a tarefa use. Para este exemplo, o modelo tem de definir e anexar um SSD local denominadoLOCAL_SSD_NAME
.
Ir
Java
Node.js
Python
Use um contentor do Cloud Storage
Para criar uma tarefa que use um contentor do Cloud Storage existente, selecione um dos seguintes métodos:
- Recomendado: monte um contentor diretamente nas VMs da tarefa especificando o contentor na definição da tarefa, conforme mostrado nesta secção. Quando a tarefa é executada, o contentor é montado automaticamente nas VMs da sua tarefa através do Cloud Storage FUSE.
- Crie uma tarefa com tarefas que acedam diretamente a um contentor do Cloud Storage através da CLI gcloud ou das bibliotecas cliente para a API Cloud Storage. Para saber como aceder a um contentor do Cloud Storage diretamente a partir de uma VM, consulte a documentação do Compute Engine para escrever e ler dados de contentores do Cloud Storage.
Antes de criar uma tarefa que use um contentor, crie um contentor ou identifique um contentor existente. Para mais informações, consulte os artigos Crie contentores e Liste contentores.
Pode criar uma tarefa que use um contentor do Cloud Storage através da Google Cloud consola, da CLI gcloud, da API Batch, do C++, do Go, do Java, do Node.js ou do Python.
O exemplo seguinte descreve como criar uma tarefa que monta um contentor do Cloud Storage. A tarefa também tem 3 tarefas que executam cada uma
um script para criar um ficheiro no contentor com o nome
output_task_TASK_INDEX.txt
onde TASK_INDEX
é o índice de cada tarefa:
0
, 1
e 2
.
Consola
Para criar uma tarefa que use um contentor do Cloud Storage através da Google Cloud consola, faça o seguinte:
Na Google Cloud consola, aceda à página Lista de tarefas.
Clique em
Criar. É apresentada a página Criar tarefa em lote. No painel do lado esquerdo, a página Detalhes da tarefa está selecionada.Configure a página Detalhes da tarefa:
Opcional: no campo Nome da tarefa, personalize o nome da tarefa.
Por exemplo, introduza
example-bucket-job
.Configure a secção Detalhes da tarefa:
Na janela Novo executável, adicione, pelo menos, um script ou um contentor para que esta tarefa seja executada.
Por exemplo, faça o seguinte:
Selecione a caixa de verificação Script. É apresentada uma caixa de texto.
Na caixa de texto, introduza o seguinte script:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Substitua MOUNT_PATH pelo caminho de montagem que os executáveis desta tarefa usam para aceder a um contentor do Cloud Storage existente. O caminho tem de começar com
/mnt/disks/
seguido de um diretório ou um caminho à sua escolha. Por exemplo, se quiser representar este contentor com um diretório denominadomy-bucket
, defina o caminho de montagem como/mnt/disks/my-bucket
.Clique em Concluído.
No campo Número de tarefas, introduza o número de tarefas para este trabalho.
Por exemplo, introduza
3
.No campo Paralelismo, introduza o número de tarefas a executar em simultâneo.
Por exemplo, introduza
1
(predefinição).
Configure a página Configurações adicionais:
No painel esquerdo, clique em Configurações adicionais. É apresentada a página Configurações adicionais.
Para cada contentor do Cloud Storage que quer montar neste trabalho, faça o seguinte:
Na secção Volume de armazenamento, clique em Adicionar novo volume. É apresentada a janela Novo volume.
Na janela Novo volume, faça o seguinte:
Na secção Tipo de volume, selecione Recipiente do Cloud Storage.
No campo Nome do contentor de armazenamento, introduza o nome de um contentor existente.
Por exemplo, introduza o contentor que especificou no ficheiro executável desta tarefa.
No campo Caminho de montagem, introduza o caminho de montagem do contentor (MOUNT_PATH), que especificou no ficheiro executável.
Clique em Concluído.
Opcional: configure os outros campos desta tarefa.
Opcional: para rever a configuração da tarefa, no painel esquerdo, clique em Pré-visualizar.
Clique em Criar.
A página Detalhes do trabalho apresenta o trabalho que criou.
gcloud
Para criar uma tarefa que use um contentor do Cloud Storage através da CLI gcloud, use o comando gcloud batch jobs submit
.
No ficheiro de configuração JSON da tarefa, monte o contentor no campo volumes
.
Por exemplo, para criar uma tarefa que produz ficheiros para um Cloud Storage:
Crie um ficheiro JSON com o seguinte conteúdo:
{ "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" } }
Substitua o seguinte:
BUCKET_PATH
: o caminho do diretório do contentor que quer que esta tarefa aceda, que tem de começar com o nome do contentor. Por exemplo, para um contentor denominadoBUCKET_NAME
, o caminhoBUCKET_NAME
representa o diretório raiz do contentor e o caminhoBUCKET_NAME/subdirectory
representa o subdiretóriosubdirectory
.MOUNT_PATH
: o caminho de montagem que os executáveis da tarefa usam para aceder a este contentor. O caminho tem de começar com/mnt/disks/
seguido de um diretório ou um caminho à sua escolha. Por exemplo, se quiser representar este contentor com um diretório denominadomy-bucket
, defina o caminho de montagem como/mnt/disks/my-bucket
.
Execute o seguinte comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua o seguinte:
JOB_NAME
: o nome da tarefa.LOCATION
: a localização do trabalho.JSON_CONFIGURATION_FILE
: o caminho para um ficheiro JSON com os detalhes de configuração da tarefa.
API
Para criar uma tarefa que use um contentor do Cloud Storage através da API Batch, use o método jobs.create
e monte o contentor no 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"
}
}
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.LOCATION
: a localização do trabalho.JOB_NAME
: o nome da tarefa.BUCKET_PATH
: o caminho do diretório do contentor que quer que esta tarefa aceda, que tem de começar com o nome do contentor. Por exemplo, para um contentor denominadoBUCKET_NAME
, o caminhoBUCKET_NAME
representa o diretório raiz do contentor e o caminhoBUCKET_NAME/subdirectory
representa o subdiretóriosubdirectory
.MOUNT_PATH
: o caminho de montagem que os executáveis da tarefa usam para aceder a este contentor. O caminho tem de começar com/mnt/disks/
seguido de um diretório ou um caminho à sua escolha. Por exemplo, se quiser representar este contentor com um diretório denominadomy-bucket
, defina o caminho de montagem como/mnt/disks/my-bucket
.
C++
C++
Para mais informações, consulte a documentação de referência da API C++ em lote.
Para se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Ir
Go
Para mais informações, consulte a documentação de referência da API Go em lote.
Para se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Java
Para mais informações, consulte a documentação de referência da API Java em lote.
Para se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Node.js
Para mais informações, consulte a documentação de referência da API Node.js em lote.
Para se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Python
Para mais informações, consulte a documentação de referência da API Python em lote.
Para se autenticar no Batch, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Use um sistema de ficheiros de rede
Pode criar uma tarefa que use um sistema de ficheiros de rede (NFS) existente, como uma partilha de ficheiros do Filestore, usando a Google Cloud consola, a CLI gcloud ou a API Batch.
Antes de criar uma tarefa que use um NFS, certifique-se de que a firewall da sua rede está configurada corretamente para permitir o tráfego entre as VMs da sua tarefa e o NFS. Para mais informações, consulte o artigo Configurar regras de firewall para o Filestore.
O exemplo seguinte descreve como criar uma tarefa que especifica e
monta um NFS. A tarefa também tem 3 tarefas que executam um script para criar um ficheiro no NFS denominado
output_task_TASK_INDEX.txt
onde TASK_INDEX
é o índice de cada tarefa:
0
, 1
e 2
.
Consola
Para criar uma tarefa que use um NFS através da Google Cloud consola, faça o seguinte:
Na Google Cloud consola, aceda à página Lista de tarefas.
Clique em
Criar. É apresentada a página Criar tarefa em lote. No painel do lado esquerdo, a página Detalhes da tarefa está selecionada.Configure a página Detalhes da tarefa:
Opcional: no campo Nome da tarefa, personalize o nome da tarefa.
Por exemplo, introduza
example-nfs-job
.Configure a secção Detalhes da tarefa:
Na janela Novo executável, adicione, pelo menos, um script ou um contentor para que esta tarefa seja executada.
Por exemplo, faça o seguinte:
Selecione a caixa de verificação Script. É apresentada uma caixa de texto.
Na caixa de texto, introduza o seguinte script:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Substitua MOUNT_PATH pelo caminho de montagem que o executável da tarefa usa para aceder a este NFS. O caminho tem de começar com
/mnt/disks/
seguido de um diretório ou um caminho à sua escolha. Por exemplo, se quiser representar este NFS com um diretório denominadomy-nfs
, defina o caminho de montagem como/mnt/disks/my-nfs
.Clique em Concluído.
No campo Número de tarefas, introduza o número de tarefas para este trabalho.
Por exemplo, introduza
3
.No campo Paralelismo, introduza o número de tarefas a executar em simultâneo.
Por exemplo, introduza
1
(predefinição).
Configure a página Configurações adicionais:
No painel esquerdo, clique em Configurações adicionais. É apresentada a página Configurações adicionais.
Para cada contentor do Cloud Storage que quer montar neste trabalho, faça o seguinte:
Na secção Volume de armazenamento, clique em Adicionar novo volume. É apresentada a janela Novo volume.
Na janela Novo volume, faça o seguinte:
Na secção Tipo de volume, selecione Sistema de ficheiros de rede.
No campo Servidor de ficheiros, introduza o endereço IP do servidor onde se encontra o NFS especificado no executável desta tarefa.
Por exemplo, se o seu NFS for uma partilha de ficheiros do Filestore, especifique o endereço IP da instância do Filestore, que pode obter ao descrever a instância do Filestore.
No campo Caminho remoto, introduza um caminho que possa aceder ao NFS especificado no passo anterior.
O caminho do diretório NFS tem de começar com
/
seguido do diretório raiz do NFS.No campo Caminho de montagem, introduza o caminho de montagem para o NFS (MOUNT_PATH), que especificou no passo anterior.
Clique em Concluído.
Opcional: configure os outros campos desta tarefa.
Opcional: para rever a configuração da tarefa, no painel esquerdo, clique em Pré-visualizar.
Clique em Criar.
A página Detalhes do trabalho apresenta o trabalho que criou.
gcloud
Para criar uma tarefa que use um NFS através da CLI gcloud, use o comando gcloud batch jobs submit
.
No ficheiro de configuração JSON da tarefa, monte o NFS no campo volumes
.
Crie um ficheiro JSON com o seguinte conteúdo:
{ "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" } }
Substitua o seguinte:
NFS_IP_ADDRESS
: o endereço IP do NFS. Por exemplo, se o seu NFS for uma partilha de ficheiros do Filestore, especifique o endereço IP da instância do Filestore, que pode obter descrevendo a instância do Filestore.NFS_PATH
: o caminho do diretório NFS ao qual quer que esta tarefa aceda, que tem de começar com/
seguido do diretório raiz do NFS. Por exemplo, para uma partilha de ficheiros do Filestore denominadaFILE_SHARE_NAME
, o caminho/FILE_SHARE_NAME
representa o diretório raiz da partilha de ficheiros e o caminho/FILE_SHARE_NAME/subdirectory
representa o subdiretóriosubdirectory
.MOUNT_PATH
: o caminho de montagem que os elementos executáveis da tarefa usam para aceder a este NFS. O caminho tem de começar com/mnt/disks/
seguido de um diretório ou um caminho à sua escolha. Por exemplo, se quiser representar este NFS com um diretório denominadomy-nfs
, defina o caminho de montagem como/mnt/disks/my-nfs
.
Execute o seguinte comando:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Substitua o seguinte:
JOB_NAME
: o nome da tarefa.LOCATION
: a localização do trabalho.JSON_CONFIGURATION_FILE
: o caminho para um ficheiro JSON com os detalhes de configuração da tarefa.
API
Para criar uma tarefa que use um NFS através da API Batch, use o método jobs.create
e monte o NFS no 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"
}
}
Substitua o seguinte:
PROJECT_ID
: o ID do projeto do seu projeto.LOCATION
: a localização do trabalho.JOB_NAME
: o nome da tarefa.NFS_IP_ADDRESS
: o endereço IP do sistema de ficheiros de rede. Por exemplo, se o seu NFS for uma partilha de ficheiros do Filestore, especifique o endereço IP da instância do Filestore, que pode obter descrevendo a instância do Filestore.NFS_PATH
: o caminho do diretório NFS ao qual quer que esta tarefa aceda, que tem de começar com/
seguido do diretório raiz do NFS. Por exemplo, para uma partilha de ficheiros do Filestore denominadaFILE_SHARE_NAME
, o caminho/FILE_SHARE_NAME
representa o diretório raiz da partilha de ficheiros e o caminho/FILE_SHARE_NAME/subdirectory
representa um subdiretório.MOUNT_PATH
: o caminho de montagem que os elementos executáveis da tarefa usam para aceder a este NFS. O caminho tem de começar com/mnt/disks/
seguido de um diretório ou um caminho à sua escolha. Por exemplo, se quiser representar este NFS com um diretório denominadomy-nfs
, defina o caminho de montagem como/mnt/disks/my-nfs
.
Java
Node.js
Python
O que se segue?
- Se tiver problemas ao criar ou executar uma tarefa, consulte a secção Resolução de problemas.
- Ver empregos e tarefas.
- Saiba mais sobre as opções de criação de tarefas.