Fehlertolerante Ausführung in Trino - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlertolerante Ausführung in Trino

Die fehlertolerante Ausführung ist ein Mechanismus in Trino, den ein Cluster verwenden kann, um Abfragefehler zu minimieren. Zu diesem Zweck werden Abfragen oder deren Komponentenaufgaben wiederholt, wenn sie fehlschlagen. Wenn die fehlertolerante Ausführung aktiviert ist, werden die zwischengeschalteten Austauschdaten gespoolt, sodass sie im Falle eines Worker-Ausfalls oder eines anderen Fehlers während der Abfrageausführung von einem anderen Worker wiederverwendet werden können.

Weitere Informationen zur fehlertoleranten Ausführung in Trino finden Sie im Trino-Blog unter Project Tardigrade delivers ETL at Trino-speed to early users.

Konfiguration

Die fehlertolerante Ausführung ist standardmäßig deaktiviert. Um das Feature zu aktivieren, legen Sie die retry-policy Konfigurationseigenschaft in der trino-config-Klassifizierung wie folgt auf QUERY oder TASK basierend auf der gewünschten Wiederholungsrichtlinie fest.

{"classification": "trino-config", "properties": { "retry-policy": "QUERY" } }

Eine QUERYWiederholungsrichtlinie weist Trino an, eine Abfrage automatisch zu wiederholen, wenn auf einem Worker-Knoten ein Fehler auftritt. Wir empfehlen, eine QUERY Wiederholungsrichtlinie zu verwenden, wenn der Großteil der Workload für den Trino-Cluster aus vielen kleinen Abfragen besteht.

Eine TASKWiederholungsrichtlinie weist Trino an, einzelne Abfrageaufgaben im Falle eines Fehlers erneut zu versuchen. Wir empfehlen diese Richtlinie, wenn Trino umfangreiche Batch-Abfragen ausführt. Der Cluster kann kleinere Aufgaben innerhalb der Abfrage effizienter wiederholen, als die gesamte Abfrage erneut zu versuchen.

Austausch-Manager

Ein Exchange-Manager speichert und verwaltet Spooldaten für eine fehlertolerante Ausführung. Er verwendet externen Speicher, um verschüttete Daten zu speichern, die über die Größe des In-Memory-Puffers hinausgehen. Sie können einen dateisystembasierten Exchange-Manager konfigurieren, der Spooldaten an einem bestimmten Ort speichert, z. B. Amazon S3, Amazon S3 S3-kompatible Systeme oder. HDFS

Die EMR Amazon-Versionen 6.9.0 und höher enthalten die trino-exchange-manager Klassifizierung zur Konfiguration des Exchange Managers. Diese Versionen unterstützen auch HDFS Spooling.

Exchange Manager einrichten

Verwenden Sie die trino-exchange-manager-Konfigurationsklassifizierung, um einen Exchange Manager zu konfigurieren. Diese Klassifizierung erstellt intern eine etc/exchange-manager.properties-Konfigurationsdatei für den Koordinator und alle Worker-Knoten. Verwenden Sie die Konfigurationsklassifizierung , um die exchange-manager.name-Eigenschaften auf filesystem festzulegen.

Standardmäßig werden EMR Amazon-Versionen 6.9.0 und höher HDFS als Exchange-Manager verwendet. HDFSist in den EMR EC2 Amazon-Clustern verfügbar, und das Spooling erfolgt standardmäßig im trino-exchange/ Verzeichnis. Um die Standardeinstellungen zu verwenden, legen Sie die folgende Konfiguration fest:

{"Classification": "trino-exchange-manager" }

Wenn Sie einen benutzerdefinierten Speicherort angeben möchten, legen Sie die folgenden Eigenschaften in der trino-exchange-manager-Klassifizierung fest:

  • Setzen Sie exchange.use-local-hdfs auf true.

  • Legen Sie exchange.base-directories den Speicherort für das benutzerdefinierte Verzeichnis festHDFS, z. B. in. exchange.base-directories=/exchange Wenn das benutzerdefinierte Verzeichnis noch nicht vorhanden istHDFS, erstellt Amazon EMR es.

HDFSExchange Manager-Konfigurationen

Auf der Grundlage interner Testergebnisse empfehlen wir, HDFS für eine bessere Abfrageleistung im Vergleich zu anderen cloudbasierten Dateisystemen den Spoolvorgang auf lokal zu setzen. Mit können Sie die folgenden Konfigurationen für den Exchange-Manager festlegenHDFS.

Konfiguration Beschreibung Standardeinstellung

exchange.hdfs.block-size

Blockgröße für die HDFS Speicherung

4 MB

hdfs.config.resources

Liste der zu konfigurierenden Dateipfade HDFS

Falls exchange.use-local-hdfs true ist, werden die Pfade zu core-site.xml, hdfs-site.xml Dateien verwendet, andernfalls null

Zusätzliche Konfigurationseigenschaften für die fehlertolerante Ausführung und Informationen zur Einrichtung von Amazon S3 oder anderen Amazon-S3-kompatiblen Systemen für das Spooling finden Sie auf der Seite Fehlertolerante Ausführung in der Trino-Dokumentation.

Überlegungen und Einschränkungen

  • Wenn Sie die fehlertolerante Ausführung aktivieren, werden write-Operationen für Konnektoren deaktiviert, die write nicht unterstützen, wenn retry-policy festgelegt ist. Ab EMR Amazon-Version 6.9.0 unterstützen write Delta Lake-, Hive- und Iceberg-Konnektoren den Betrieb mit. retry-policy

  • Wenn Sie Exchange Manager verwenden und teure E/A-Vorgänge durchführen, kann es bei Ihren Abfragen zu Leistungseinbußen kommen, während Exchange Manager die Zwischendaten auf externen Speicher überträgt.