Halaman ini menjelaskan cara menjalankan pipeline Nextflow di Google Cloud.
Pipeline yang digunakan dalam tutorial ini merupakan bukti konsep pipeline RNA-Seq yang dimaksudkan untuk menampilkan penggunaan Nextflow di Google Cloud.
Tujuan
Setelah menyelesaikan tutorial ini, Anda akan mengetahui cara melakukan yang berikut:
- Instal Nextflow di Cloud Shell.
- Mengonfigurasi pipeline Nextflow.
- Jalankan pipeline menggunakan Nextflow di Google Cloud.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine
- Cloud Storage
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Life Sciences, Compute Engine, and Cloud Storage.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Life Sciences, Compute Engine, and Cloud Storage.
Membuat bucket Cloud Storage
Buat bucket dengan nama unik dengan mengikuti panduan dalam panduan penamaan bucket. Bucket ini menyimpan file pekerjaan dan output sementara selama tutorial ini. Untuk kompatibilitas DNS, tutorial ini tidak berfungsi dengan nama bucket yang berisi garis bawah (_
).
Konsol
Di konsol Google Cloud, buka halaman Browser Cloud Storage:
Klik Create bucket.
Di halaman Buat bucket, masukkan informasi bucket Anda.
Klik Create.
gsutil
Buka Cloud Shell:
Gunakan perintah
gsutil mb
:gsutil mb gs://BUCKET_NAME
Ganti BUCKET_NAME dengan nama yang ingin Anda berikan untuk bucket, sesuai dengan persyaratan penamaan. Misalnya,
my-bucket
.Jika permintaan berhasil, perintah akan menampilkan pesan berikut ini:
Creating gs://BUCKET_NAME/...
Membuat akun layanan dan menambahkan peran
Selesaikan langkah-langkah berikut untuk membuat akun layanan dan tambahkan peran Identity and Access Management berikut:
- Cloud Life Sciences Workflows Runner
- Service Account User
- Service Usage Consumer
Storage Object Admin
Konsol
Buat akun layanan menggunakan Konsol Google Cloud:
Di konsol Google Cloud, buka halaman Akun Layanan.
Klik Create service account.
Di kolom Service account name, masukkan
nextflow-service-account
, lalu klik Create.Di bagian Grant this service account access to project, tambahkan peran berikut dari menu drop-down Select a role:
- Cloud Life Sciences Workflows Runner
- Service Account User
- Service Usage Consumer
- Storage Object Admin
Klik Lanjutkan lalu klik Selesai.
Di halaman Akun Layanan, temukan akun layanan yang Anda buat. Di baris akun layanan, klik tombol , lalu klik Manage keys.
Di halaman Keys, klik Add key, lalu klik Create new key.
Pilih JSON untuk Jenis kunci dan klik Buat.
File JSON yang berisi kunci Anda didownload ke komputer Anda.
gcloud
Selesaikan langkah-langkah berikut menggunakan Cloud Shell:
Buka Cloud Shell.
Tetapkan variabel yang akan digunakan dalam membuat akun layanan, dengan mengganti PROJECT_ID dengan project ID Anda.
export PROJECT=PROJECT_ID export SERVICE_ACCOUNT_NAME=nextflow-service-account export SERVICE_ACCOUNT_ADDRESS=${SERVICE_ACCOUNT_NAME}@${PROJECT}.iam.gserviceaccount.com
Buat akun layanan.
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
Akun layanan memerlukan peran IAM berikut:
roles/lifesciences.workflowsRunner
roles/iam.serviceAccountUser
roles/serviceusage.serviceUsageConsumer
roles/storage.objectAdmin
Berikan peran ini dengan menjalankan perintah berikut di Cloud Shell:
gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/lifesciences.workflowsRunner gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/iam.serviceAccountUser gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/serviceusage.serviceUsageConsumer gcloud projects add-iam-policy-binding ${PROJECT} \ --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \ --role roles/storage.objectAdmin
Berikan kredensial ke aplikasi Anda
Anda dapat memberikan kredensial autentikasi ke kode atau perintah aplikasi dengan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
ke jalur file JSON yang berisi kunci akun layanan Anda.
Langkah berikut menunjukkan cara menetapkan
variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
:
Konsol
Buka Cloud Shell.
Dari menu More
Cloud Shell, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File akan diupload ke direktori beranda instance Cloud Shell Anda.Pastikan file yang diupload ada di direktori saat ini dan konfirmasi nama file dengan menjalankan perintah berikut:
ls
Tetapkan kredensial, dengan mengganti KEY_FILENAME.json dengan nama file kunci Anda.
export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/KEY_FILENAME.json
gcloud
Selesaikan langkah-langkah berikut menggunakan Cloud Shell:
Buka Cloud Shell.
Dari menu More
Cloud Shell, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File akan diupload ke direktori beranda instance Cloud Shell Anda.Pastikan file yang diupload ada di direktori saat ini dan konfirmasi nama file dengan menjalankan perintah berikut:
ls
Setel file kunci pribadi ke variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
:export SERVICE_ACCOUNT_KEY=${SERVICE_ACCOUNT_NAME}-private-key.json gcloud iam service-accounts keys create \ --iam-account=${SERVICE_ACCOUNT_ADDRESS} \ --key-file-type=json ${SERVICE_ACCOUNT_KEY} export SERVICE_ACCOUNT_KEY_FILE=${PWD}/${SERVICE_ACCOUNT_KEY} export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${SERVICE_ACCOUNT_KEY}
Menginstal dan mengonfigurasi Nextflow di Cloud Shell
Agar tidak perlu menginstal software apa pun di komputer Anda, terus jalankan semua perintah terminal dalam tutorial ini dari Cloud Shell.
Jika belum terbuka, buka Cloud Shell.
Instal Nextflow dengan menjalankan perintah berikut:
export NXF_VER=21.10.0 export NXF_MODE=google curl https://get.nextflow.io | bash
Jika penginstalan berhasil, pesan berikut akan muncul:
N E X T F L O W version 21.10.0 build 5430 created 01-11-2020 15:14 UTC (10:14 EDT) cite doi:10.1038/nbt.3820 http://nextflow.io Nextflow installation completed. Please note: ‐ the executable file `nextflow` has been created in the folder: DIRECTORY ‐ you may complete the installation by moving it to a directory in your $PATH
Jalankan perintah berikut untuk meng-clone repositori pipeline contoh. Repositori mencakup pipeline yang akan dijalankan dan data contoh yang digunakan oleh pipeline.
git clone https://github.com/nextflow-io/rnaseq-nf.git
Selesaikan langkah-langkah berikut untuk mengonfigurasi Nextflow:
Ubah ke folder
rnaseq-nf
.cd rnaseq-nf git checkout v2.0
Dengan menggunakan editor teks pilihan Anda, edit file bernama
nextflow.config
dan lakukan perubahan berikut pada bagian yang berlabelgls
:- Tambahkan baris
google.project
jika tidak ada. - Ganti PROJECT_ID dengan project ID Anda.
- Jika diinginkan, ubah nilai
google.location
. Nama ini harus berupa salah satu lokasi Cloud Life Sciences API yang saat ini tersedia. - Jika diinginkan, ubah nilai
google.region
yang menentukan region tempat VM Compute Engine diluncurkan. Lihat Region dan Zona Compute Engine yang tersedia. - Ganti BUCKET dengan nama bucket yang dibuat sebelumnya.
- Ganti WORK_DIR dengan nama folder yang akan digunakan untuk logging dan output. Gunakan nama direktori baru yang belum ada di bucket Anda.
gls { params.transcriptome = 'gs://rnaseq-nf/data/ggal/transcript.fa' params.reads = 'gs://rnaseq-nf/data/ggal/gut_{1,2}.fq' params.multiqc = 'gs://rnaseq-nf/multiqc' process.executor = 'google-lifesciences' process.container = 'nextflow/rnaseq-nf:latest' workDir = 'gs://BUCKET/WORK_DIR' google.location = 'europe-west2' google.region = 'europe-west1' google.project = 'PROJECT_ID' }
- Tambahkan baris
Ubah kembali ke folder sebelumnya
cd ..
Menjalankan pipeline dengan Nextflow
Menjalankan pipeline dengan Nextflow. Setelah memulai pipeline, pipeline akan terus berjalan di latar belakang hingga selesai. Mungkin diperlukan waktu hingga 10 menit hingga pipeline selesai.
./nextflow run rnaseq-nf/main.nf -profile gls
Setelah pipeline selesai, pesan berikut akan ditampilkan:
N E X T F L O W ~ version 21.10.0 Launching `rnaseq-nf/main.nf` [suspicious_mestorf] - revision: ef908c0bfd R N A S E Q - N F P I P E L I N E =================================== transcriptome: gs://rnaseq-nf/data/ggal/transcript.fa reads : gs://rnaseq-nf/data/ggal/gut_{1,2}.fq outdir : results executor > google-lifesciences (4) [db/2af640] process > RNASEQ:INDEX (transcript) [100%] 1 of 1 ✔ [a6/927725] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔ [59/438177] process > RNASEQ:QUANT (gut) [100%] 1 of 1 ✔ [9a/9743b9] process > MULTIQC [100%] 1 of 1 ✔ Done! Open the following report in your browser --> results/multiqc_report.html Completed at: DATE TIME Duration : 10m CPU hours : 0.2 Succeeded : 4
Menampilkan output pipeline Nextflow
Setelah pipeline selesai, Anda dapat memeriksa output dan semua log, error, perintah yang berjalan, dan file sementara.
Pipeline menyimpan file output akhir, results/qc_report.html
, ke bucket Cloud Storage yang Anda tentukan di file nextflow.config
.
Untuk memeriksa masing-masing file output dari setiap tugas dan file perantara, selesaikan langkah-langkah berikut:
Konsol
Di konsol Cloud Storage, buka halaman Storage Browser:
Buka BUCKET dan cari WORK_DIR yang ditentukan dalam file
nextflow.config
.Ada folder untuk setiap tugas terpisah yang dijalankan di pipeline.
Folder ini berisi perintah yang dijalankan, file output, dan file sementara yang digunakan selama alur kerja.
gcloud
Untuk melihat file output di Cloud Shell, buka Cloud Shell terlebih dahulu:
Jalankan perintah berikut untuk menampilkan output di bucket Cloud Storage Anda. Update BUCKET dan WORK_DIR ke variabel yang ditentukan dalam file
nextflow.config
.gsutil ls gs://BUCKET/WORK_DIR
Output menampilkan folder untuk setiap tugas yang dijalankan. Lanjutkan untuk mencantumkan konten subdirektori berikutnya untuk melihat semua file yang dibuat oleh pipeline. Perbarui TASK_FOLDER salah satu folder tugas yang tercantum dari perintah sebelumnya.
gsutil ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER
Anda dapat melihat file perantara yang dibuat oleh pipeline dan memilih file yang ingin disimpan, atau menghapusnya untuk mengurangi biaya yang terkait dengan Cloud Storage. Untuk menghapus file, lihat Menghapus file perantara di bucket Cloud Storage.
Pemecahan masalah
Jika Anda mengalami masalah saat menjalankan pipeline, lihat Pemecahan masalah Cloud Life Sciences API.
Jika pipeline Anda gagal, Anda dapat memeriksa log untuk setiap tugas dengan melihat file log di setiap folder dalam Cloud Storage, seperti
.command.err
,.command.log
,.command.out
, dan seterusnya.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus resource satu per satu.
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan menimbulkan biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus file perantara di bucket Cloud Storage
Saat Anda menjalankan pipeline, file perantara akan disimpan dalam
gs://BUCKET/WORK_DIR
. Anda dapat menghapus file setelah alur kerja selesai untuk mengurangi biaya Cloud Storage.
Untuk melihat jumlah ruang yang digunakan dalam direktori, jalankan perintah berikut:
gsutil du -sh gs://BUCKET/WORK_DIR
Untuk menghapus file dari WORK_DIR, selesaikan langkah-langkah berikut:
Konsol
Di konsol Cloud Storage, buka halaman Storage Browser:
Buka BUCKET dan cari WORK_DIR yang ditentukan dalam file
nextflow.config
.Jelajahi subfolder dan hapus file atau direktori yang tidak diinginkan. Untuk menghapus semua file, hapus seluruh WORK_DIR.
gcloud
Buka Cloud Shell dan jalankan perintah berikut:
Untuk menghapus file perantara dalam direktori WORK_DIR, jalankan perintah berikut:
gsutil -m rm gs://BUCKET/WORK_DIR/**
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
Halaman berikut memberikan lebih banyak informasi latar belakang, dokumentasi, dan dukungan untuk menggunakan Nextflow: