

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Executando trabalhos em um cluster de modo de várias filas
<a name="multi-queue-tutorial-v3"></a>

Este tutorial aborda como executar seu primeiro trabalho "Hello World" no [modo AWS ParallelCluster de várias filas](configuration-of-multiple-queues-v3.md).

Ao usar a interface de linha de AWS ParallelCluster comando (CLI) ou a API, você paga apenas pelos AWS recursos criados ao criar ou atualizar AWS ParallelCluster imagens e clusters. Para obter mais informações, consulte [AWS serviços usados por AWS ParallelCluster](aws-services-v3.md).

**Pré-requisitos**
+ AWS ParallelCluster [está instalado](install-v3-parallelcluster.md).
+ O AWS CLI [está instalado e configurado.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Você tem um [par de chaves do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Você tem um perfil do IAM com as [permissões](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies) necessárias para executar a [`pcluster`](pcluster-v3.md) CLI.

## Configure seu cluster
<a name="multi-queue-tutorial-v3-configure-cluster"></a>

Primeiro, verifique se AWS ParallelCluster está instalado corretamente executando o comando a seguir.

```
$ pcluster version
```

Para saber mais sobre o `pcluster version`, consulte [`pcluster version`](pcluster.version-v3.md).

Esse comando retorna a versão em execução do AWS ParallelCluster.

Em seguida, execute o `pcluster configure` para gerar um arquivo de configuração básico. Siga todas as instruções que seguem esse comando.

```
$ pcluster configure --config multi-queue-mode.yaml
```

Para obter mais informações sobre o comando `pcluster configure`, consulte [`pcluster configure`](pcluster.configure-v3.md).

Depois de concluir esta etapa, um arquivo de configuração básico chamado `multi-queue-mode.yaml` é exibido. Esse arquivo contém uma configuração básica de cluster.

Na próxima etapa, você modifica seu novo arquivo de configuração e inicia um cluster com várias filas.

**nota**  
Algumas instâncias que este tutorial usa não são elegíveis para o nível gratuito.

Para este tutorial, modifique seu arquivo de configuração para que corresponda à configuração a seguir. Os itens destacados em vermelho representam os valores do arquivo de configuração. Mantenha seus próprios valores.

```
Region: region-id
Image:
 Os: alinux2
HeadNode:
 InstanceType: c5.xlarge
 Networking:
   SubnetId: subnet-abcdef01234567890
 Ssh:
   KeyName: yourkeypair
Scheduling:
 Scheduler: slurm
 SlurmQueues:
 - Name: spot
   ComputeResources:
   - Name: c5xlarge
     InstanceType: c5.xlarge
     MinCount: 1
     MaxCount: 10
   - Name: t2micro
     InstanceType: t2.micro
     MinCount: 1
     MaxCount: 10
   Networking:
     SubnetIds:
     - subnet-abcdef01234567890
 - Name: ondemand
   ComputeResources:
   - Name: c52xlarge
     InstanceType: c5.2xlarge
     MinCount: 0
     MaxCount: 10
   Networking:
     SubnetIds:
     - subnet-021345abcdef6789
```

## Crie seu cluster do
<a name="multi-queue-tutorial-v3-create-cluster"></a>

Crie um cluster chamado `multi-queue-cluster` com base no seu arquivo de configuração.

```
$ pcluster create-cluster --cluster-name multi-queue-cluster --cluster-configuration multi-queue-mode.yaml
{
 "cluster": {
   "clusterName": "multi-queue-cluster",
   "cloudformationStackStatus": "CREATE_IN_PROGRESS",
   "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
   "region": "eu-west-1",
   "version": "3.15.0",
   "clusterStatus": "CREATE_IN_PROGRESS"
 }
}
```

Para obter mais informações sobre o comando `pcluster create-cluster`, consulte [`pcluster create-cluster`](pcluster.create-cluster-v3.md).

Para verificar o status do cluster, execute o comando a seguir.

```
$ pcluster list-clusters
{
 "cluster": {
   "clusterName": "multi-queue-cluster",
   "cloudformationStackStatus": "CREATE_IN_PROGRESS",
   "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
   "region": "eu-west-1",
   "version": "3.15.0",
   "clusterStatus": "CREATE_IN_PROGRESS"
 }
}
```

Quando o cluster é criado, o campo `clusterStatus` exibe `CREATE_COMPLETE`.

## Faça o login no nó principal.
<a name="multi-queue-tutorial-v3-log-into-head-node"></a>

Use seu arquivo de chave SSH privada para fazer login no nó principal.

```
$ pcluster ssh --cluster-name multi-queue-cluster -i ~/path/to/yourkeyfile.pem
```

Para saber mais sobre o `pcluster ssh`, consulte [`pcluster ssh`](pcluster.ssh-v3.md).

Depois de fazer login, execute o comando `sinfo` para verificar se suas filas do programador estão definidas e configuradas.

Para obter mais informações sobre `sinfo`, consulte [sinfo](https://slurm.schedmd.com/sinfo.html) na documentação *Slurm*.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite     18  idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[1-9]
spot*        up   infinite      2  idle  spot-st-c5xlarge-1,spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

A saída mostra que você tem um `t2.micro` e um nó de computação `c5.xlarge` no estado `idle` que estão disponíveis no seu cluster.

Todos os outros nós estão no estado de economia de energia, indicado pelo sufixo `~` no estado do nó, sem nenhuma instância do Amazon EC2 dando suporte. A fila padrão é indicada por um sufixo `*` após o nome da fila. A `spot` é sua fila de trabalhos padrão.

## Executar trabalho no modo de várias filas
<a name="multi-queue-tutorial-v3-running-job-mqm"></a>

Em seguida, tente fazer com que o trabalho fique em latência por um tempo. Posteriormente, o trabalho gera seu próprio nome de host. Certifique-se de que esse script possa ser executado pelo usuário atual.

```
$ tee <<EOF hellojob.sh
#!/bin/bash
sleep 30
echo "Hello World from \$(hostname)"
EOF

$ chmod +x hellojob.sh
$ ls -l hellojob.sh
-rwxrwxr-x 1 ec2-user ec2-user 57 Sep 23 21:57 hellojob.sh
```

Envie o trabalho usando o comando `sbatch`. Solicite dois nós para esse trabalho com a opção `-N 2` e verifique se o trabalho foi enviado com êxito. Para obter mais informações sobre `sbatch`, consulte [https://slurm.schedmd.com/sbatch.html](https://slurm.schedmd.com/sbatch.html) na *documentação do Slurm*.

```
$ sbatch -N 2 --wrap "srun hellojob.sh"
Submitted batch job 1
```

Agora, você pode visualizar a fila e verificar o status do trabalho com o comando `squeue`. Como você não especificou uma fila específica, a fila padrão (`spot`) é usada. Para obter mais informações sobre `squeue`, consulte [https://slurm.schedmd.com/squeue.html](https://slurm.schedmd.com/squeue.html) na *documentação do Slurm*.

```
$ squeue
JOBID PARTITION     NAME     USER  ST      TIME  NODES NODELIST(REASON)
   1      spot     wrap ec2-user  R       0:10      2 spot-st-c5xlarge-1,spot-st-t2micro-1
```

A saída mostra que, no momento, a tarefa está em um estado de execução. Aguarde o término do trabalho. Isso leva cerca de 30 segundos. Em seguida, execute `squeue` novamente.

```
$ squeue
JOBID PARTITION     NAME     USER          ST       TIME  NODES NODELIST(REASON)
```

Agora que todos os trabalhos na fila foram concluídos, procure o arquivo de saída chamado `slurm-1.out` em seu diretório atual.

```
$ cat slurm-1.out
Hello World from spot-st-t2micro-1
Hello World from spot-st-c5xlarge-1
```

A saída mostra que o trabalho foi executado com êxito nos nós `spot-st-t2micro-1` e `spot-st-c5xlarge-1`.

Agora, envie o mesmo trabalho especificando restrições para instâncias específicas com os comandos a seguir.

```
$ sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh"
Submitted batch job 2
```

Você usou esses parâmetros para `sbatch`:
+ `-N 3`— solicita três nós.
+ `-p spot`— envia o trabalho para a fila `spot`. Você também pode enviar um trabalho para a fila `ondemand`, especificando `-p ondemand`.
+ `-C "[c5.xlarge*1&t2.micro*2]"`— especifica as restrições específicas do nó para esse trabalho. Isso solicita que um nó `c5.xlarge` e dois nós `t2.micro` sejam usados para esse trabalho.

Execute o comando `sinfo` para visualizar os nós e as filas. As filas de entrada AWS ParallelCluster são chamadas de partições em. Slurm

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite      1  alloc# spot-dy-t2micro-1
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      1  mix   spot-st-c5xlarge-1
spot*        up   infinite      1  alloc spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

Os nós estão sendo ativados. Isso é indicado pelo sufixo `#` no estado do nó. Execute o comando squeue para visualizar informações sobre os trabalhos no cluster.

```
$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
   2      spot     wrap ec2-user CF       0:04      3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
```

Seu trabalho está no estado `CF` (CONFIGURING), aguardando que a escala das instâncias aumente verticalmente e que elas se juntem ao cluster.

Após cerca de três minutos, os nós ficam disponíveis e o trabalho entra no estado `R` (RUNNING).

```
$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
   2      spot     wrap ec2-user  R       0:07      3 spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
```

O trabalho termina e todos os três nós estão no estado `idle`.

```
$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9]
spot*        up   infinite      3  idle  spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

Então, depois que nenhum trabalho permanecer na fila, verifique `slurm-2.out` no seu diretório local.

```
$ cat slurm-2.out 
Hello World from spot-st-t2micro-1
Hello World from spot-dy-t2micro-1
Hello World from spot-st-c5xlarge-1
```

Esse é o estado final do cluster.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9]
spot*        up   infinite      3  idle  spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
```

Depois de se desconectar do cluster, você pode limpá-lo, executando o `pcluster delete-cluster`. Para obter mais informações, consulte [`pcluster list-clusters`](pcluster.list-clusters-v3.md) e [`pcluster delete-cluster`](pcluster.delete-cluster-v3.md).

```
$ pcluster list-clusters
{
 "clusters": [
   {
     "clusterName": "multi-queue-cluster",
     "cloudformationStackStatus": "CREATE_COMPLETE",
     "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
     "region": "eu-west-1",
     "version": "3.1.4",
     "clusterStatus": "CREATE_COMPLETE"
   }
 ]
}
$ pcluster delete-cluster -n multi-queue-cluster
{
 "cluster": {
   "clusterName": "multi-queue-cluster",
   "cloudformationStackStatus": "DELETE_IN_PROGRESS",
   "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456",
   "region": "eu-west-1",
   "version": "3.1.4",
   "clusterStatus": "DELETE_IN_PROGRESS"
 }
}
```