연습 - CLI에서 Azure Batch 작업 모니터링
Azure Batch를 사용하여 집약적인 태스크를 실행하고 있는 경우 태스크가 어떻게 진행되고 있는지 알고 싶은 경우가 있습니다.
비영리를 위한 솔루션 설계자는 Azure Batch에서 발생하는 일에 액세스하는 방법이 필요합니다. 또한 노드 및 태스크가 작동하는지 여부, 진행한 정도 및 다운로드 가능한 출력 파일을 생성했는지 여부를 결정해야 합니다.
이 단원에서는 이전 단원과 유사한 작업을 만들고, 해당 작업의 진행률을 모니터링한 후, 태스크가 생성한 파일을 출력물로 다운로드하며, 모두 Azure CLI를 사용합니다.
중요
이 모듈의 연습은 선택 사항입니다. 연습을 완료하려면 고유한 Azure 구독이 필요합니다.
CLI를 사용하여 태스크 모니터링
Azure Batch는 컴퓨팅 노드의 생성 및 관리, 해당 노드에서 실행하는 작업의 예약에 대한 모든 세부 정보를 처리합니다.
마지막 단원에서 태스크를 만들 때 Azure Batch가 풀에서 실행하도록 해당 태스크를 큐에 넣었습니다. 노드의 가용 용량이 결정됨에 따라 Azure Batch는 해당 노드에서 실행할 태스크를 예약했습니다.
마지막 단원 끝에서 모든 작업을 삭제하여 해당 모든 태스크가 삭제되도록 했습니다. 이제 새 작업 및 태스크를 만들어 보겠습니다. 태스크를 삭제하고 다시 만드는 것은 상당히 빠른 작업이며, Azure Batch에서 여러 실험과 프로젝트를 쉽게 분리할 수 있도록 해준다는 점에 주목할 필요가 있습니다. 반면, Batch 풀을 다시 만들고 가상 머신을 할당해야 하므로 상위 수준 Batch 엔터티(예: 계정)를 삭제하고 다시 만드는 데 더 많은 시간이 걸립니다.
Azure Portal에 로그인합니다.
위쪽 메뉴에서 Cloud Shell 아이콘(>_)을 선택하여 Cloud Shell을 엽니다.
새로운 Batch 작업을 만들려면 Cloud Shell에서 다음 명령을 실행합니다.
az batch job create \ --id myjob2 \ --pool-id mypool
이전 단원의 작업과의 충돌을 방지하기 위해 다르게 이름을 지정했습니다. 이 단원은 삭제하도록 예약되었지만 아직 반드시 삭제되지는 않았습니다.
다음 명령을 실행하여 이 새 작업 내에 Batch 태스크를 만듭니다.
for i in {1..10} do az batch task create \ --task-id mytask$i \ --job-id myjob2 \ --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'" done
Cloud Shell에서 다음 명령을 실행하여 사용자가 만든 태스크 중 하나의 상태를 봅니다.
az batch task show \ --job-id myjob2 \ --task-id mytask1
CLI를 사용하여 태스크 다운로드
일괄 처리 작업이 올바르게 실행되었는지 검사 위해 만든 파일을 다운로드하고 검사할 수 있습니다.
Cloud Shell에서 다음 명령을 실행하여 사용자가 만든 태스크 중 하나에서 생성된 모든 파일의 테이블을 표시합니다.
az batch task file list \ --job-id myjob2 \ --task-id mytask5 \ --output table
참고 항목
오류 메시지가 표시
The files of the specified task cannot be accessed as the task state is still active
되면 몇 분 정도 기다렸다가 명령을 다시 실행합니다.Cloud Shell에서 다음 명령을 실행하여 태스크 출력에 대한 전용 디렉터리를 만들고 이동합니다.
mkdir taskoutputs && cd taskoutputs
Cloud Shell에서 다음 명령을 실행하여 사용자가 만든 모든 태스크에서 생성된 파일을 다운로드합니다.
for i in {1..10} do az batch task file download \ --job-id myjob2 \ --task-id mytask$i \ --file-path stdout.txt \ --destination ./stdout$i.txt done
작업에는 기본 작업 디렉터리가 있으며 기본적으로 해당 작업은 .로 전달
stdout.txt
됩니다. 반복하여 번호가 매겨진 버전으로 리디렉션stdout.txt
할 수 있습니다. 각 버전stdout.txt
에는 지정된 작업의 작업과 이를 실행하는 데 사용된 노드가 표시됩니다.다음 명령을 실행하여 샘플에서 생성된 파일의 텍스트 내용을 확인합니다.
cat stdout1.txt && cat stdout2.txt
이 출력은 Batch 스케줄러가 처리함에 따라 다른 노드에 예약되는 다른 태스크를 보여줍니다.
다음 단원에서 사용할 수 있도록 Azure Batch 계정과 작업자 노드의 풀을 그대로 두되, Batch 작업은 삭제하겠습니다. Batch 작업은 Batch 태스크의 컨테이너 역할을 하므로 이러한 태스크도 삭제됩니다.
다음 명령을 사용하여 Batch 작업을 삭제합니다.
az batch job delete --job-id myjob2 -y