Dataproc-Treiberknotengruppen

Überblick

Eine Dataproc-Ressource NodeGroup ist eine Gruppe von Dataproc-Clusterknoten, die eine zugewiesene Rolle ausführen. Auf dieser Seite wird die Treiberknotengruppe beschrieben. Dabei handelt es sich um eine Gruppe von Compute Engine-VMs, denen die Rolle Driver zugewiesen ist, um Jobtreiber im Dataproc-Cluster auszuführen.

Wann werden Treiberknotengruppen verwendet?

  • Verwenden Sie Treiberknotengruppen nur, wenn Sie viele Jobs gleichzeitig in einem freigegebenen Cluster ausführen müssen.
  • Erhöhen Sie die Masterknotenressourcen, bevor Sie Treiberknotengruppen verwenden, um Einschränkungen für Treiberknotengruppen zu vermeiden.

So können Sie mit Treiberknoten gleichzeitig Jobs ausführen

Dataproc startet für jeden Job einen Jobtreiberprozess auf einem Dataproc-Clustermasterknoten. Der Treiberprozess wiederum führt einen Anwendungstreiber wie spark-submit als untergeordneten Prozess aus. Die Anzahl der gleichzeitig auf dem Master ausgeführten Jobs ist jedoch durch die auf dem Masterknoten verfügbaren Ressourcen begrenzt. Da Dataproc-Masterknoten nicht skaliert werden können, kann ein Job fehlschlagen oder gedrosselt werden, wenn die Masterknotenressourcen zum Ausführen eines Jobs nicht ausreichen.

Treiberknotengruppen sind spezielle Knotengruppen, die von YARN verwaltet werden, sodass die Nebenläufigkeit von Jobs nicht durch Master-Knotenressourcen begrenzt wird. In Clustern mit einer Treiberknotengruppe werden Anwendungstreiber auf Treiberknoten ausgeführt. Jeder Treiberknoten kann mehrere Anwendungstreiber ausführen, wenn der Knoten genügend Ressourcen hat.

Vorteile

Wenn Sie einen Dataproc-Cluster mit einer Treiberknotengruppe verwenden, können Sie:

  • Jobtreiberressourcen horizontal skalieren, um mehr gleichzeitige Jobs auszuführen
  • Treiberressourcen getrennt von Worker-Ressourcen skalieren
  • Schnelleres Herunterskalieren von Image-Clustern mit Dataproc 2.0 und höher Auf diesen Clustern wird der Anwendungsmaster innerhalb eines Spark-Treibers in einer Treiberknotengruppe ausgeführt (spark.yarn.unmanagedAM.enabled ist standardmäßig auf true gesetzt).
  • Start von Treiberknoten anpassen. Sie können einem Initialisierungsskript {ROLE} == 'Driver' hinzufügen, damit das Skript Aktionen für eine Treiberknotengruppe in der Knotenauswahl ausführt.

Beschränkungen

  • Knotengruppen werden in Dataproc-Workflow-Vorlagen nicht unterstützt.
  • Cluster der Knotengruppe können nicht beendet, neu gestartet oder automatisch skaliert werden.
  • Der MapReduce-Anwendungsmaster wird auf Worker-Knoten ausgeführt. Das Herunterskalieren von Worker-Knoten kann langsam sein, wenn Sie die ordnungsgemäße Außerbetriebnahme aktivieren.
  • Die Nebenläufigkeit von Jobs wird durch das Clusterattribut dataproc:agent.process.threads.job.max beeinflusst. Wenn beispielsweise drei Master und dieses Attribut auf den Standardwert 100 gesetzt ist, beträgt die maximale Nebenläufigkeit von Jobs auf Clusterebene 300.

Treiberknotengruppe im Vergleich zum Spark-Clustermodus

Funktion Spark-Clustermodus Treiber-Knotengruppe
Herunterskalieren von Worker-Knoten Langlebige Treiber werden auf denselben Worker-Knoten wie kurzlebige Container ausgeführt, sodass das Herunterskalieren von Workern durch die ordnungsgemäße Außerbetriebnahme langsam ist. Worker-Knoten werden schneller herunterskaliert, wenn Treiber in Knotengruppen ausgeführt werden.
Gestreamte Treiberausgabe Erfordert eine Suche in YARN-Protokollen, um den Knoten zu finden, auf dem der Treiber geplant wurde. Die Treiberausgabe wird in Cloud Storage gestreamt und ist nach Abschluss eines Jobs in der Google Cloud Console und in der gcloud dataproc jobs wait-Befehlsausgabe einsehbar.

IAM-Berechtigungen für Treiberknotengruppen

Die folgenden IAM-Berechtigungen sind den folgenden Aktionen für Dataproc-Knotengruppen zugeordnet.

Berechtigung Aktion
dataproc.nodeGroups.create Dataproc-Knotengruppen erstellen Wenn ein Nutzer im Projekt dataproc.clusters.create hat, wird diese Berechtigung erteilt.
dataproc.nodeGroups.get Rufen Sie die Details einer Dataproc-Knotengruppe ab.
dataproc.nodeGroups.update Größe einer Dataproc-Knotengruppe ändern

Vorgänge der Treiberknotengruppe

Sie können die gcloud CLI und die Dataproc API verwenden, um einen Job zu erstellen, abzurufen, zu ändern, zu löschen, zu löschen und an eine Dataproc-Treiberknotengruppe zu senden.

Cluster für Treiberknotengruppe erstellen

Eine Treiberknotengruppe ist einem Dataproc-Cluster zugeordnet. Eine Knotengruppe wird beim Erstellen eines Dataproc-Clusters erstellt. Sie können die gcloud CLI oder die Dataproc REST API verwenden, um einen Dataproc-Cluster mit einer Treiberknotengruppe zu erstellen.

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --driver-pool-size=SIZE \
    --driver-pool-id=NODE_GROUP_ID

Erforderliche Flags:

  • CLUSTER_NAME: Der Clustername, der innerhalb eines Projekts nur einmal vorkommen darf. Der Name muss mit einem Kleinbuchstaben beginnen und kann bis zu 51 Kleinbuchstaben, Ziffern und Bindestriche enthalten. Das letzte Zeichen darf kein Bindestrich sein. Der Name eines gelöschten Clusters kann wiederverwendet werden.
  • REGION: Die Region, in der sich der Cluster befindet.
  • SIZE: Die Anzahl der Treiberknoten in der Knotengruppe. Die Anzahl der erforderlichen Knoten hängt von der Joblast und dem Maschinentyp des Treiberpools ab. Die Anzahl der minimalen Treibergruppenknoten entspricht der Gesamtzahl des Arbeitsspeichers oder der vCPUs, die von Jobtreibern benötigt werden, dividiert durch den Maschinenarbeitsspeicher oder die vCPUs jedes Treiberpools.
  • NODE_GROUP_ID: Optional und empfohlen. Die ID darf innerhalb des Clusters nur einmal vorkommen. Verwenden Sie diese ID, um die Treibergruppe bei zukünftigen Vorgängen zu identifizieren, z. B. bei einer Größenanpassung der Knotengruppe. Wenn Sie nichts angeben, generiert Dataproc die Knotengruppen-ID.

Empfohlenes Flag:

  • --enable-component-gateway: Fügen Sie dieses Flag hinzu, um das Dataproc Component Gateway zu aktivieren, das Zugriff auf die YARN-Weboberfläche bietet. Auf den Seiten der YARN-UI und des Planers werden der Cluster- und Jobstatus, der Arbeitsspeicher der Anwendungswarteschlange, die Kernkapazität und andere Messwerte angezeigt.

Zusätzliche Flags: Die folgenden optionalen driver-pool-Flags können dem Befehl gcloud dataproc clusters create hinzugefügt werden, um die Knotengruppe anzupassen.

Flag Standardwert
--driver-pool-id Eine vom Dienst generierte String-ID, wenn diese nicht durch das Flag festgelegt ist. Mit dieser ID kann die Knotengruppe bei zukünftigen Knotenpoolvorgängen identifiziert werden, z. B. bei einer Größenanpassung der Knotengruppe.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator Kein Standardeinstellung Bei der Angabe eines Beschleunigers ist der GPU-Typ erforderlich. Die Anzahl der GPUs ist optional.
--num-driver-pool-local-ssds Kein Standard
--driver-pool-local-ssd-interface Kein Standard
--driver-pool-boot-disk-type pd-standard
--driver-pool-boot-disk-size 1000 GB
--driver-pool-min-cpu-platform AUTOMATIC

REST

