Jobs durch Ausführen von Nextflow-Pipelines in Batch orchestrieren


In dieser Anleitung wird erläutert, wie Sie eine Nextflow-Pipeline in Batch ausführen. In dieser Anleitung wird insbesondere eine Beispielpipeline für Biowissenschaften ausgeführt, die mithilfe von RNA-Seq genomische Merkmale aus kurzen Lesedaten quantifiziert.

Diese Anleitung richtet sich an Batch-Nutzer, die Nextflow mit Batch verwenden möchten.

Nextflow ist eine Open-Source-Software zur Orchestrierung von Workflows im Bereich Bioinformatik.

Lernziele

In dieser Anleitung lernen Sie Folgendes:

  • Installieren Sie Nextflow in Cloud Shell.
  • Cloud Storage-Bucket erstellen
  • Nextflow-Pipeline konfigurieren.
  • Führen Sie mit Nextflow in Batch eine Beispielpipeline aus.
  • Sehen Sie sich die Ausgaben der Pipeline an.
  • Führen Sie eine Bereinigung durch, um zusätzliche Gebühren zu vermeiden. Führen Sie dazu einen der folgenden Schritte aus:
    • Ein Projekt löschen
    • Einzelne Ressourcen löschen.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

  • Batch
  • Cloud Storage

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Die in dieser Anleitung erstellten Ressourcen kosten in der Regel weniger als einen Dollar, vorausgesetzt, Sie führen alle Schritte – einschließlich der Bereinigung – rechtzeitig durch.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.
  3. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  4. Google Cloud-Projekt erstellen oder auswählen.

    • Erstellen Sie ein Google Cloud-Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud-Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Aktivieren Sie die Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Installieren Sie die Google Cloud CLI.
  8. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  9. Google Cloud-Projekt erstellen oder auswählen.

    • Erstellen Sie ein Google Cloud-Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud-Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

  10. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  11. Aktivieren Sie die Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. Achten Sie darauf, dass Ihr Projekt mindestens ein Dienstkonto mit den für diese Anleitung erforderlichen Berechtigungen hat.

    Für jeden Job ist ein Dienstkonto erforderlich, mit dem der Batch-Dienst-Agent die zum Ausführen des Jobs erforderlichen Ressourcen erstellen und darauf zugreifen kann. In dieser Anleitung ist das Dienstkonto des Jobs das Compute Engine-Standarddienstkonto.

    Bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto die folgenden IAM-Rollen zu gewähren, damit das Compute Engine-Standarddienstkonto die erforderlichen Berechtigungen hat, damit der Batch-Dienst-Agent Ressourcen für Batch-Jobs erstellen und darauf zugreifen kann:

    • Batch Agent Reporter (roles/batch.agentReporter) für das Projekt
    • Storage Admin (roles/storage.admin) für das Projekt
    • (Empfohlen) Lassen Sie Jobs Logs in Cloud Logging generieren: Logautor (roles/logging.logWriter) für das Projekt

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Möglicherweise kann Ihr Administrator dem Compute Engine-Standarddienstkonto auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen die erforderlichen Berechtigungen erteilen.

  13. Prüfen Sie, ob Sie die für diese Anleitung erforderlichen Berechtigungen haben.

    Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Ausführen dieser Anleitung benötigen:

  14. Installieren Sie Nextflow:

    curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
    

    Die Ausgabe sollte in etwa so aussehen:

    N E X T F L O W
    version 23.04.1 build 5866
    created 15-04-2023 06:51 UTC
    cite doi:10.1038/nbt.3820
    http://nextflow.io
    
    Nextflow installation completed. Please note:
    - the executable file `nextflow` has been created in the folder: ...
    - you may complete the installation by moving it to a directory in your $PATH
    

Cloud Storage-Bucket erstellen

Verwenden Sie die Google Cloud Console oder die Befehlszeile, um einen Cloud Storage-Bucket zum Speichern temporärer Arbeits- und Ausgabedateien aus der Nextflow-Pipeline zu erstellen.

Console

So erstellen Sie einen Cloud Storage-Bucket mit der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Buckets auf.

    Buckets aufrufen

  2. Klicken Sie auf Erstellen.

  3. Geben Sie auf der Seite Bucket erstellen einen global eindeutigen Namen für den Bucket ein.

  4. Klicken Sie auf Erstellen.

  5. Klicken Sie im Fenster Öffentlicher Zugriff wird verhindert auf Bestätigen.

Befehlszeile

gcloud

Verwenden Sie zum Erstellen eines Cloud Storage-Bucket mit der Google Cloud CLI den Befehl gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Ersetzen Sie BUCKET_NAME durch einen global eindeutigen Namen für den Bucket.

Wenn die Anfrage erfolgreich ist, sollte die Ausgabe in etwa so aussehen:

Creating gs://BUCKET_NAME/...

gsutil

Verwenden Sie zum Erstellen eines Cloud Storage-Bucket mit dem gsutil-Tool den Befehl gsutil mb.

gsutil mb gs://BUCKET_NAME

Ersetzen Sie BUCKET_NAME durch einen global eindeutigen Namen für den Bucket.

Wenn die Anfrage erfolgreich ist, sollte die Ausgabe in etwa so aussehen:

Creating gs://BUCKET_NAME/...

Nextflow konfigurieren

Führen Sie die folgenden Schritte in der Befehlszeile aus, um die Nextflow-Pipeline für die Ausführung in Batch zu konfigurieren:

  1. Klonen Sie das Beispiel-Pipeline-Repository:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Wechseln Sie zum Ordner rnaseq-nf:

    cd rnaseq-nf
    
  3. Öffnen Sie die Datei nextflow.config.

    nano nextflow.config
    

    Die Datei sollte den folgenden Abschnitt enthalten:

    gcb {
      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-batch'
      process.container = 'quay.io/nextflow/rnaseq-nf:v1.1'
      workDir = 'gs://BUCKET_NAME/WORK_DIRECTORY'
      google.region  = 'us-central1'
    }
    ...
    
  4. Führen Sie im Abschnitt gcb die folgenden Schritte aus:

    1. Ersetzen Sie BUCKET_NAME durch den Namen des Cloud Storage-Bucket, den Sie in den vorherigen Schritten erstellt haben.

    2. Ersetzen Sie WORK_DIRECTORY durch den Namen eines neuen Ordners, in dem die Pipeline Logs und Ausgaben speichern kann.

      Geben Sie beispielsweise workDir ein.

    3. Fügen Sie nach dem Feld google.region die Zeile google.project = 'PROJECT_ID' ein, wobei PROJECT_ID die Projekt-ID des aktuellen Google Cloud-Projekts ist.

  5. So speichern Sie Ihre Änderungen:

    1. Drücken Sie Control+S.

    2. Geben Sie Y ein.

    3. Drücken Sie Enter.

Pipeline ausführen

Führen Sie die Nextflow-Beispielpipeline über die Befehlszeile aus:

../nextflow run nextflow-io/rnaseq-nf -profile gcb

Die Pipeline führt ein kleines Dataset mit den Einstellungen aus, die Sie in den vorherigen Schritten festgelegt haben. Dieser Vorgang kann bis zu 10 Minuten dauern.

Nachdem die Pipeline ausgeführt wurde, sollte die Ausgabe in etwa so aussehen:

N E X T F L O W  ~  version 23.04.1
Launching `https://github.com/nextflow-io/rnaseq-nf` [crazy_curry] DSL2 - revision: 88b8ef803a [master]
 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

Uploading local `bin` scripts folder to gs://example-bucket/workdir/tmp/53/2847f2b832456a88a8e4cd44eec00a/bin
executor >  google-batch (4)
[67/71b856] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[0c/2c79c6] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[a9/571723] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/1f0dd4] process > MULTIQC                       [100%] 1 of 1 ✔

Done! Open the following report in your browser --> results/multiqc_report.html

Completed at: 20-Apr-2023 15:44:55
Duration    : 10m 13s
CPU hours   : (a few seconds)
Succeeded   : 4

Ausgaben der Pipeline ansehen

Nachdem die Pipeline ausgeführt wurde, werden Ausgabedateien, Logs, Fehler oder temporäre Dateien in der Datei results/qc_report.html im Ordner WORK_DIRECTORY Ihres Cloud Storage-Buckets gespeichert.

Zum Prüfen der Ausgabedateien der Pipeline im Ordner WORK_DIRECTORY Ihres Cloud Storage-Buckets können Sie die Google Cloud Console oder die Befehlszeile verwenden.

Console

So prüfen Sie die Ausgabedateien der Pipeline mit der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Buckets auf.

    Buckets aufrufen

  2. Klicken Sie in der Spalte Name auf den Namen des Buckets, den Sie in den vorherigen Schritten erstellt haben.

  3. Öffnen Sie auf der Seite Bucket-Details den Ordner WORK_DIRECTORY.

Für jede einzelne Aufgabe, die im Workflow ausgeführt wird, gibt es einen Ordner. Jeder Ordner enthält die ausgeführten Befehle, Ausgabedateien und die von der Pipeline erstellten temporären Dateien.

Befehlszeile

gcloud

Verwenden Sie den Befehl gcloud storage ls, um die Ausgabedateien der Pipeline mit der gcloud CLI zu prüfen.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

Ersetzen Sie Folgendes:

  • BUCKET_NAME ist der Name des Buckets, den Sie in den vorherigen Schritten erstellt haben.

  • WORK_DIRECTORY: das Verzeichnis, das Sie in der Datei nextflow.config angegeben haben.

Die Ausgabe listet einen Ordner für jede separate Aufgabe auf, die von der Pipeline ausgeführt wird. Jeder Ordner enthält die ausgeführten Befehle, die Ausgabedateien und die von der Pipeline erstellten temporären Dateien.

gsutil

Verwenden Sie den Befehl gsutil ls, um die Ausgabedateien der Pipeline mit dem gsutil-Tool zu prüfen.

gsutil ls gs://BUCKET_NAME/WORK_DIRECTORY

Ersetzen Sie Folgendes:

  • BUCKET_NAME ist der Name des Buckets, den Sie in den vorherigen Schritten erstellt haben.

  • WORK_DIRECTORY: das Verzeichnis, das Sie in der Datei nextflow.config angegeben haben.

Die Ausgabe listet einen Ordner für jede separate Aufgabe auf, die von der Pipeline ausgeführt wird. Jeder Ordner enthält die ausgeführten Befehle, die Ausgabedateien und die von der Pipeline erstellten temporären Dateien.

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.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des aktuellen Projekts.

Verwenden Sie zum Löschen des aktuellen Projekts die Google Cloud Console oder die gcloud CLI.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

gcloud

    Google Cloud-Projekt löschen:

    gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Wenn Sie das aktuelle Projekt weiterhin verwenden möchten, löschen Sie die einzelnen in dieser Anleitung verwendeten Ressourcen.

Bucket löschen

Wenn Sie den in dieser Anleitung verwendeten Bucket nicht mehr benötigen, löschen Sie den Bucket.

Ausgabedateien im Bucket löschen

Nachdem die Pipeline ausgeführt wurde, werden Ausgabedateien erstellt und im Ordner WORK_DIRECTORY Ihres Cloud Storage-Buckets gespeichert.

Um die Cloud Storage-Gebühren für das aktuelle Google Cloud-Konto zu reduzieren, können Sie den Ordner mit den Ausgabedateien der Pipeline über die Google Cloud Console oder die Befehlszeile löschen.

Console

So löschen Sie den Ordner WORK_DIRECTORY und alle Ausgabedateien aus Ihrem Cloud Storage-Bucket mithilfe der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Buckets auf.

    Buckets aufrufen

  2. Klicken Sie in der Spalte Name auf den Namen des Buckets, den Sie in den vorherigen Schritten erstellt haben.

  3. Wählen Sie auf der Seite Bucket-Details die Zeile mit dem Ordner WORK_DIRECTORY aus und gehen Sie dann so vor:

    1. Klicken Sie auf Löschen.

    2. Geben Sie zur Bestätigung DELETE ein und klicken Sie dann auf Löschen.

Befehlszeile

gcloud

Zum Löschen des Ordners WORK_DIRECTORY und aller Ausgabedateien aus Ihrem Cloud Storage-Bucket mithilfe der gcloud CLI verwenden Sie den Befehl gcloud storage rm mit dem Flag --recursive.

gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
    --recursive

Ersetzen Sie Folgendes:

  • BUCKET_NAME: der Name des Buckets, den Sie in den vorherigen Schritten angegeben haben.

  • WORK_DIRECTORY: das Verzeichnis zum Speichern der Pipeline-Ausgabedateien, die Sie in den vorherigen Schritten angegeben haben.

gsutil

Zum Löschen des Ordners WORK_DIRECTORY und aller Ausgabedateien aus Ihrem Cloud Storage-Bucket mit dem gsutil-Tool verwenden Sie den Befehl gsutil rm mit den Optionen -m und -r.

gsutil -m rm -r gs://BUCKET_NAME/WORK_DIRECTORY

Ersetzen Sie Folgendes:

  • BUCKET_NAME: der Name des Buckets, den Sie in den vorherigen Schritten angegeben haben.

  • WORK_DIRECTORY: das Verzeichnis zum Speichern der Pipeline-Ausgabedateien, die Sie in den vorherigen Schritten angegeben haben.

Nächste Schritte