이 튜토리얼에서는 Batch에서 Nextflowdsub
파이프라인을 실행하는 방법을 설명합니다.
특히 dsub
파이프라인 예시는 바이너리 정렬 맵(BAM) 파일의 DNA 시퀀싱 데이터를 처리하여 BAM 색인(BAI) 파일을 만듭니다.
이 튜토리얼은 Batch에 dsub
를 사용하려는 Batch 사용자를 대상으로 합니다.
dsub
는 Google Cloud에서 일괄 처리 워크플로를 조정하기 위한 오픈소스 작업 스케줄러입니다.
dsub
와 함께 Batch를 사용하는 방법에 대한 자세한 내용은 Batch용 dsub
문서를 참조하세요.
목표
- Cloud Storage 버킷에서 파일을 읽고 쓰는
dsub
파이프라인을 Batch에서 실행합니다. - Cloud Storage 버킷에서 출력 파일을 봅니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
- Batch
- Cloud Storage
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 튜토리얼에서 만든 리소스는 정리 단계까지 모든 단계를 적시에 완료한다고 가정할 때 1달러 미만의 비용이 소요됩니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:
gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:
gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
프로젝트에 이 튜토리얼에 필요한 권한이 있는 서비스 계정이 하나 이상 있는지 확인합니다.
각 작업에는 Batch 서비스 에이전트가 작업을 실행하는 데 필요한 리소스를 만들고 액세스할 수 있는 서비스 계정이 필요합니다. 이 튜토리얼에서 작업의 서비스 계정은 Compute Engine 기본 서비스 계정입니다.
Compute Engine 기본 서비스 계정에 Batch 서비스 에이전트가 Batch 작업을 위한 리소스를 만들고 액세스하도록 허용하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 Batch 에이전트 보고자(
roles/batch.agentReporter
) -
프로젝트에 대한 스토리지 관리자(
roles/storage.admin
) - (권장) 작업이 Cloud Logging에서 로그를 생성하도록 허용: 프로젝트에 대한 로그 작성자(
roles/logging.logWriter
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Compute Engine 기본 서비스 계정에 필요한 권한을 부여할 수도 있습니다.
-
프로젝트에 대한 Batch 에이전트 보고자(
-
이 튜토리얼에 필요한 권한이 있는지 확인합니다.
이 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음의 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor
) -
이 튜토리얼의 경우 Compute Engine 기본 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) -
프로젝트에 대한 스토리지 객체 관리자(
roles/storage.objectAdmin
)
-
프로젝트에 대한 일괄 작업 편집자(
-
dsub
및 종속 항목을 설치합니다. 자세한 내용은dsub
설치 문서를 참조하세요.최신 버전의
dsub
에서 지원하는 Python 및 pip 버전을 설치했는지 확인합니다. 현재 설치된 버전을 보려면 다음 명령어를 실행합니다.pip --version
pip
또는 Python을 설치하거나 업데이트해야 하는 경우 Python 설치 단계를 따르세요.권장:
dsub
설치 시 종속 항목 충돌 오류를 방지하려면 Python 가상 환경을 만들고 활성화합니다.python -m venv dsub_libs && source dsub_libs/bin/activate
git
을 사용하여dsub
GitHub 저장소를 클론하고 엽니다.git clone https://github.com/databiosphere/dsub.git && cd dsub
dsub
및 해당 종속 항목을 설치합니다.python -m pip install .
출력은 다음과 비슷합니다.
... Successfully installed cachetools-5.3.1 certifi-2023.7.22 charset-normalizer-3.3.1 dsub-0.4.9 funcsigs-1.0.2 google-api-core-2.11.0 google-api-python-client-2.85.0 google-auth-2.17.3 google-auth-httplib2-0.1.0 google-cloud-batch-0.10.0 googleapis-common-protos-1.61.0 grpcio-1.59.0 grpcio-status-1.59.0 httplib2-0.22.0 idna-3.4 mock-4.0.3 parameterized-0.8.1 proto-plus-1.22.3 protobuf-4.24.4 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-3.1.1 python-dateutil-2.8.2 pytz-2023.3 pyyaml-6.0 requests-2.31.0 rsa-4.9 six-1.16.0 tabulate-0.9.0 tenacity-8.2.2 uritemplate-4.1.1 urllib3-2.0.7
Cloud Storage 버킷 만들기
gcloud CLI를 사용하여 샘플 dsub
파이프라인의 출력 파일을 저장할 Cloud Storage 버킷을 만들려면 gcloud storage buckets create
명령어를 실행합니다.
gcloud storage buckets create gs://BUCKET_NAME \
--project PROJECT_ID
다음을 바꿉니다.
BUCKET_NAME
: 버킷의 전역 고유 이름입니다.PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.
출력은 다음과 비슷합니다.
Creating gs://BUCKET_NAME/...
dsub
파이프라인 실행하기
샘플 dsub
파이프라인은 1,000 Genomes Project의 BAM 파일을 색인화하고 결과를 Cloud Storage 버킷에 출력합니다.
샘플 dsub
파이프라인을 실행하려면 다음 dsub
명령어를 실행합니다.
dsub \
--provider google-batch \
--project PROJECT_ID \
--logging gs://BUCKET_NAME/WORK_DIRECTORY/logs \
--input BAM=gs://genomics-public-data/1000-genomes/bam/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam \
--output BAI=gs://BUCKET_NAME/WORK_DIRECTORY/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam.bai \
--image quay.io/cancercollaboratory/dockstore-tool-samtools-index \
--command 'samtools index ${BAM} ${BAI}' \
--wait
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.BUCKET_NAME
: 만든 Cloud Storage 버킷의 이름입니다.WORK_DIRECTORY
: 파이프라인이 로그와 출력을 저장하는 데 사용할 수 있는 새 디렉터리의 이름입니다. 예를 들어workDir
를 입력합니다.
dsub
파이프라인은 BAI 파일을 쓰고 Cloud Storage 버킷의 지정된 디렉터리에 로깅하는 Batch 작업을 실행합니다.
특히 dsub
저장소에는 samtools
를 사용하여 --input
플래그에 지정한 BAM 파일의 색인을 생성하는 사전 빌드된 Docker 이미지가 포함되어 있습니다.
dsub
파이프라인 실행이 완료될 때까지 명령어가 완료되지 않으며 이는 Batch 작업이 예약된 시간에 따라 달라질 수 있습니다.
일반적으로 10분 정도 소요됩니다. Batch는 일반적으로 몇 분 내에 작업 실행을 시작하며 작업의 런타임은 약 8분입니다.
처음에는 명령어가 계속 실행 중이며 출력은 다음과 비슷합니다.
Job properties:
job-id: JOB_NAME
job-name: samtools
user-id: USERNAME
Provider internal-id (operation): projects/PROJECT_ID/locations/us-central1/jobs/JOB_NAME
Launched job-id: JOB_NAME
To check the status, run:
dstat --provider google-batch --project PROJECT_ID --location us-central1 --jobs 'JOB_NAME' --users 'USERNAME' --status '*'
To cancel the job, run:
ddel --provider google-batch --project PROJECT_ID --location us-central1 --jobs 'JOB_NAME' --users 'USERNAME'
Waiting for job to complete...
Waiting for: JOB_NAME.
그런 다음 작업이 성공적으로 완료되면 명령어가 종료되고 출력은 다음과 비슷합니다.
JOB_NAME: SUCCESS
JOB_NAME
이 출력에는 다음 값이 포함됩니다.
JOB_NAME
: 작업의 이름입니다.USERNAME
: Google Cloud 사용자 이름입니다.PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.
출력 파일 보기
gcloud CLI를 사용하여 샘플 dsub
파이프라인에서 생성된 출력 파일을 보려면 gcloud storage ls
명령어를 실행합니다.
gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY \
--project PROJECT_ID
다음을 바꿉니다.
BUCKET_NAME
: 만든 Cloud Storage 버킷의 이름입니다.WORK_DIRECTORY
:dsub
명령어에서 지정한 디렉터리입니다.PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.
출력은 다음과 비슷합니다.
gs://BUCKET_NAME/WORK_DIRECTORY/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam.bai
gs://BUCKET_NAME/WORK_DIRECTORY/logs/
이 출력에는 BAI 파일과 작업 로그가 포함된 디렉터리가 포함됩니다.
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 현재 프로젝트를 삭제하는 것입니다.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
개별 리소스 삭제
현재 프로젝트를 계속 사용하려면 이 튜토리얼에서 사용된 개별 리소스를 삭제합니다.
버킷 삭제
파이프라인 실행이 완료되면 Cloud Storage 버킷의 WORK_DIRECTORY
디렉터리에 출력 파일을 만들고 저장합니다.
Cloud Storage 요금을 현재 Google Cloud 계정으로 줄이려면 다음 중 하나를 수행합니다.
이 튜토리얼에서 사용한 버킷이 더 이상 필요하지 않으면
--recursive
플래그와 함께gcloud storage rm
명령어를 사용하여 버킷과 해당 콘텐츠를 모두 삭제합니다.gcloud storage rm gs://BUCKET_NAME \ --recursive \ --project PROJECT_ID
다음을 바꿉니다.
BUCKET_NAME
: 만든 Cloud Storage 버킷의 이름입니다.PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.
그렇지 않고 버킷이 계속 필요한 경우
--recursive
플래그와 함께gcloud storage rm
명령어를 사용하여WORK_DIRECTORY
디렉터리와 해당 콘텐츠민 삭제합니다.gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \ --recursive \ --project PROJECT_ID
다음을 바꿉니다.
BUCKET_NAME
: 만든 Cloud Storage 버킷의 이름입니다.WORK_DIRECTORY
:dsub
명령어에서 지정한 디렉터리입니다.PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.
작업 삭제
gcloud CLI를 사용하여 작업을 삭제하려면 gcloud batch jobs delete
명령어를 실행합니다.
gcloud batch jobs delete JOB_NAME \
--location us-central1 \
--project PROJECT_ID
다음을 바꿉니다.
JOB_NAME
: 작업의 이름입니다.PROJECT_ID
: Google Cloud 프로젝트의 프로젝트 ID입니다.
다음 단계
dsub
및 Batch용dsub
에 대해 자세히 알아보세요.- Batch에서 스토리지 볼륨 사용에 대해 자세히 알아보기