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
Este tutorial aborda como executar seu primeiro trabalho "Hello World" no modo AWS ParallelCluster de várias filas.
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 ter mais informações, consulte AWS serviços usados por AWS ParallelCluster.
A AWS ParallelCluster interface do usuário é construída em uma arquitetura sem servidor e você pode usá-la na categoria AWS Free Tier na maioria dos casos. Para ter mais informações, consulte Custos de interface de usuário do AWS ParallelCluster.
Pré-requisitos
-
AWS ParallelCluster está instalado.
-
O AWS CLI está instalado e configurado.
-
Você tem um par de chaves do Amazon EC2.
-
Você tem um perfil do IAM com as permissões necessárias para executar a pcluster CLI.
Configure seu cluster
Primeiro, verifique se AWS ParallelCluster está instalado corretamente executando o comando a seguir.
$
pcluster version
Para obter mais informações sobre o pcluster version
, consulte pcluster version.
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.
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
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.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } }
Para obter mais informações sobre o comando pcluster create-cluster
, consulte pcluster create-cluster.
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.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } }
Quando o cluster é criado, o campo clusterStatus
exibe CREATE_COMPLETE
.
Faça o login no nó principal.
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 obter mais informações sobre o pcluster ssh
, consulte pcluster ssh.
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
$
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 suportando-os. 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
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 sbatch
$
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 squeue
$
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 filaspot
. Você também pode enviar um trabalho para a filaondemand
, 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óst2.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 ter mais informações, consulte pcluster list-clusters e pcluster delete-cluster.
$
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" } }