Mit dem Qualifizierungstool können Sie Batcharbeitslasten ermitteln, die mit der Ausführung nativer Abfragen (Native Query Execution, NQE) schneller ausgeführt werden können. Das Tool analysiert Spark-Ereignisprotokolle, um potenzielle Laufzeitersparnisse 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. Für die meisten Nutzer wird der Qualifizierungsjob empfohlen, da er die Ermittlung und Analyse von Batcharbeitslasten automatisiert. Das alternative Qualifizierungsscript ist für den speziellen Anwendungsfall der Analyse einer bekannten Ereignisprotokolldatei verfügbar. Wählen Sie die Methode aus, die am besten zu Ihrem Anwendungsfall passt:
Qualifizierungsauftrag (empfohlen): Dies ist die primäre und empfohlene Methode. Es handelt sich um einen PySpark-Job, der aktuelle Batcharbeitslasten in einem oder mehreren Google Cloud Projekten und ‑Regionen automatisch erkennt und analysiert. Verwenden Sie diese Methode, wenn Sie eine umfassende Analyse durchführen möchten, ohne einzelne Ereignisprotokolldateien manuell suchen zu müssen. Dieser Ansatz eignet sich ideal für die groß angelegte 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-Script, mit dem eine einzelne Spark-Ereignisprotokolldatei oder alle Ereignisprotokolle in einem bestimmten Cloud Storage-Verzeichnis analysiert werden. Verwenden Sie diese Methode, wenn Sie den Cloud Storage-Pfad zu den Ereignisprotokollen haben, die Sie analysieren möchten.
Qualifikationsjob
Der Qualifizierungsjob vereinfacht die Analyse im großen Maßstab, indem er programmatisch nach Serverless for Apache Spark-Batcharbeitslasten sucht und einen verteilten Analysejob sendet. Das Tool wertet Jobs in Ihrer gesamten Organisation aus, sodass Sie Ereignisprotokollpfade nicht mehr manuell suchen und angeben müssen.
IAM-Rollen zuweisen
Damit der Qualifizierungsjob auf Batch-Arbeitslastmetadaten zugreifen und Spark-Ereignislogs in Cloud Logging lesen kann, muss dem Dienstkonto, mit dem die Arbeitslast ausgeführt wird, in allen zu analysierenden Projekten die folgenden IAM-Rollen zugewiesen sein:
Qualifizierungsjob senden
Sie reichen den Qualifizierungsjob mit dem gcloud CLI-Tool ein. Der Job enthält ein PySpark-Script 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 Ausführung von Jobs.
Als Job, der in einem Dataproc in Compute Engine-Cluster ausgeführt wird. Diese Vorgehensweise kann nützlich sein, um den Job in einen Workflow einzubinden.
Jobargumente
Argument | Beschreibung | Erforderlich/Optional? | Standardwert |
---|---|---|---|
--project-ids |
Eine einzelne Projekt-ID oder eine durch Kommas getrennte Liste von Google Cloud-Projekt-IDs, nach denen Batch-Workloads 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 für das Filtern von Batches. Es werden nur Batches analysiert, die an oder nach diesem Datum (Format: JJJJ-MM-TT) erstellt wurden. | Nein | Es wird kein Filter für das Startdatum angewendet. |
--end-time |
Das Enddatum zum Filtern von Batches. Es werden nur Batches analysiert, die an oder vor diesem Datum (Format: JJJJ-MM-TT) erstellt wurden. | Nein | Es wird kein Filter für das Enddatum angewendet. |
--limit |
Die maximale Anzahl der zu analysierenden Batches pro Region. 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. Falls angegeben, überschreibt dieses Argument alle anderen Argumente, die den Bereich definieren (--project-ids , --regions , --start-time , --end-time , --limit ). |
Nein | Keine. |
Beispiele für Qualifizierungsjobs
Ein Serverless for Apache Spark-Batchjob für einfache Ad-hoc-Analysen. Jobargumente 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 letzten Batches, die in
sample_project
in der Regionus-central1
gefunden wurden. Die Ergebnisse werden in einen Bucket in Cloud Storage geschrieben. Jobargumente 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 on Compute Engine-Job, der an einen Dataproc-Cluster für die Bulk-Analyse in einem groß angelegten, wiederholbaren oder automatisierten Analyseworkflow gesendet wird. Jobargumente werden in einem INPUT_FILE platziert, das in einen BUCKET in Cloud Storage hochgeladen wird. Diese Methode eignet sich ideal, um in einem einzigen Lauf verschiedene Zeiträume oder Batchlimits für verschiedene Projekte 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 steht für eine separate Analyseanfrage und verwendet ein Format mit Ein-Buchstaben-Flags, gefolgt von den entsprechenden 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
Mit diesen Argumenten wird das Tool angewiesen, die folgenden beiden Bereiche zu analysieren:
- Bis zu 100 Batches in „project1“ in der Region
us-central1
, die zwischen dem 1. und dem 15. Dezember 2025 erstellt wurden. - Bis zu 50 Batches in Projekt2 in der Region
europe-west1
, die am oder nach dem 15. November 2025 erstellt wurden.
- Bis zu 100 Batches in „project1“ in der Region
Qualifikationsskript
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 einen lokalen Computer oder eine 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 Script für Ereignisdateien von Serverless for Apache Spark-Batcharbeitslasten auszuführen.
1.Kopieren Sie run_qualification_tool.sh
in ein lokales Verzeichnis, das die zu analysierenden Spark-Ereignisdateien enthält.
Führen Sie das Qualifizierungsskript aus, um eine oder mehrere 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, sofern nicht EVENT_FILE_NAME angegeben ist): Pfad der zu analysierenden Ereignisdatei. Wenn nicht angegeben, wird davon ausgegangen, dass sich der Event-Dateipfad im aktuellen Verzeichnis befindet.
EVENT_FILE_NAME (erforderlich, sofern EVENT_FILE_PATH nicht angegeben ist): Name der zu analysierenden Ereignisdatei. Wenn kein Pfad angegeben ist, werden die Ereignisdateien analysiert, die rekursiv im Verzeichnis
EVENT_FILE_PATH
gefunden werden.
-o
(optional): Wenn nicht angegeben, erstellt das Tool einoutput
-Verzeichnis unter dem aktuellen Verzeichnis oder verwendet ein vorhandenes Verzeichnis, um Ausgabedateien zu speichern.- 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 die 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 freien Arbeitsspeichers und alle verfügbaren Maschinenkerne.
-t
(optional):- PARALLEL_THREADS_TO_RUN: Die Anzahl der parallelen Threads, die für die Ausführung des Tools verwendet werden. Standardmäßig werden alle Kerne ausgeführt.
Beispiel für die Verwendung von Befehlen:
./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 Verzeichnis
gs://dataproc-temp-us-east1-9779/spark-job-history
und analysiert die darin und in seinen Unterverzeichnissen enthaltenen Spark-Ereignisdateien. Der Zugriff auf das Verzeichnis erfolgt über/keys/event-file-key
. Das Tool verwendet34 GB memory
für die Ausführung und führt5
parallele 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 der
spark.eventLog.dir
für die Arbeitslast und laden Sie sie herunter.- Wenn Sie die
spark.eventLog.dir
nicht finden, legen Sie denspark.eventLog.dir
auf einen Cloud Storage-Speicherort fest, führen Sie die Arbeitslast noch einmal aus und laden Sie diespark.eventLog.dir
herunter.
- Wenn Sie die
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 Ereignisprotokoll auf Herunterladen.
Ausgabedateien des Qualifizierungstools
Sobald der Qualifizierungsjob oder die Scriptanalyse abgeschlossen ist, werden die folgenden Ausgabedateien vom Qualifizierungstool in einem perfboost-output
-Verzeichnis im aktuellen Verzeichnis platziert:
AppsRecommendedForBoost.tsv
: Eine durch Tabulatoren getrennte Liste von Anwendungen, die für die Verwendung mit der Ausführung nativer Abfragen empfohlen werden.UnsupportedOperators.tsv
: Eine tabulatorgetrennte Liste von Anwendungen, die nicht für die Verwendung mit der Ausführung nativer Abfragen empfohlen werden.
AppsRecommendedForBoost.tsv
-Ausgabedatei
Die folgende Tabelle zeigt den Inhalt einer Beispiel-Ausgabedatei AppsRecommendedForBoost.tsv
. Sie enthält eine Zeile für jede analysierte Anwendung.
Beispiel für die AppsRecommendedForBoost.tsv
-Ausgabedatei:
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,00 % | TRUE | 30,00% |
app-2024081/batches/60381cab738021457-000 | projects/example.com:dev/locations/us-central1 474113a1462b426bf b3aeb |
0,00 % | 0,00 % | 514401703 | 514401703 | 100,00 % | TRUE | 30,00% |
Spaltenbeschreibungen:
applicationId
: DieApplicationID
der Spark-Anwendung. Damit können Sie die entsprechende Batch-Arbeitslast 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 Ausführung nativer Abfragen unterstützt wird.
Die folgenden Spalten enthalten wichtige Informationen, mit denen Sie feststellen können, ob die Ausführung nativer Abfragen 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 Laufzeitverkürzung, die durch die Ausführung der Anwendung mit der nativen Abfrageausführung erzielt werden kann.recommendedForBoost
:WennTRUE
, wird empfohlen, die Anwendung mit der nativen Abfrageausführung auszuführen. WennrecommendedForBoost
gleichFALSE
ist, 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 Ausführung nativer Abfragen ausführen.
UnsupportedOperators.tsv
-Ausgabedatei.
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.
In jeder Zeile der Ausgabedatei wird ein nicht unterstützter Operator aufgeführt.
Spaltenbeschreibungen:
unsupportedOperator
: Der Name des Operators, der von der Ausführung nativer Abfragen nicht unterstützt wird.cumulativeCpuMs
: Die Anzahl der CPU-Millisekunden, die während der Ausführung des Operators verbraucht wurden. Dieser Wert gibt die relative Bedeutung des Operators in der Anwendung an.count
: Die Häufigkeit, mit der der Operator in der Anwendung verwendet wird.