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" AWS ParallelCluster com o modo de fila múltipla.
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.
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 saber mais sobre o pcluster version, consulte versão pcluster.
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 configuração de cluster.
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-idImage: Os: alinux2023 HeadNode: InstanceType: c5.xlarge Networking: SubnetId:subnet-abcdef01234567890Ssh: KeyName:yourkeypairScheduling: 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.16.1", "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.16.1", "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 saber mais sobre o pcluster ssh, consulte cluster 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
$sinfoPARTITION 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
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
$squeueJOBID 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.
$squeueJOBID 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.outHello 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.xlargee dois nóst2.microsejam 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
$sinfoPARTITION 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.
$squeueJOBID 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).
$squeueJOBID 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.
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)$sinfoPARTITION 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.outHello 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.
$sinfoPARTITION 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 lista de clusters - 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" } }