Auf dieser Seite wird erläutert, wie Sie eine Nextflow-Pipeline in Google Cloud ausführen.
Die in dieser Anleitung verwendete Pipeline ist ein Proof of Concept für eine RNA-Seq-Pipeline, mit der die Nextflow-Nutzung in Google Cloud veranschaulicht werden soll.
Ziele
Nach Abschluss dieser Anleitung beherrschen Sie Folgendes:
- Installieren Sie Nextflow in Cloud Shell.
- Nextflow-Pipeline konfigurieren.
- Pipeline mit Nextflow in Google Cloud ausführen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
- Cloud Storage
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweise
- 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.
Cloud Storage-Bucket erstellen
Erstellen Sie einen eindeutig benannten Bucket. Folgen Sie dazu den Benennungsrichtlinien für Buckets. Der Bucket speichert während dieser Anleitung temporäre Arbeiten und Ausgabedateien. Aus Gründen der DNS-Kompatibilität funktioniert diese Anleitung nicht mit Bucket-Namen, die einen Unterstrich (_
) enthalten.
Console
Rufen Sie in der Google Cloud Console die Seite Cloud Storage-Browser auf:
Klicken Sie auf Bucket erstellen.
Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein.
Klicken Sie auf Erstellen.
gcloud
Öffnen Sie Cloud Shell:
Führen Sie den Befehl
gcloud storage buckets create
aus:gcloud storage buckets create gs://BUCKET_NAME
Ersetzen Sie BUCKET_NAME durch den Namen, den Sie Ihrem Bucket geben möchten. Beachten Sie dabei die Benennungsanforderungen. Beispiel:
my-bucket
Wenn die Anfrage erfolgreich ist, gibt der Befehl die folgende Meldung zurück:
Creating gs://BUCKET_NAME/...
Dienstkonto erstellen und Rollen hinzufügen
Führen Sie die folgenden Schritte aus, um ein Dienstkonto zu erstellen und die folgenden Rollen für die Identitäts- und Zugriffsverwaltung hinzuzufügen:
- Cloud Life Sciences-Workflows-Ausführer
- Dienstkontonutzer
- Service Usage-Nutzer
Storage-Objekt-Administrator
Console
So erstellen Sie ein Dienstkonto mit der Google Cloud Console:
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
Klicken Sie auf Dienstkonto erstellen.
Geben Sie im Feld Name des Dienstkontos den Wert
nextflow-service-account
ein und klicken Sie auf Erstellen.Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen aus der Drop-down-Liste Rolle auswählen hinzu:
- Cloud Life Sciences-Workflows-Ausführer
- Dienstkontonutzer
- Service Usage-Nutzer
- Storage-Objekt-Administrator
Klicken Sie auf Weiter und dann auf Fertig.
Suchen Sie auf der Seite Dienstkonten das von Ihnen erstellte Dienstkonto. Klicken Sie in der Zeile des Dienstkontos auf die und anschließend auf Schlüssel verwalten.
Klicken Sie auf der Seite Schlüssel auf Schlüssel hinzufügen und dann auf Neuen Schlüssel erstellen.
Wählen Sie als Schlüsseltyp JSON aus und klicken Sie auf Erstellen.
Eine JSON-Datei mit Ihrem Schlüssel wird auf Ihren Computer heruntergeladen.
gcloud
Führen Sie die folgenden Schritte mit Cloud Shell aus:
Cloud Shell öffnen
Legen Sie die Variablen fest, die beim Erstellen des Dienstkontos verwendet werden sollen. Ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID.
export PROJECT=PROJECT_ID export SERVICE_ACCOUNT_NAME=nextflow-service-account export SERVICE_ACCOUNT_ADDRESS=${SERVICE_ACCOUNT_NAME}@${PROJECT}.iam.gserviceaccount.com
Erstellen Sie das Dienstkonto.
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
Das Dienstkonto muss die folgenden IAM-Rollen enthalten:
roles/lifesciences.workflowsRunner
roles/iam.serviceAccountUser
roles/serviceusage.serviceUsageConsumer
roles/storage.objectAdmin
Weisen Sie diese Rollen durch Ausführen folgender Befehle in Cloud Shell zu:
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
Anmeldedaten für Ihre Anwendung bereitstellen
Sie können Anmeldedaten zur Authentifizierung für Ihren Anwendungscode oder Ihre Befehle angeben. Legen Sie hierfür die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
auf den Pfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält.
Folgende Schritte zeigen, wie Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS
festlegen:
Console
Cloud Shell öffnen
Wählen Sie im Cloud Shell-Menü Mehr
die Option Datei hochladen und dann die JSON-Schlüsseldatei aus, die Sie erstellt haben. Die Datei wird in das Basisverzeichnis der Cloud Shell-Instanz hochgeladen.Bestätigen Sie, dass sich die hochgeladene Datei in Ihrem aktuellen Verzeichnis befindet, und bestätigen Sie den Dateinamen. Führen Sie dafür den folgenden Befehl aus:
ls
Legen Sie die Anmeldedaten fest und ersetzen Sie dabei KEY_FILENAME.json durch den Namen Ihrer Schlüsseldatei.
export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/KEY_FILENAME.json
gcloud
Führen Sie die folgenden Schritte mit Cloud Shell aus:
Cloud Shell öffnen
Wählen Sie im Cloud Shell-Menü Mehr
die Option Datei hochladen und dann die JSON-Schlüsseldatei aus, die Sie erstellt haben. Die Datei wird in das Basisverzeichnis der Cloud Shell-Instanz hochgeladen.Bestätigen Sie, dass sich die hochgeladene Datei in Ihrem aktuellen Verzeichnis befindet, und bestätigen Sie den Dateinamen. Führen Sie dafür den folgenden Befehl aus:
ls
Legen Sie die Datei mit dem privaten Schlüssel auf die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
fest: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}
NextFlow in Cloud Shell installieren und konfigurieren
Damit Sie keine Software auf Ihrem Computer installieren müssen, führen Sie alle Terminalbefehle in dieser Anleitung in Cloud Shell aus.
Falls noch nicht geschehen, öffnen Sie Cloud Shell.
Führen Sie die folgenden Befehle aus, um Nextflow zu installieren:
export NXF_VER=21.10.0 export NXF_MODE=google curl https://get.nextflow.io | bash
Wenn die Installation erfolgreich abgeschlossen wurde, wird folgende Meldung angezeigt:
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
Führen Sie den folgenden Befehl aus, um das Beispiel-Pipeline-Repository zu klonen. Das Repository enthält die auszuführende Pipeline und die von der Pipeline verwendeten Beispieldaten.
git clone https://github.com/nextflow-io/rnaseq-nf.git
Zum Konfigurieren von Nextflow führen Sie folgende Schritte aus:
Wechseln Sie in den Ordner
rnaseq-nf
.cd rnaseq-nf git checkout v2.0
Bearbeiten Sie die Datei
nextflow.config
mit einem beliebigen Texteditor und führen Sie die folgenden Aktualisierungen in dem Abschnitt mit der Bezeichnunggls
aus:- Fügen Sie die Zeile
google.project
hinzu, falls es nicht vorhanden ist. - Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
- Ändern Sie bei Bedarf den Wert von
google.location
. Dieser muss einer der derzeit verfügbaren Cloud Life Sciences API-Standorte sein. - Ändern Sie bei Bedarf den Wert von
google.region
. Er gibt die Region an, in der die Compute Engine-VMs gestartet werden. Siehe verfügbare Compute Engine-Regionen und -Zonen. - Ersetzen Sie BUCKET durch den zuvor erstellten Bucket-Namen.
- Ersetzen Sie WORK_DIR durch den Namen des Ordners, der für Protokollierung und Ausgabe verwendet werden soll. Verwenden Sie einen neuen Verzeichnisnamen, der in Ihrem Bucket noch nicht vorhanden ist.
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' }
- Fügen Sie die Zeile
Wechseln Sie zurück zum vorherigen Ordner.
cd ..
Führen Sie die Pipeline mit Nextflow aus.
Führen Sie die Pipeline mit Nextflow aus. Nachdem die Pipeline gestartet wurde, wird sie bis zum Abschluss im Hintergrund ausgeführt. Es kann bis zu zehn Minuten dauern, bis die Pipeline abgeschlossen ist.
./nextflow run rnaseq-nf/main.nf -profile gls
Wenn die Pipeline abgeschlossen ist, wird folgende Meldung angezeigt:
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
Ausgabe der Nextflow-Pipeline anzeigen lassen
Nach Abschluss der Pipeline können Sie die Ausgabe und alle Logs, Fehler, ausgeführten Befehle und temporären Dateien prüfen.
Die Pipeline speichert die endgültige Ausgabedatei results/qc_report.html
im Cloud Storage-Bucket, den Sie in der Datei nextflow.config
angegeben haben.
Führen Sie folgende Schritte aus, um einzelne Ausgabedateien der einzelnen Aufgaben und Zwischendateien zu prüfen:
Console
Öffnen Sie in der Cloud Storage-Konsole die Seite Storage-Browser:
Rufen Sie BUCKET auf und gehen Sie zum WORK_DIR, das in der Datei
nextflow.config
angegeben ist.Für jede Aufgabe, die in der Pipeline ausgeführt wurde, gibt es einen Ordner.
Der Ordner enthält die ausgeführten Befehle, die Ausgabedateien und die temporären Dateien, die während des Workflows verwendet wurden.
gcloud
Öffnen Sie Cloud Shell, um die Ausgabedateien in Cloud Shell anzuzeigen:
Führen Sie den folgenden Befehl aus, um die Ausgaben in Ihrem Cloud Storage-Bucket aufzulisten. Aktualisieren Sie BUCKET und WORK_DIR in die in der Datei
nextflow.config
angegebenen Variablen.gcloud storage ls gs://BUCKET/WORK_DIR
In der Ausgabe wird für jede ausgeführte Aufgabe ein Ordner angezeigt. Listen Sie auch den Inhalt der nachfolgenden Unterverzeichnisse auf, damit Sie alle von der Pipeline erstellten Dateien sehen können. Aktualisieren Sie TASK_FOLDER, einen der Aufgabenordner, die aus dem vorherigen Befehl aufgelistet wurden.
gcloud storage ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER
Sie können sich die Zwischendateien ansehen, die von der Pipeline erstellt wurden, und entscheiden, welche Sie behalten möchten. Alternativ können Sie die Dateien entfernen, um die mit Cloud Storage verbundenen Kosten zu reduzieren. Informationen zum Entfernen der Dateien finden Sie unter Zwischendateien in einem Cloud Storage-Bucket entfernen.
Fehlerbehebung
Informationen zu Problemen beim Ausführen der Pipeline finden Sie unter Cloud Life Sciences API – Fehlerbehebung.
Wenn Ihre Pipeline nicht erfolgreich ausgeführt werden konnte, können Sie die Logs der jeweiligen Aufgaben überprüfen. Sehen Sie sich hierzu die Logdateien in den einzelnen Ordnern in Cloud Storage an, z. B.
.command.err
,.command.log
,.command.out
und so weiter.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr verwenden und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Zwischendateien im Cloud Storage-Bucket löschen
Die Pipeline speichert während der Ausführung Zwischendateien in gs://BUCKET/WORK_DIR
. Sie können die Dateien nach Abschluss des Workflows entfernen, um die Kosten für Cloud Storage zu reduzieren.
Führen Sie folgenden Befehl aus, um den im Verzeichnis verwendeten Speicherplatz anzuzeigen:
gcloud storage du gs://BUCKET/WORK_DIR --readable-sizes --summarize
Führen Sie die folgenden Schritte aus, um Dateien aus WORK_DIR zu entfernen:
Console
Öffnen Sie in der Cloud Storage-Konsole die Seite Storage-Browser:
Rufen Sie BUCKET auf und gehen Sie zum WORK_DIR, das in der Datei
nextflow.config
angegeben ist.Durchsuchen Sie die Unterordner und löschen Sie alle nicht benötigten Dateien oder Verzeichnisse. Wenn Sie alle Dateien löschen möchten, löschen Sie das gesamte WORK_DIR.
gcloud
Öffnen Sie Cloud Shell und führen Sie Folgendes aus:
Führen Sie folgenden Befehl aus, um die Zwischendateien im Verzeichnis WORK_DIR zu entfernen:
gcloud storage rm gs://BUCKET/WORK_DIR/**
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.
So löschen Sie das Projekt:
- 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.
Nächste Schritte
Auf den folgenden Seiten finden Sie weitere Hintergrundinformationen, Dokumentationen und Unterstützung zur Verwendung von Nextflow: