Mit dem Qualifizierungstool können Sie Batcharbeitslasten identifizieren, die mit der nativen Abfrageausführung (Native Query Execution, NQE) schnellere Laufzeiten erzielen können. Das Tool analysiert Spark-Ereignislogs, um potenzielle Laufzeiteinsparungen zu schätzen und alle Vorgänge zu identifizieren, die von der NQE-Engine nicht unterstützt werden.
Google Cloud bietet zwei Methoden zum Ausführen der Qualifizierungsanalyse: Qualifizierungsjob und Qualifizierungsskript. Die empfohlene Methode für die meisten Nutzer ist der Qualifizierungsjob, der die Ermittlung und Analyse von Batcharbeitslasten automatisiert. Das alternative Qualifizierungsskript ist für den spezifischen Anwendungsfall der Analyse einer bekannten Ereignislogdatei verfügbar. Wählen Sie die Methode aus, die am besten zu Ihrem Anwendungsfall passt:
Qualifizierungsjob (empfohlen): Dies ist die primäre und empfohlene Methode. Es handelt sich um einen PySpark-Job, der automatisch aktuelle Batch arbeitslasten in einem oder mehreren Google Cloud Projekten und Regionen ermittelt und analysiert. Verwenden Sie diese Methode, wenn Sie eine umfassende Analyse durchführen möchten, ohne einzelne Ereignislogdateien manuell suchen zu müssen. Dieser Ansatz ist ideal für die umfassende Bewertung der Eignung von NQE.
Qualifizierungsskript (Alternative): Dies ist eine alternative Methode für erweiterte oder spezifische Anwendungsfälle. Es handelt sich um ein Shell-Skript, das eine einzelne Spark-Ereignislogdatei oder alle Ereignislogs in einem bestimmten Cloud Storage Verzeichnis analysiert. Verwenden Sie diese Methode, wenn Sie den Cloud Storage-Pfad zu den Ereignis logs haben, die Sie analysieren möchten.
Qualifizierungsjob
Der Qualifizierungsjob vereinfacht die umfassende Analyse, indem er programmatisch nach Serverless for Apache Spark-Batcharbeitslasten sucht und einen verteilten Analysejob sendet. Das Tool wertet Jobs in Ihrer Organisation aus, sodass Sie keine Ereignislogpfade manuell suchen und angeben müssen.
IAM-Rollen zuweisen
Damit der Qualifizierungsjob auf Batcharbeitslast-Metadaten zugreifen und Spark-Ereignislogs in Cloud Logging lesen kann, muss dem Dienstkonto, das die Arbeitslast ausführt, in allen zu analysierenden Projekten die folgenden IAM-Rollen zugewiesen sein:
Qualifizierungsjob senden
Sie senden den Qualifizierungsjob mit dem gcloud CLI-Tool. Der Job enthält ein PySpark-Skript und eine JAR-Datei, die in einem öffentlichen Cloud Storage-Bucket gehostet werden.
Sie können den Job in einer der folgenden Ausführungsumgebungen ausführen:
Als Serverless for Apache Spark-Batcharbeitslast. Dies ist eine einfache, eigenständige Jobausführung.
Als Job, der in einem Dataproc in Compute Engine Cluster ausgeführt wird. Dieser Ansatz kann nützlich sein, um den Job in einen Workflow zu integrieren.
Jobargumente
| Argument | Beschreibung | Erforderlich? | Standardwert |
|---|---|---|---|
--project-ids |
Eine einzelne Projekt-ID oder eine durch Kommas getrennte Liste von Google Cloud-Projekt-IDs, nach denen nach Batcharbeitslasten gesucht werden soll. | Nein | Das Projekt, in dem der Qualifizierungsjob ausgeführt wird. |
--regions |
Eine einzelne Region oder eine durch Kommas getrennte Liste von Regionen, die in den angegebenen Projekten gescannt werden sollen. | Nein | Alle Regionen in den angegebenen Projekten. |
--start-time |
Das Startdatum zum Filtern von Batches. Es werden nur Batches analysiert, die an oder nach diesem Datum (Format: YYYY-MM-DD) erstellt wurden. | Nein | Es wird kein Startdatumsfilter angewendet. |
--end-time |
Das Enddatum zum Filtern von Batches. Es werden nur Batches analysiert, die an oder vor diesem Datum (Format: YYYY-MM-DD) erstellt wurden. | Nein | Es wird kein Enddatumsfilter angewendet. |
--limit |
Die maximale Anzahl der Batches, die pro Region analysiert werden sollen. Die neuesten Batches werden zuerst analysiert. | Nein | Alle Batches, die den anderen Filterkriterien entsprechen, werden analysiert. |
--output-gcs-path |
Der Cloud Storage-Pfad (z. B. gs://your-bucket/output/), in den die Ergebnisdateien geschrieben werden. |
Ja | Keine. |
--input-file |
Der Cloud Storage-Pfad zu einer Textdatei für die Bulk-Analyse. Wenn angegeben, überschreibt dieses Argument alle anderen Argumente zur Definition des Umfangs (--project-ids, --regions, --start-time, --end-time, --limit). |
Nein | Keine. |
Beispiele für Qualifizierungsjobs
Ein Serverless for Apache Spark-Batchjob zur Durchführung einer einfachen Ad-hoc-Analyse. Die Job argumente werden nach dem
--Trennzeichen aufgeführt.gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=COMMA_SEPARATED_PROJECT_IDS \ --regions=COMMA_SEPARATED_REGIONS \ --limit=MAX_BATCHES \ --output-gcs-path=gs://BUCKET
Ein Serverless for Apache Spark-Batchjob zur Analyse von bis zu 50 der neuesten Batches in
sample_projectin der Regionus-central1. Die Ergebnisse werden in einen Bucket in Cloud Storage geschrieben. Die Job argumente werden nach dem--Trennzeichen aufgeführt.gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=US-CENTRAL1 \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=PROJECT_ID \ --regions=US-CENTRAL1 \ --limit=50 \ --output-gcs-path=gs://BUCKET/
Ein Dataproc in Compute Engine-Job, der an einen Dataproc-Cluster gesendet wird, um eine Bulk-Analyse in einem umfassenden, wiederholbaren oder automatisierten Analyseworkflow durchzuführen. Die Jobargumente werden in eine INPUT_FILE eingefügt, die in einen BUCKET in Cloud Storage hochgeladen wird. Diese Methode ist ideal, um in einem einzigen Durchlauf verschiedene Zeiträume oder Batchlimits in verschiedenen Projekten und Regionen zu scannen.
gcloud dataproc jobs submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --cluster=CLUSTER_NAME \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --input-file=gs://INPUT_FILE \ --output-gcs-path=gs://BUCKET
Hinweise:
INPUT_FILE: Jede Zeile in der Datei stellt eine separate Analyse anfrage dar und verwendet ein Format mit Ein-Buchstaben-Flags, gefolgt von ihren Werten, z. B.
-p PROJECT-ID -r REGION -s START_DATE -e END_DATE -l LIMITS.Beispiel für den Inhalt einer Eingabedatei:
-p project1 -r us-central1 -s 2024-12-01 -e 2024-12-15 -l 100 -p project2 -r europe-west1 -s 2024-11-15 -l 50
Diese Argumente weisen das Tool an, die folgenden beiden Bereiche zu analysieren:
- Bis zu 100 Batches in Projekt 1 in der
us-central1Region, die zwischen dem 1. Dezember 2025 und dem 15. Dezember 2025 erstellt wurden. - Bis zu 50 Batches in Projekt 2 in der Region
europe-west1, die am oder nach dem 15. November 2025 erstellt wurden.
- Bis zu 100 Batches in Projekt 1 in der
Qualifizierungsskript
Verwenden Sie diese Methode, wenn Sie den direkten Cloud Storage-Pfad zu einem bestimmten
Spark-Ereignislog haben, das Sie analysieren möchten. Bei diesem Ansatz müssen Sie ein Shell-Skript (run_qualification_tool.sh) auf einem lokalen Computer oder einer Compute Engine-VM herunterladen
und ausführen, die für den Zugriff auf die Ereignislogdatei
in Cloud Storage konfiguriert ist.
Führen Sie die folgenden Schritte aus, um das Skript für Ereignisdateien von Serverless for Apache Spark Batcharbeitslasten auszuführen.
1.Kopieren Sie die
run_qualification_tool.sh
in ein lokales Verzeichnis, das die zu analysierenden Spark-Ereignisdateien enthält.
Führen Sie das Qualifizierungsskript aus, um eine Ereignisdatei oder eine Reihe von Ereignisdateien im Skriptverzeichnis zu analysieren.
./run_qualification_tool.sh -f EVENT_FILE_PATH/EVENT_FILE_NAME \ -o CUSTOM_OUTPUT_DIRECTORY_PATH \ -k SERVICE_ACCOUNT_KEY \ -x MEMORY_ALLOCATEDg \ -t PARALLEL_THREADS_TO_RUN
Flags und Werte:
-f(erforderlich): Informationen zum Auffinden von Ereignisdateien für Spark-Arbeitslasten finden Sie unter Speicherorte von Spark-Ereignisdateien.EVENT_FILE_PATH (erforderlich, es sei denn, EVENT_FILE_NAME ist angegeben): Pfad der zu analysierenden Ereignisdatei. Wenn nicht angegeben, wird der aktuelle Pfad als Pfad der Ereignisdatei verwendet.
EVENT_FILE_NAME (erforderlich, es sei denn, EVENT_FILE_PATH ist angegeben): Name der zu analysierenden Ereignisdatei. Wenn nicht angegeben, werden die Ereignisdateien, die rekursiv in der
EVENT_FILE_PATHgefunden werden, analysiert.
-o(optional): Wenn nicht angegeben, erstellt oder verwendet das Tool ein vorhandenesoutputVerzeichnis im aktuellen Verzeichnis, um Ausgabedateien zu platzieren.- CUSTOM_OUTPUT_DIRECTORY_PATH: Ausgabeverzeichnispfad für Ausgabedateien.
-k(optional):- SERVICE_ACCOUNT_KEY: Der Dienstkontoschlüssel im JSON-Format, falls für den Zugriff auf EVENT_FILE_PATH erforderlich.
-x(optional):- MEMORY_ALLOCATED: Arbeitsspeicher in Gigabyte, der dem Tool zugewiesen werden soll. Standardmäßig verwendet das Tool 80% des im System verfügbaren kostenlosen Arbeitsspeichers und alle verfügbaren Maschinenkerne.
-t(optional):- PARALLEL_THREADS_TO_RUN: Die Anzahl der parallelen Threads, die das Tool ausführen soll. Standardmäßig führt das Tool alle Kerne aus.
Beispiel für die Befehlsverwendung:
./run_qualification_tool.sh -f gs://dataproc-temp-us-east1-9779/spark-job-history \ -o perfboost-output -k /keys/event-file-key -x 34g -t 5
In diesem Beispiel durchläuft das Qualifizierungstool das
gs://dataproc-temp-us-east1-9779/spark-job-historyVerzeichnis und analysiert Spark-Ereignisdateien, die in diesem Verzeichnis und seinen Unterverzeichnissen enthalten sind. Der Zugriff auf das Verzeichnis wird über/keys/event-file-keygewährt. Das Tool verwendet34 GB memoryfür die Ausführung und führt5parallele Threads aus.
Speicherorte von Spark-Ereignisdateien
Führen Sie einen der folgenden Schritte aus, um die Spark-Ereignisdateien für Serverless for Apache Spark-Batcharbeitslasten zu finden:
Suchen Sie in Cloud Storage nach
spark.eventLog.dirfür die Arbeitslast, laden Sie sie dann herunter.- Wenn Sie
spark.eventLog.dirnicht finden können, legen Siespark.eventLog.dirauf einen Cloud Storage-Speicherort fest, führen Sie die Arbeitslast noch einmal aus und laden Siespark.eventLog.dirherunter.
- Wenn Sie
Wenn Sie den Spark History Server für den Batchjob konfiguriert haben:
- Rufen Sie den Spark History Server auf und wählen Sie die Arbeitslast aus.
- Klicken Sie in der Spalte Ereignislog auf Herunterladen.
Ausgabedateien des Qualifizierungstools
Sobald die Analyse des Qualifizierungsjobs oder -skripts abgeschlossen ist, platziert das Qualifizierungstool
die folgenden Ausgabedateien in einem
perfboost-output Verzeichnis im aktuellen Verzeichnis:
AppsRecommendedForBoost.tsv: Eine durch Tabstopps getrennte Liste von Anwendungen, die für die Verwendung mit der nativen Abfrageausführung empfohlen werden.UnsupportedOperators.tsv: Eine durch Tabstopps getrennte Liste von Anwendungen, die nicht für die Verwendung mit der nativen Abfrageausführung empfohlen werden.
Ausgabedatei AppsRecommendedForBoost.tsv
Die folgende Tabelle zeigt den Inhalt einer Beispielausgabedatei AppsRecommendedForBoost.tsv. Sie enthält eine Zeile für jede analysierte Anwendung.
Beispielausgabedatei AppsRecommendedForBoost.tsv:
| applicationId | applicationName | rddPercentage | unsupportedSqlPercentage | totalTaskTime | supportedTaskTime | supportedSqlPercentage | recommendedForBoost | expectedRuntimeReduction |
|---|---|---|---|---|---|---|---|---|
| app-2024081/batches/083f6196248043938-000 | projects/example.com:dev/locations/us-central1 6b4d6cae140f883c0 11c8e |
0,00% | 0,00% | 548924253 | 548924253 | 100% | TRUE | 30,00% |
| app-2024081/batches/60381cab738021457-000 | projects/example.com:dev/locations/us-central1 474113a1462b426bf b3aeb |
0,00% | 0,00% | 514401703 | 514401703 | 100% | TRUE | 30,00% |
Spaltenbeschreibungen:
applicationId: DieApplicationIDder Spark-Anwendung. Verwenden Sie diese ID, um die entsprechende Batcharbeitslast zu identifizieren.applicationName: Der Name der Spark-Anwendung.rddPercentage: Der Prozentsatz der RDD-Vorgänge in der Anwendung. RDD-Vorgänge werden von der nativen Abfrageausführung nicht unterstützt.unsupportedSqlPercentage:Prozentsatz der SQL-Vorgänge, die von der nativen Abfrageausführung nicht unterstützt werden.totalTaskTime: Kumulative Aufgabenzeit aller Aufgaben, die während der Ausführung der Anwendung ausgeführt wurden.supportedTaskTime: Die gesamte Aufgabenzeit, die von der nativen Abfrageausführung unterstützt wird.
Die folgenden Spalten enthalten wichtige Informationen, mit denen Sie feststellen können ob die native Abfrageausführung für Ihre Batcharbeitslast von Vorteil sein kann:
supportedSqlPercentage: Der Prozentsatz der SQL-Vorgänge, die von der nativen Abfrageausführung unterstützt werden. Je höher der Prozentsatz, desto größer die Laufzeitreduzierung, die durch die Ausführung der Anwendung mit der nativen Abfrageausführung erzielt werden kann.recommendedForBoost: WennTRUE, wird die Ausführung der Anwendung mit der nativen Abfrageausführung empfohlen. WennrecommendedForBoostFALSEist, verwenden Sie die native Abfrageausführung nicht für die Batcharbeitslast.expectedRuntimeReduction: Die erwartete prozentuale Reduzierung der Laufzeit der Anwendung , wenn Sie die Anwendung mit der nativen Abfrageausführung ausführen.
Ausgabedatei UnsupportedOperators.tsv
Die Ausgabedatei UnsupportedOperators.tsv enthält eine Liste der Operatoren, die in
Arbeitslastanwendungen verwendet werden und von der nativen Abfrageausführung nicht unterstützt werden.
Jede Zeile in der Ausgabedatei enthält einen nicht unterstützten Operator.
Spaltenbeschreibungen:
unsupportedOperator: Der Name des Operators, der von der nativen Abfrageausführung nicht unterstützt wird.cumulativeCpuMs: Die Anzahl der CPU-Millisekunden, die während der Ausführung des Operators verbraucht wurden. Dieser Wert spiegelt die relative Bedeutung des Operators in der Anwendung wider.count: Die Anzahl der Male, die der Operator in der Anwendung verwendet wird.