Tutorial ini menjelaskan cara menjalankan pipeline dsub
di Batch.
Secara khusus, contoh pipeline dsub
memproses data pengurutan DNA dalam
file Peta Penyelarasan Biner (BAM)
untuk membuat file indeks BAM (BAI).
Tutorial ini ditujukan untuk pengguna Batch yang ingin menggunakan
dsub
dengan Batch.
dsub
adalah penjadwal tugas open source untuk mengorkestrasi alur kerja pemrosesan batch di Google Cloud.
Untuk mempelajari lebih lanjut cara menggunakan Batch dengan dsub
, lihat dokumentasi dsub
untuk Batch.
Tujuan
- Menjalankan pipeline
dsub
pada Batch yang membaca dan menulis file di bucket Cloud Storage. - Melihat file output di bucket Cloud Storage.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Batch
- Cloud Storage
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Resource yang dibuat dalam tutorial ini biasanya berbiaya lebih rendah daripada satu dolar, dengan asumsi Anda menyelesaikan semua langkah—termasuk pembersihan—secara tepat waktu.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Batch, Cloud Storage, Compute Engine, and Logging:
gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com - Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Batch, Cloud Storage, Compute Engine, and Logging:
gcloud services enable batch.googleapis.com
compute.googleapis.com logging.googleapis.com storage.googleapis.com -
Pastikan project Anda memiliki setidaknya satu akun layanan dengan izin yang diperlukan untuk tutorial ini.
Setiap tugas memerlukan akun layanan yang memungkinkan agen layanan Batch membuat dan mengakses resource yang diperlukan untuk menjalankan tugas. Untuk tutorial ini, akun layanan tugas adalah akun layanan default Compute Engine.
Untuk memastikan akun layanan default Compute Engine memiliki izin yang diperlukan guna mengizinkan agen layanan Batch membuat dan mengakses resource untuk tugas Batch, minta administrator Anda untuk memberikan peran IAM berikut kepada akun layanan default Compute Engine:
-
Batch Agent Reporter (
roles/batch.agentReporter
) pada project -
Storage Admin (
roles/storage.admin
) pada project -
(Direkomendasikan) Izinkan tugas menghasilkan log di Cloud Logging:
Logs Writer (
roles/logging.logWriter
) pada project
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Administrator Anda mungkin juga dapat memberi akun layanan default Compute Engine izin yang diperlukan melalui peran khusus atau peran standar lainnya.
-
Batch Agent Reporter (
-
Pastikan Anda memiliki izin yang diperlukan untuk tutorial ini.
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project -
Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan tugas, yang untuk tutorial ini adalah akun layanan default Compute Engine -
Storage Object Admin (
roles/storage.objectAdmin
) pada project
-
Batch Job Editor (
-
Instal
dsub
dan dependensinya. Untuk informasi selengkapnya, lihat dokumentasi penginstalandsub
.Pastikan Anda telah menginstal versi Python dan pip yang didukung oleh
dsub
versi terbaru. Untuk melihat versi yang saat ini terinstal, jalankan perintah berikut:pip --version
Jika Anda perlu menginstal atau mengupdate
pip
atau Python, ikuti langkah-langkah untuk menginstal Python.Direkomendasikan: Untuk mencegah error konflik dependensi saat menginstal
dsub
, buat dan aktifkan lingkungan virtual Python:python -m venv dsub_libs && source dsub_libs/bin/activate
Clone repositori GitHub
dsub
menggunakangit
dan buka:git clone https://github.com/databiosphere/dsub.git && cd dsub
Instal
dsub
dan dependensinya:python -m pip install .
Outputnya mirip dengan hal berikut ini:
... 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
Membuat bucket Cloud Storage
Guna membuat bucket Cloud Storage untuk menyimpan file output dari contoh pipeline dsub
menggunakan gcloud CLI, jalankan perintah gcloud storage buckets create
:
gcloud storage buckets create gs://BUCKET_NAME \
--project PROJECT_ID
Ganti kode berikut:
BUCKET_NAME
: nama yang unik secara global untuk bucket Anda.PROJECT_ID
: project ID project Google Cloud Anda.
Outputnya mirip dengan hal berikut ini:
Creating gs://BUCKET_NAME/...
Menjalankan pipeline dsub
Pipeline dsub
sampel mengindeks file BAM dari 1.000 Genomes Project dan meng-output hasilnya ke bucket Cloud Storage.
Untuk menjalankan contoh pipeline dsub
, jalankan perintah dsub
berikut:
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
Ganti kode berikut:
PROJECT_ID
: project ID project Google Cloud Anda.BUCKET_NAME
: nama bucket Cloud Storage yang Anda buat.WORK_DIRECTORY
: nama untuk direktori baru yang dapat digunakan pipeline untuk menyimpan log dan output. Misalnya, masukkanworkDir
.
Pipeline dsub
menjalankan
tugas Batch yang menulis file
dan log BAI ke direktori yang ditentukan di bucket Cloud Storage Anda.
Secara khusus, repositori dsub
berisi image Docker
bawaan yang menggunakan samtools
untuk mengindeks
file BAM yang Anda tentukan dalam flag --input
.
Perintah tidak selesai hingga pipeline dsub
selesai berjalan,
yang mungkin bervariasi berdasarkan kapan tugas Batch dijadwalkan.
Biasanya, proses ini memerlukan waktu sekitar 10 menit: Batch biasanya mulai
menjalankan tugas dalam beberapa menit, dan runtime tugasnya sekitar 8 menit.
Pada awalnya, perintah masih berjalan dan output-nya mirip dengan berikut ini:
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.
Kemudian, setelah tugas berhasil diselesaikan, perintah akan berakhir dan outputnya mirip dengan berikut ini:
JOB_NAME: SUCCESS
JOB_NAME
Output ini mencakup nilai-nilai berikut:
JOB_NAME
: nama pekerjaan.USERNAME
: nama pengguna Google Cloud Anda.PROJECT_ID
: project ID project Google Cloud Anda.
Melihat file output
Untuk melihat file output yang dibuat oleh contoh pipeline dsub
menggunakan gcloud CLI, jalankan perintah gcloud storage ls
:
gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY \
--project PROJECT_ID
Ganti kode berikut:
BUCKET_NAME
: nama bucket Cloud Storage yang Anda buat.WORK_DIRECTORY
: direktori yang Anda tentukan dalam perintahdsub
.PROJECT_ID
: project ID project Google Cloud Anda.
Outputnya mirip dengan hal berikut ini:
gs://BUCKET_NAME/WORK_DIRECTORY/HG00114.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam.bai
gs://BUCKET_NAME/WORK_DIRECTORY/logs/
Output ini mencakup file BAI dan direktori yang berisi log tugas.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project saat ini.
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Jika ingin terus menggunakan project saat ini, hapus masing-masing resource yang digunakan dalam tutorial ini.
Menghapus bucket
Setelah selesai berjalan, pipeline akan membuat dan menyimpan file output di direktori WORK_DIRECTORY
bucket Cloud Storage Anda.
Untuk mengurangi biaya Cloud Storage ke akun Google Cloud saat ini, lakukan salah satu langkah berikut:
Jika Anda tidak lagi memerlukan bucket yang digunakan dalam tutorial ini, gunakan perintah
gcloud storage rm
dengan flag--recursive
untuk menghapus bucket dan semua kontennya:gcloud storage rm gs://BUCKET_NAME \ --recursive \ --project PROJECT_ID
Ganti kode berikut:
BUCKET_NAME
: nama bucket Cloud Storage yang Anda buat.PROJECT_ID
: project ID project Google Cloud Anda.
Atau, jika Anda masih memerlukan bucket, gunakan perintah
gcloud storage rm
dengan flag--recursive
untuk menghapus hanya direktoriWORK_DIRECTORY
dan semua kontennya:gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \ --recursive \ --project PROJECT_ID
Ganti kode berikut:
BUCKET_NAME
: nama bucket Cloud Storage yang Anda buat.WORK_DIRECTORY
: direktori yang Anda tentukan dalam perintahdsub
.PROJECT_ID
: project ID project Google Cloud Anda.
Menghapus tugas
Untuk menghapus tugas menggunakan gcloud CLI, jalankan perintah gcloud batch jobs delete
.
gcloud batch jobs delete JOB_NAME \
--location us-central1 \
--project PROJECT_ID
Ganti kode berikut:
JOB_NAME
: nama pekerjaan.PROJECT_ID
: project ID project Google Cloud Anda.
Langkah selanjutnya
- Pelajari
dsub
dandsub
untuk Batch lebih lanjut. - Pelajari lebih lanjut cara menggunakan volume penyimpanan dengan Batch.