Schließen Sie eine AuxiliaryNodeGroup im Rahmen einer cluster.create-Anfrage der Dataproc API ab.

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • PROJECT_ID: erforderlich. Google Cloud-Projekt-ID
  • REGION: erforderlich. Region des Dataproc-Clusters
  • CLUSTER_NAME: erforderlich. Der Clustername, der innerhalb eines Projekts nur einmal vorkommen darf. Der Name muss mit einem Kleinbuchstaben beginnen und kann bis zu 51 Kleinbuchstaben, Ziffern und Bindestriche enthalten. Er darf nicht mit einem Bindestrich enden. Der Name eines gelöschten Clusters kann wiederverwendet werden.
  • SIZE: erforderlich. Anzahl der Knoten in der Knotengruppe.
  • NODE_GROUP_ID: Optional und empfohlen. Die ID darf innerhalb des Clusters nur einmal vorkommen. Verwenden Sie diese ID, um die Treibergruppe bei zukünftigen Vorgängen zu identifizieren, z. B. bei einer Größenanpassung der Knotengruppe. Wenn nicht angegeben, generiert Dataproc die Knotengruppen-ID.

Zusätzliche Optionen: Siehe NodeGroup.

HTTP-Methode und URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

JSON-Text der Anfrage:

{
  "clusterName":"CLUSTER_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion":""
    },
    "endpointConfig": {
      "enableHttpPortAccess": true
    },
    "auxiliaryNodeGroups": [{
        "nodeGroup":{
            "roles":["DRIVER"],
            "nodeGroupConfig": {
                "numInstances": SIZE
             }
         },
        "nodeGroupId": "NODE_GROUP_ID"
    }]
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    ...
    "auxiliaryNodeGroups": [
      {
        "nodeGroup": {
"name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
          "roles": [
            "DRIVER"
          ],
          "nodeGroupConfig": {
            "numInstances": SIZE,
            "instanceNames": [
              "CLUSTER_NAME-np-q1gp",
              "CLUSTER_NAME-np-xfc0"
            ],
            "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
            "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
            "diskConfig": {
              "bootDiskSizeGb": 1000,
              "bootDiskType": "pd-standard"
            },
            "managedGroupConfig": {
              "instanceTemplateName": "dataproc-2a8224d2-...",
              "instanceGroupManagerName": "dataproc-2a8224d2-..."
            },
            "minCpuPlatform": "AUTOMATIC",
            "preemptibility": "NON_PREEMPTIBLE"
          }
        },
        "nodeGroupId": "NODE_GROUP_ID"
      }
    ]
  },
}

Clustermetadaten der Treiberknotengruppe abrufen

Mit dem Befehl gcloud dataproc node-groups describe oder der Dataproc API können Sie Metadaten für Treiberknotengruppen abrufen.

gcloud

gcloud dataproc node-groups describe NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION

Erforderliche Flags:

  • NODE_GROUP_ID: Sie können gcloud dataproc clusters describe CLUSTER_NAME ausführen, um die Knotengruppen-ID aufzulisten.
  • CLUSTER_NAME: Der Clustername.
  • REGION: Die Clusterregion.

REST

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • PROJECT_ID: erforderlich. Google Cloud-Projekt-ID
  • REGION: erforderlich. Die Clusterregion.
  • CLUSTER_NAME: erforderlich. Der Clustername.
  • NODE_GROUP_ID: erforderlich. Sie können gcloud dataproc clusters describe CLUSTER_NAME ausführen, um die Knotengruppen-ID aufzulisten.

HTTP-Methode und URL:

GET https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAMEnodeGroups/Node_GROUP_ID

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
  "roles": [
    "DRIVER"
  ],
  "nodeGroupConfig": {
    "numInstances": 5,
    "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
    "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
    "diskConfig": {
      "bootDiskSizeGb": 1000,
      "bootDiskType": "pd-standard"
    },
    "managedGroupConfig": {
      "instanceTemplateName": "dataproc-driver-pool-mcia3j656h2fy",
      "instanceGroupManagerName": "dataproc-driver-pool-mcia3j656h2fy"
    },
    "minCpuPlatform": "AUTOMATIC",
    "preemptibility": "NON_PREEMPTIBLE"
  }
}

Größe einer Treiberknotengruppe anpassen

Mit dem Befehl gcloud dataproc node-groups size oder der Dataproc API können Sie Treiberknoten zu einer Clustertreiber-Knotengruppe hinzufügen oder daraus entfernen.

gcloud

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=SIZE

Erforderliche Flags:

  • NODE_GROUP_ID: Sie können gcloud dataproc clusters describe CLUSTER_NAME ausführen, um die Knotengruppen-ID aufzulisten.
  • CLUSTER_NAME: Der Clustername.
  • REGION: Die Clusterregion.
  • SIZE: Geben Sie die neue Anzahl von Treiberknoten in der Knotengruppe an.

Optionales Flag:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: Beim Herunterskalieren einer Knotengruppe können Sie dieses Flag hinzufügen, um eine ordnungsgemäße Außerbetriebnahme TIMEOUT_DURATION anzugeben und so zu verhindern, dass Jobtreiber sofort beendet werden. Empfehlung: Legen Sie ein Zeitlimit fest, das mindestens der Dauer des längsten Jobs entspricht, der in der Knotengruppe ausgeführt wird. Die Wiederherstellung fehlgeschlagener Treiber wird nicht unterstützt.

Beispiel: Befehl NodeGroup zum Hochskalieren in der gcloud CLI:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=4

Beispiel: Befehl NodeGroup zum Herunterskalieren in der gcloud CLI:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=1 \
    --graceful-decommission-timeout="100s"

REST

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • PROJECT_ID: erforderlich. Google Cloud-Projekt-ID
  • REGION: erforderlich. Die Clusterregion.
  • NODE_GROUP_ID: erforderlich. Sie können gcloud dataproc clusters describe CLUSTER_NAME ausführen, um die Knotengruppen-ID aufzulisten.
  • SIZE: erforderlich. Neue Anzahl von Knoten in der Knotengruppe.
  • TIMEOUT_DURATION: Optional. Beim Herunterskalieren einer Knotengruppe können Sie eine gracefulDecommissionTimeout in den Anfragetext einfügen, um zu verhindern, dass Jobtreiber sofort beendet werden. Empfehlung: Legen Sie ein Zeitlimit fest, das mindestens der Dauer des längsten Jobs entspricht, der in der Knotengruppe ausgeführt wird. Die Wiederherstellung fehlgeschlagener Treiber wird nicht unterstützt.

    Beispiel:

    { "size": SIZE,
      "gracefulDecommissionTimeout": "TIMEOUT_DURATION"
    }
       

HTTP-Methode und URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/Node_GROUP_ID:resize

JSON-Text der Anfrage:

{
  "size": SIZE,
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.NodeGroupOperationMetadata",
    "nodeGroupId": "NODE_GROUP_ID",
    "clusterUuid": "CLUSTER_UUID",
    "status": {
      "state": "PENDING",
      "innerState": "PENDING",
      "stateStartTime": "2022-12-01T23:34:53.064308Z"
    },
    "operationType": "RESIZE",
    "description": "Scale "up or "down" a GCE node pool to SIZE nodes."
  }
}

Cluster der Treiberknotengruppe löschen

Wenn Sie einen Dataproc-Cluster löschen, werden auch die mit dem Cluster verknüpften Knotengruppen gelöscht.

Job senden

Sie können den Befehl gcloud dataproc jobs submit oder die Dataproc API verwenden, um einen Job an einen Cluster mit einer Treiberknotengruppe zu senden.

gcloud

gcloud dataproc jobs submit JOB_COMMAND \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --driver-required-memory-mb=DRIVER_MEMORY \
    --driver-required-vcores=DRIVER_VCORES \
    DATAPROC_FLAGS \
    -- JOB_ARGS

Erforderliche Flags:

  • JOB_COMMAND: Geben Sie den Jobbefehl an.
  • CLUSTER_NAME: Der Clustername.
  • DRIVER_MEMORY: Menge des Jobtreiber-Arbeitsspeichers in MB, der zum Ausführen eines Jobs erforderlich ist (siehe Yarn-Speichersteuerung).
  • DRIVER_VCORES: Die Anzahl der vCPUs, die zum Ausführen eines Jobs erforderlich sind.

Zusätzliche Flags:

  • DATAPROC_FLAGS: Fügen Sie alle zusätzlichen Flags gcloud dataproc jobs submit hinzu, die mit dem Jobtyp zusammenhängen.
  • JOB_ARGS: Fügen Sie beliebige Argumente nach -- hinzu, die an den Job übergeben werden sollen.

Beispiele: Sie können die folgenden Beispiele über eine SSH-Terminalsitzung in einem Cluster von Dataproc-Treiberknotengruppen ausführen.

  • Spark-Job zur Schätzung des Werts von pi:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 1000
    
  • Spark-Wordcount-Job:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.JavaWordCount \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 'gs://apache-beam-samples/shakespeare/macbeth.txt'
    
  • PySpark-Job zur Schätzung des Werts von pi:

    gcloud dataproc jobs submit pyspark \
        file:///usr/lib/spark/examples/src/main/python/pi.py \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        -- 1000
    
  • Hadoop-TeraGen-MapReduce-Job:

    gcloud dataproc jobs submit hadoop \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --jar file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \
        -- teragen 1000 \
        hdfs:///gen1/test
    

REST

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • PROJECT_ID: erforderlich. Google Cloud-Projekt-ID
  • REGION: erforderlich. Region des Dataproc-Clusters
  • CLUSTER_NAME: erforderlich. Der Clustername, der innerhalb eines Projekts nur einmal vorkommen darf. Der Name muss mit einem Kleinbuchstaben beginnen und kann bis zu 51 Kleinbuchstaben, Ziffern und Bindestriche enthalten. Er darf nicht mit einem Bindestrich enden. Der Name eines gelöschten Clusters kann wiederverwendet werden.
  • DRIVER_MEMORY: erforderlich. Menge des Jobtreiber-Arbeitsspeichers in MB, der zum Ausführen eines Jobs erforderlich ist (siehe Yarn-Arbeitsspeichersteuerelemente).
  • DRIVER_VCORES: erforderlich. Die Anzahl der vCPUs, die zum Ausführen eines Jobs erforderlich sind.
Zusätzliche Felder: Fügen Sie zusätzliche Felder für den Jobtyp und die Jobargumente hinzu. Die Beispielanfrage enthält Felder, die zum Senden eines Spark-Jobs erforderlich sind, der den Wert von pi schätzt.

HTTP-Methode und URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit

JSON-Text der Anfrage:

