Dataproc-Treiberknotengruppen

Überblick

Eine Dataproc-NodeGroup-Ressource 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 auf einem freigegebenen Cluster ausführen müssen.
  • Erhöhen Sie die Ressourcen der Masterknoten, 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 Masterknoten des Dataproc-Clusters. Der Treiberprozess wiederum führt einen Anwendungstreiber wie spark-submit als untergeordneten Prozess aus. Die Anzahl der gleichzeitig auf dem Master ausgeführten Jobs wird jedoch durch die Ressourcen begrenzt, die auf dem Masterknoten verfügbar sind. Da Dataproc-Masterknoten nicht skaliert werden können, kann ein Job fehlschlagen oder gedrosselt werden, wenn die Ressourcen des Masterknotens zum Ausführen eines Jobs nicht ausreichen.

Treiberknotengruppen sind spezielle Knotengruppen, die von YARN verwaltet werden. Die Nebenläufigkeit von Jobs wird daher nicht durch Masterknotenressourcen begrenzt. In Clustern mit einer Treiberknotengruppe werden Anwendungstreiber auf Treiberknoten ausgeführt. Jeder Treiberknoten kann mehrere Anwendungstreiber ausführen, wenn der Knoten über ausreichende Ressourcen verfügt.

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 von Dataproc 2.0 und höher und höher Auf diesen Clustern wird der Anwendungsmaster in einem Spark-Treiber in einer Treiberknotengruppe ausgeführt (spark.yarn.unmanagedAM.enabled ist standardmäßig auf true gesetzt).
  • Starten des Treiberknotens anpassen. Sie können {ROLE} == 'Driver' in einem Initialisierungsskript einfügen, damit das Skript Aktionen für eine Treiberknotengruppe in der Knotenauswahl ausführen kann.

Beschränkungen

  • Knotengruppen werden in Dataproc-Workflowvorlagen nicht unterstützt.
  • Knotengruppen 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 vom Clusterattribut dataproc:agent.process.threads.job.max beeinflusst. Beispiel: Wenn drei Master und dieses Attribut auf den Standardwert 100 gesetzt sind, beträgt die maximale Nebenläufigkeit von Jobs auf Clusterebene 300.

Treiberknotengruppe im Vergleich zum Spark-Clustermodus

Feature Spark-Clustermodus Treiberknotengruppe
Herunterskalieren des Worker-Knotens Langlebige Treiber werden auf denselben Worker-Knoten wie kurzlebige Container ausgeführt. Dadurch ist das Herunterskalieren von Workern bei der ordnungsgemäßen Außerbetriebnahme nur langsam. Worker-Knoten werden schneller herunterskaliert, wenn Treiber in Knotengruppen ausgeführt werden.
Gestreamte Treiberausgabe Erfordert eine Suche in YARN-Logs, um den Knoten zu finden, auf dem der Treiber geplant wurde. Die Treiberausgabe wird an Cloud Storage gestreamt und ist nach Abschluss eines Jobs in der Google Cloud Console und in der gcloud dataproc jobs wait-Befehlsausgabe sichtbar.

IAM-Berechtigungen für Treiberknotengruppen

Die folgenden IAM-Berechtigungen sind den folgenden Aktionen in Bezug auf Dataproc-Knotengruppen zugeordnet.

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

Treiber-Knotengruppenvorgänge

Sie können die gcloud CLI und die Dataproc API verwenden, um einen Job zu erstellen, abzurufen, in der Größe zu ändern, zu löschen und an eine Dataproc-Treiber-Knotengruppe zu senden.

Treiberknotengruppencluster erstellen

Eine Treiberknotengruppe ist einem Dataproc-Cluster zugeordnet. Sie erstellen eine Knotengruppe beim Erstellen eines Dataproc-Clusters. Sie können die gcloud CLI oder 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 eindeutig sein muss. 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.
  • REGION: Die Region, in der sich der Cluster befinden wird.
  • SIZE: Die Anzahl der Treiberknoten in der Knotengruppe. Die Anzahl der benötigten Knoten hängt von der Joblast und dem Treiberpool-Maschinentyp ab. Die Anzahl der minimalen Treibergruppenknoten entspricht dem Gesamtarbeitsspeicher oder den vCPUs, die von Jobtreibern benötigt werden, geteilt durch den Maschinenarbeitsspeicher oder die vCPUs der einzelnen Treiberpools.
  • NODE_GROUP_ID: Optional und empfohlen. Die ID muss innerhalb des Clusters eindeutig sein. Verwenden Sie diese ID, um die Treibergruppe bei zukünftigen Vorgängen zu identifizieren, z. B. beim Ändern der Größe der Knotengruppe. Wenn keine Angabe erfolgt, generiert Dataproc die Knotengruppen-ID.

Empfohlenes Flag:

  • --enable-component-gateway: Fügen Sie dieses Flag hinzu, um das Dataproc-Komponentengateway zu aktivieren, das Zugriff auf die YARN-Weboberfläche bietet. Auf den YARN-UI-Seiten „Anwendung“ und „Planer“ 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 String-ID, die vom Dienst generiert wird, wenn sie nicht vom Flag festgelegt wird. Mit dieser ID kann die Knotengruppe bei zukünftigen Knotenpoolvorgängen identifiziert werden, z. B. beim Anpassen der Größe der Knotengruppe.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator Kein Standardeinstellung Beim Angeben 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

Führen Sie eine AuxiliaryNodeGroup im Rahmen einer Dataproc API-cluster.create-Anfrage aus.

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 eindeutig sein muss. 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 muss innerhalb des Clusters eindeutig sein. Verwenden Sie diese ID, um die Treibergruppe bei zukünftigen Vorgängen zu identifizieren, z. B. beim Anpassen der Größe der Knotengruppe. Wenn keine Angabe erfolgt, generiert Dataproc die Knotengruppen-ID.

Weitere 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"
      }
    ]
  },
}

Metadaten des Treiberknotengruppen-Clusters abrufen

Mit dem Befehl gcloud dataproc node-groups describe oder der Dataproc API können Sie Metadaten der Treiberknotengruppe 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

Sie können den Befehl gcloud dataproc node-groups Größenanpassung oder die Dataproc API verwenden, um Treiberknoten einer Clustertreiber-Knotengruppe hinzuzufügen oder daraus zu 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 festzulegen und Jobtreiber nicht sofort zu beenden. 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: gcloud CLI NodeGroup zum Hochskalieren:

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

Beispiel: gcloud CLI NodeGroup zum Herunterskalieren:

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."
  }
}

Treiber-Knotengruppencluster löschen

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

Job senden

Sie können den Befehl gcloud Dataproc Jobs Senden oder die Dataproc API verwenden, um einen Job an einen Cluster mit einer Treiber-Knotengruppe 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 Jobtreiberarbeitsspeichers in MB, der zum Ausführen eines Jobs erforderlich ist (siehe Yarn-Speichersteuerungen).
  • 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 für gcloud Dataproc Jobs Senden hinzu, die sich auf den Jobtyp beziehen.
  • JOB_ARGS: Fügt nach -- beliebige Argumente hinzu, die an den Job übergeben werden sollen.

Beispiele: Sie können die folgenden Beispiele über eine SSH-Terminalsitzung in einem Dataproc-Treiberknotengruppencluster 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 eindeutig sein muss. 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 Jobtreiberspeichers in MB, der zum Ausführen eines Jobs erforderlich ist (siehe Yarn-Speichersteuerungen).
  • 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, mit dem der Wert von pi geschätzt wird.

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

Zum Aufrufen des Jobstatus und zum Beheben von Jobproblemen können Sie Treiberlogs über die gcloud CLI oder die Google Cloud Console aufrufen.

gcloud

Jobtreiberlogs werden während der Jobausführung an die 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 der 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 Cluster-Logs für Knotengruppen auf:

  1. Aktivieren Sie Logging.

  2. Sie können das folgende Abfrageformat für den Log-Explorer verwenden, um Logs zu 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>"
    
    Ersetzen Sie Folgendes:

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

Messwerte überwachen

Jobtreiber der Dataproc-Knotengruppen werden in einer untergeordneten Warteschlange vom Typ dataproc-driverpool-driver-queue unter einer Partition dataproc-driverpool ausgeführt.

Messwerte für Treiberknotengruppen

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

Messwert für Treiberknotengruppe Beschreibung
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB Die Menge des verfügbaren Arbeitsspeichers in Mebibyte in dataproc-driverpool-driver-queue unter 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 Warteschlange aufgeführt. Die Messwerte werden standardmäßig für Treiberknotengruppen erfasst und können für die Erfassung in allen 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 in 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 unter allen 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 Option VM-Instanz → Benutzerdefiniert aus.

Fehlerbehebung für den Jobtreiber in der Knotengruppe

In diesem Abschnitt finden Sie Bedingungen und Fehler für Treiberknotengruppen sowie Empfehlungen zum Beheben der Bedingung oder des Fehlers.

Bedingungen

  • Bedingung: yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB nähert sich 0. Dies weist darauf hin, dass die Warteschlange der Cluster-Treiberpools nicht mehr genügend Arbeitsspeicher hat.

    Empfehlung: Skalieren Sie die Größe des Treiberpools hoch.

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

    Empfehlung: Skalieren Sie die Größe des Treiberpools 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 driver-required-memory-mb auf die Arbeitsspeichernutzung des Jobs.