Dataproc-Treiberknotengruppen

Übersicht

Eine Dataproc-NodeGroup-Ressource ist eine Gruppe von Dataproc Clusterknoten, die eine zugewiesene Rolle ausführen. Auf dieser Seite wird die Treiberknotengruppe: Eine Gruppe von Compute Engine-VMS, Zuweisung der Rolle Driver zum Ausführen von Jobtreibern auf dem Dataproc-Cluster

Wann werden Treiberknotengruppen verwendet?

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

So helfen Treiberknoten bei der Ausführung paralleler Jobs

Dataproc startet für jeden Job einen Job-Treiberprozess auf einem Dataproc-Cluster-Masterknoten. 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 auf dem Masterknoten verfügbaren Ressourcen begrenzt. Da Dataproc-Masterknoten nicht skaliert werden können, kann ein Job fehlschlagen oder gedrosselt werden, wenn die Ressourcen des Masterknotens nicht ausreichen, um einen Job auszuführen.

Treiberknotengruppen sind spezielle, von YARN verwaltete Knotengruppen. ist nicht durch Master-Knoten-Ressourcen begrenzt. In Clustern mit einer Treiberknotengruppe auf Treiberknoten ausgeführt werden. Auf jedem Treiberknoten können mehrere Anwendungstreiber ausgeführt werden, sofern der Knoten über ausreichende Ressourcen verfügt.

Vorteile

Wenn Sie einen Dataproc-Cluster mit einer Treiberknotengruppe verwenden, haben Sie folgende Möglichkeiten:

  • Jobtreiberressourcen horizontal skalieren, um mehr gleichzeitige Jobs auszuführen
  • Treiberressourcen getrennt von Worker-Ressourcen skalieren
  • Schnelleres Herunterskalieren von Dataproc-Images ab Version 2.0 und höher Cluster. Auf diesen Clustern wird der App-Master in einem Spark-Treiber in einem Treiberknotengruppe (spark.yarn.unmanagedAM.enabled ist festgelegt) standardmäßig auf true).
  • Start des Treiberknotens anpassen Sie können {ROLE} == 'Driver' in ein Initialisierungsskript einfügen, damit das Script Aktionen für eine Treiberknotengruppe in der Knotenauswahl ausführt.

Beschränkungen

  • Knotengruppen werden in Dataproc-Workflow-Vorlagen nicht unterstützt.
  • Knotengruppen können nicht beendet, neu gestartet oder automatisch skaliert werden.
  • Der MapReduce-App-Master wird auf Worker-Knoten ausgeführt. Das Herunterskalieren von Worker-Knoten kann wenn Sie die ordnungsgemäße Außerbetriebnahme aktivieren.
  • Nebenläufigkeit von Jobs wird durch dataproc:agent.process.threads.job.max beeinträchtigt Clusterattribut. Bei drei Mastern und dieser Eigenschaft, die auf den Standardwert 100 festgelegt ist, beträgt die maximale Job-Nebenläufigkeit auf Clusterebene 300.

Treiberknotengruppe im Vergleich zum Spark-Clustermodus

Funktion Spark-Clustermodus Treiberknotengruppe
Herunterskalieren des Worker-Knotens Langlebige Treiber werden auf denselben Worker-Knoten wie kurzlebige Container ausgeführt. wodurch 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 Es ist eine Suche in den YARN-Protokollen erforderlich, um den Knoten zu finden, auf dem der Treiber geplant wurde. Die Treiberausgabe wird an Cloud Storage gestreamt und kann nach Abschluss eines Jobs in der Google Cloud Console und in der gcloud dataproc jobs wait-Befehlsausgabe angezeigt werden.

IAM-Berechtigungen für die Treiberknotengruppe

Die folgenden IAM-Berechtigungen sind mit folgenden Dataproc verknüpft gruppenbezogene Aktionen.

Berechtigung Aktion
dataproc.nodeGroups.create Erstellen Sie Dataproc-Knotengruppen. Wenn ein Nutzer dataproc.clusters.create im Projekt, diese Berechtigung ist gewährt wird.
dataproc.nodeGroups.get Details zu einer Dataproc-Knotengruppe abrufen
dataproc.nodeGroups.update Größe einer Dataproc-Knotengruppe ändern

Vorgänge in Treiberknotengruppen

Mit der gcloud CLI und der Dataproc API können Sie eine Dataproc-Treiberknotengruppe erstellen, abrufen, die Größe ändern, löschen und einen Job an sie senden.

Cluster mit Treiberknotengruppe erstellen

Eine Treiberknotengruppe ist einem Dataproc-Cluster zugeordnet. Sie erstellen eine Knotengruppe im Rahmen Dataproc-Cluster erstellen 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 eindeutig sein muss. Der Name muss mit einem Kleinbuchstaben beginnen und kann bis zu 51 Kleinbuchstaben enthalten Buchstaben, Ziffern und Bindestriche. Er darf nicht mit einem Bindestrich enden. Der Name eines gelöschten Clusters kann wiederverwendet werden.
  • REGION: die Region wo sich der Cluster befinden wird.
  • SIZE: Die Anzahl der Treiberknoten in der Knotengruppe. Die Anzahl der Knoten sind vom Maschinentyp und Treiberpool abhängig. Die Anzahl der Minimum Treibergruppenknoten entsprechen dem Gesamtarbeitsspeicher oder den vCPUs, die von Jobtreibern benötigt werden geteilt durch den Maschinenarbeitsspeicher oder die vCPUs jedes Treiberpools.
  • NODE_GROUP_ID: Optional und empfohlen. Die ID muss eindeutig sein innerhalb des Clusters. Verwenden Sie diese ID, um die Treibergruppe bei zukünftigen Vorgängen zu identifizieren, z. B. wenn Sie die Größe der Knotengruppe ändern möchten. Wenn keine Angabe erfolgt, Dataproc generiert die Knotengruppen-ID.

Empfohlene Kennzeichnung:

  • --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 YARN-UI-Seiten „Application“ und „Scheduler“ werden der Cluster- und Jobstatus angezeigt. Arbeitsspeicher der Anwendungswarteschlange, Kernkapazität und andere Messwerte.

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

Flag Standardwert
--driver-pool-id Eine String-ID, die vom Dienst generiert wird, falls sie nicht vom melden. Diese ID kann bei zukünftigen Knotenpool-Vorgängen wie der Größenänderung der Knotengruppe verwendet werden.
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator Kein Standardeinstellung Beim Angeben eines Beschleunigers ist der GPU-Typ erforderlich. ist die Anzahl der GPUs 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 ein AuxiliaryNodeGroup als Teil einer Dataproc API cluster.create

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • 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 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. bei der Größenänderung der Knotengruppe. Wenn keine Angabe erfolgt, generiert Dataproc Die Knotengruppen-ID.

Weitere Optionen: Weitere Informationen finden Sie unter NodeGroup.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "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 Treiber-Knotengruppen-Clusters abrufen

Sie können die gcloud dataproc node-groups describe oder die Dataproc API verwenden, um Metadaten der Treiberknotengruppe abrufen.

gcloud

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

Erforderliche Flags:

  • NODE_GROUP_ID: Mit gcloud dataproc clusters describe CLUSTER_NAME können Sie die Knotengruppen-ID auflisten.
  • CLUSTER_NAME: Der Clustername.
  • REGION: Die Clusterregion.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: erforderlich. Google Cloud-Projekt-ID
  • REGION: erforderlich. Die Clusterregion.
  • CLUSTER_NAME: erforderlich. Den Clusternamen.
  • 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 ändern

Sie können die gcloud dataproc node-groups Größenanpassung oder der Dataproc API um Treiberknoten zu einer Cluster-Treiberknotengruppe 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: Mit gcloud dataproc clusters describe CLUSTER_NAME können Sie die Knotengruppen-ID auflisten.
  • CLUSTER_NAME: Der Clustername.
  • REGION: Die Clusterregion.
  • SIZE: Geben Sie die neue Anzahl der Treiberknoten in der Knotengruppe an.

Optionales Flag:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: Wenn Sie eine Knotengruppe herunterskalieren, können Sie dieses Flag hinzufügen, um eine ordnungsgemäße AußerbetriebnahmeTIMEOUT_DURATION anzugeben, um das sofortige Beenden von Job-Treibern zu vermeiden. Empfehlung:Legen Sie ein Zeitlimit fest, das mindestens gleich dem die Dauer des längsten Jobs, der in der Knotengruppe ausgeführt wird (Wiederherstellung der fehlerhaften 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: Befehl „scale down“ (verkleinern) der gcloud CLI für NodeGroup:

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

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • 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. Wenn Sie eine Knotengruppe verkleinern, können Sie dem Anfragetext ein gracefulDecommissionTimeout hinzufügen, um eine sofortige Beendigung der Job-Treiber zu vermeiden. Empfehlung:Legen Sie ein Zeitlimit von mindestens Entspricht der Dauer des längsten Jobs, der in der Knotengruppe ausgeführt wird (Wiederherstellung) der fehlerhaften 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 anfordern:

{
  "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 einer 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 die Funktion gcloud Dataproc Jobs Senden verwenden oder die Dataproc API verwenden, um Job an einen Cluster senden mit einer Treiber-Knotengruppe.

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 die Jobbefehl übergeben.
  • CLUSTER_NAME: Der Clustername.
  • DRIVER_MEMORY: Arbeitsspeicherplatz in MB, der für die Ausführung eines Jobs benötigt wird (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 gcloud dataproc jobs submit-Flags hinzu, die sich auf den Jobtyp beziehen.
  • JOB_ARGS: Fügt beliebige Argumente nach -- zur Übergabe hinzu. für den Job.

Beispiele:Sie können die folgenden Beispiele aus einem SSH-Terminalsitzung auf einem Dataproc-Treiberknotengruppencluster.

  • Spark-Job zum Schätzen 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 zum Schätzen 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

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: erforderlich. Google Cloud-Projekt-ID
  • REGION: erforderlich. Region des Dataproc-Clusters
  • CLUSTER_NAME: erforderlich. Der Clustername, der eindeutig sein muss innerhalb eines Projekts. Der Name muss mit einem Kleinbuchstaben beginnen und kann 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. Größe des Jobtreiberspeichers in MB die zum Ausführen eines Jobs benötigt werden (siehe Yarn-Speichersteuerelemente).
  • DRIVER_VCORES: erforderlich. Die Anzahl der vCPUs, die zum Ausführen eines Jobs erforderlich sind.
Zusätzliche Felder:Hier können Sie weitere Felder hinzufügen, die sich auf das Attribut Art des Jobs und Jobargumente (die Beispielanfrage enthält Felder, die zum Senden einer Spark- Job, 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 anfordern:

{
  "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 Ansehen des Jobstatus und Debuggen von Jobproblemen können Sie Treiberlogs mit über die gcloud CLI oder die Google Cloud Console.

gcloud

Job-Treiber-Logs werden während der Jobausführung an die gcloud CLI-Ausgabe oder die Google Cloud Console gestreamt. Treiberprotokolle bleiben erhalten in den Dataproc-Cluster Staging-Bucket in Cloud Storage.

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

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

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

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 im Log-Explorer verwenden, um Protokolle 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
      • Yarn-Knotenmanager-Logs: hadoop-yarn-nodemanager

Messwerte überwachen

Dataproc-Knotengruppen-Job-Treiber werden in einer dataproc-driverpool-driver-queue-Unterwarteschlange unter einer dataproc-driverpool-Partition 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 Der verfügbare Arbeitsspeicher in Mebibyte in dataproc-driverpool-driver-queue unter Partition dataproc-driverpool.
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers Die Anzahl der ausstehenden (in der Warteschlange befindlichen) Container in dataproc-driverpool-driver-queue unter der Partition dataproc-driverpool.

Messwerte für untergeordnete Warteschlangen

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

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 (Standardwert) -Partition an.
yarn:ResourceManager:ChildQueueMetrics:running_0 Die Anzahl der Jobs mit einer Laufzeit zwischen 0 und 60 Minuten in dieser Warteschlange unter allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:running_60 Die Anzahl der Jobs mit einer Laufzeit zwischen 60 und 300 Minuten in dieser Warteschlange unter allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:running_300 Die Anzahl der Jobs mit einer Laufzeit zwischen 300 und 1440 Minuten in dieser Warteschlange unter allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:running_1440 Die Anzahl der Jobs mit einer Laufzeit von mehr als 1440 Minuten in dieser Warteschlange unter allen Partitionen.
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted Anzahl der Anwendungen, die in dieser Warteschlange für alle Partitionen eingereicht 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.

Fehlerbehebung für den Jobtreiber in der Knotengruppe

In diesem Abschnitt finden Sie Bedingungen für Treiberknotengruppen und Fehler mit Empfehlungen zur Behebung des Zustands 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 genug Arbeitsspeicher.

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

  • Bedingung: yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers ist größer als 0. Dies kann darauf hindeuten, dass der Arbeitsspeicher der Cluster-Treiberpool-Warteschlange aufgebraucht ist und YARN Jobs in die Warteschlange stellt.

    Empfehlung: Erhöhen Sie die Größe des Fahrerpools.

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 driver-required-memory-mb und driver-required-vcores fest. mit positiven Zahlen.

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

    Empfehlung:Erhöhen Sie driver-required-memory-mb auf die Arbeitsspeichernutzung des Jobs.