{
  "job": {
    "placement": {
    "clusterName": "CLUSTER_NAME",
    },
    "driverSchedulingConfig": {
      "memoryMb]": DRIVER_MEMORY,
      "vcores": DRIVER_VCORES
    },
    "sparkJob": {
      "jarFileUris": "file:///usr/lib/spark/examples/jars/spark-examples.jar",
      "args": [
        "10000"
      ],
      "mainClass": "org.apache.spark.examples.SparkPi"
    }
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "reference": {
    "projectId": "PROJECT_ID",
    "jobId": "job-id"
  },
  "placement": {
    "clusterName": "CLUSTER_NAME",
    "clusterUuid": "cluster-Uuid"
  },
  "sparkJob": {
    "mainClass": "org.apache.spark.examples.SparkPi",
    "args": [
      "1000"
    ],
    "jarFileUris": [
      "file:///usr/lib/spark/examples/jars/spark-examples.jar"
    ]
  },
  "status": {
    "state": "PENDING",
    "stateStartTime": "start-time"
  },
  "jobUuid": "job-Uuid"
}

Joblogs ansehen

Um den Jobstatus anzusehen und Jobprobleme zu beheben, können Sie Treiberlogs über die gcloud CLI oder die Google Cloud Console aufrufen.

gcloud

Jobtreiberlogs werden während der Jobausführung an die Ausgabe der gcloud CLI oder die Google Cloud Console gestreamt. Treiberlogs bleiben im Staging-Bucket des Dataproc-Clusters in Cloud Storage erhalten.

Führen Sie den folgenden gcloud CLI-Befehl aus, um den Speicherort der Treiberlogs in Cloud Storage aufzulisten:

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

Der Cloud Storage-Speicherort von Treiberlogs wird in der Befehlsausgabe als driverOutputResourceUri im folgenden Format aufgeführt:

driverOutputResourceUri: gs://CLUSTER_STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/jobs/JOB_ID

Console

So rufen Sie Clusterlogs für Knotengruppen auf:

  1. Aktivieren Sie Logging.

  2. Sie können Logs mit dem folgenden Abfrageformat für den Log-Explorer finden:

    resource.type="cloud_dataproc_cluster"
    resource.labels.project_id="PROJECT_ID"
    resource.labels.cluster_name="CLUSTER_NAME"
    log_name="projects/PROJECT_ID/logs/LOG_TYPE>"
    
    Dabei gilt:

    • PROJECT_ID: Google Cloud-Projekt-ID.
    • CLUSTER_NAME: Der Clustername.
    • LOG_TYPE:
      • Yarn-Nutzerprotokolle: yarn-userlogs
      • Yarn Resource Manager-Logs: hadoop-yarn-resourcemanager
      • Logs des Yarn-Knotenmanagers: hadoop-yarn-nodemanager

Messwerte überwachen

Jobtreiber für Dataproc-Knotengruppen werden in einer untergeordneten dataproc-driverpool-driver-queue-Warteschlange in einer dataproc-driverpool-Partition ausgeführt.

Messwerte für Treiberknotengruppen

In der folgenden Tabelle sind die Treibermesswerte für zugehörige Knotengruppen aufgeführt, die standardmäßig für Treiberknotengruppen erfasst werden.

Messwert der Treiber-Knotengruppe Beschreibung
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB Die Menge des verfügbaren Arbeitsspeichers in Mebibyte in dataproc-driverpool-driver-queue in der Partition dataproc-driverpool.
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers Die Anzahl der ausstehenden Container (in der Warteschlange) in dataproc-driverpool-driver-queue in der Partition dataproc-driverpool.

Messwerte für untergeordnete Warteschlangen

In der folgenden Tabelle sind die Messwerte der untergeordneten Warteschlangen aufgeführt. Die Messwerte werden standardmäßig für Treiberknotengruppen erfasst und können zur Erfassung in beliebigen Dataproc-Clustern aktiviert werden.

Messwert der untergeordneten Warteschlange Beschreibung
yarn:ResourceManager:ChildQueueMetrics:AvailableMB Die Menge des verfügbaren Arbeitsspeichers in Mebibyte in dieser Warteschlange unter der Standardpartition.
yarn:ResourceManager:ChildQueueMetrics:PendingContainers Anzahl der ausstehenden Container (in der Warteschlange) in dieser Warteschlange unter der Standardpartition.
yarn:ResourceManager:ChildQueueMetrics:running_0 Die Anzahl der Jobs mit einer Laufzeit zwischen 0 und 60 Minuten in dieser Warteschlange in allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:running_60 Die Anzahl der Jobs mit einer Laufzeit zwischen 60 und 300 Minuten in dieser Warteschlange in allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:running_300 Die Anzahl der Jobs mit einer Laufzeit zwischen 300 und 1440 Minuten in dieser Warteschlange in allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:running_1440 Die Anzahl der Jobs mit einer Laufzeit von mehr als 1440 Minuten in dieser Warteschlange in allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted Anzahl der Anwendungen, die für alle Partitionen an diese Warteschlange gesendet wurden.

So rufen Sie YARN ChildQueueMetrics und DriverPoolsQueueMetrics in der Google Cloud Console auf:

  • Wählen Sie im Metrics Explorer die Ressourcen VM-Instanz → Benutzerdefiniert aus.

Treiber-Fehlerbehebung für Knotengruppenjobs

Dieser Abschnitt enthält Bedingungen und Fehler von Treiberknotengruppen sowie Empfehlungen zur Behebung der Bedingung oder des Fehlers.

Bedingungen

  • Bedingung: yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB naht sich 0. Dies weist darauf hin, dass in der Warteschlange der Clustertreiberpools nicht genügend Arbeitsspeicher zur Verfügung steht.

    Empfehlung: Skalieren Sie den Treiberpool hoch.

  • Bedingung: yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers ist größer als 0. Dies kann darauf hindeuten, dass die Warteschlange der Clustertreiberpools nicht genügend Arbeitsspeicher hat und YARN Jobs in die Warteschlange stellt.

    Empfehlung: Skalieren Sie den Treiberpool hoch.

Fehler

  • Fehler: Cluster <var>CLUSTER_NAME</var> requires driver scheduling config to run SPARK job because it contains a node pool with role DRIVER. Positive values are required for all driver scheduling config values.

    Empfehlung:Legen Sie für driver-required-memory-mb und driver-required-vcores positive Zahlen fest.

  • Fehler: Container exited with a non-zero exit code 137.

    Empfehlung: Erhöhen Sie die driver-required-memory-mb für die Jobarbeitsspeichernutzung.