Halaman ini menjelaskan cara menjalankan pipeline Nextflow di Google Cloud.
Pipeline yang digunakan dalam tutorial ini adalah bukti konsep pipeline RNA-Seq yang dimaksudkan untuk menunjukkan penggunaan Nextflow di Google Cloud.
Tujuan
Setelah menyelesaikan tutorial ini, Anda akan tahu cara melakukan hal berikut:
- Instal Nextflow di Cloud Shell.
- Konfigurasikan pipeline Nextflow.
- Menjalankan pipeline menggunakan Nextflow di Google Cloud.
Biaya
Dalam dokumen ini, Anda akan 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
Membuat bucket Cloud Storage
Buat bucket dengan nama unik dengan mengikuti panduan dalam panduan penamaan bucket. Bucket menyimpan file kerja dan output sementara
sepanjang 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.
gcloud
Buka Cloud Shell:
Gunakan perintah
gcloud storage buckets create
:gcloud storage buckets create gs://BUCKET_NAME
Ganti BUCKET_NAME dengan nama yang ingin Anda berikan pada 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 menambahkan 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 Nama akun layanan, masukkan
nextflow-service-account
, lalu klik Buat.Di bagian Berikan akses project ke akun layanan ini, 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 , lalu klik Kelola kunci. tombol
Di halaman Keys, klik Add key, lalu klik Create new key.
Pilih JSON untuk Jenis kunci, lalu klik Create.
File JSON yang berisi kunci Anda akan 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
Memberikan 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-langkah berikut menunjukkan cara menetapkan variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
:
Konsol
Buka Cloud Shell.
Dari menu Cloud Shell Lainnya
, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File tersebut diupload ke direktori utama instance Cloud Shell Anda.Pastikan file yang diupload berada 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 Cloud Shell Lainnya
, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File tersebut diupload ke direktori utama instance Cloud Shell Anda.Pastikan file yang diupload berada di direktori saat ini dan konfirmasi nama file dengan menjalankan perintah berikut:
ls
Tetapkan 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, 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 selesai, pesan berikut akan ditampilkan:
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 sampel yang digunakan 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 pembaruan berikut pada bagian berlabelgls
:- Tambahkan baris
google.project
jika tidak ada. - Ganti PROJECT_ID dengan project ID Anda.
- Jika diinginkan, ubah nilai
google.location
. Region ini harus merupakan salah satu dari 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
Beralih kembali ke folder sebelumnya
cd ..
Menjalankan pipeline dengan Nextflow
Jalankan pipeline dengan Nextflow. Setelah dimulai, pipeline akan terus berjalan di latar belakang hingga selesai. Mungkin perlu waktu hingga 10 menit untuk menyelesaikan pipeline.
./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
Melihat output pipeline Nextflow
Setelah pipeline selesai, Anda dapat memeriksa output dan log, error, perintah yang dijalankan, dan file sementara.
Pipeline menyimpan file output akhir, results/qc_report.html
, ke bucket Cloud Storage yang Anda tentukan dalam file nextflow.config
.
Untuk memeriksa setiap 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 terlebih dahulu Cloud Shell:
Jalankan perintah berikut untuk membuat daftar output di bucket Cloud Storage Anda. Perbarui BUCKET dan WORK_DIR ke variabel yang ditentukan dalam file
nextflow.config
.gcloud storage 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.
gcloud storage ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER
Anda dapat melihat file perantara yang dibuat oleh pipeline dan memilih file mana 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 gagal, Anda dapat memeriksa log untuk setiap tugas dengan melihat file log di setiap folder di Cloud Storage, seperti
.command.err
,.command.log
,.command.out
, dan sebagainya.
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, pipeline akan menyimpan file perantara di
gs://BUCKET/WORK_DIR
. Anda dapat menghapus file setelah alur kerja selesai untuk mengurangi biaya Cloud Storage.
Untuk melihat jumlah ruang yang digunakan di direktori, jalankan perintah berikut:
gcloud storage du gs://BUCKET/WORK_DIR --readable-sizes --summarize
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 di direktori WORK_DIR, jalankan perintah berikut:
gcloud storage rm gs://BUCKET/WORK_DIR/**
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah selanjutnya
Halaman berikut memberikan informasi latar belakang, dokumentasi, dan dukungan selengkapnya untuk menggunakan Nextflow: