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.
EMR Spark MagicCommitProtocol
Ab EMR 6.15.0 MagicCommitProtocol wird es zur Standardeinstellung FileCommitProtocol für Spark, wenn das S3A-Dateisystem verwendet wird.
MagicCommitProtocol
Dies MagicCommitProtocol ist eine alternative Implementierung von, die für FileCommitProtocol
Dies MagicCommitProtocol ist die FileCommitProtocol Standardimplementierung, die von Spark auf Amazon Elastic Map Reduce (EMR) verwendet wird, wenn das S3A-Dateisystem verwendet wird. Der verwendet MagicCommitProtocol intern den MagicV2Committer, um die Dateischreibvorgänge auf Amazon S3 durchzuführen.
Bei statischen Einfügevorgängen MagicCommitProtocol schreibt der die Dateien während der Commit-Phase der Aufgabe in den Ausgabespeicherort des Jobs. Im Gegensatz dazu erscheinen bei dynamischen Einfüge-Überschreibvorgängen die Dateien, die bei Versuchen mit der Aufgabe geschrieben wurden, erst nach dem Commit des Jobs am Ausgabespeicherort des Jobs. Dies wird erreicht, indem die Commit-Metadaten beim Commit-Aufruf der Aufgabe zurück in den Spark-Treiber exportiert werden.
Aktivieren MagicCommitProtocol
Das MagicCommitProtocol ist standardmäßig aktiviert, wenn Spark auf Amazon Elastic Map Reduce (EMR) läuft, wenn das S3A-Dateisystem verwendet wird.
Um das S3A-Dateisystem zu verwenden, können Sie entweder:
-
Verwenden Sie das Dateischema wie
s3a://
bei der Definition der Tabelle, Partition oder des Verzeichnisses. -
Stellen Sie die Konfiguration
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
in core-site.xml ein.
Deaktivierung der MagicCommitProtocol
-
Sie können
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
den Wert auf false setzenSparkConf
, indem Sie ihn in a fest codierenspark-submit
und ihn als--conf
Parameter in der Spark-Shell oder inspark-sql
Tools oder in übergeben.conf/spark-defaults.conf
Weitere Informationen finden Sie unter Spark-Konfigurationin der Apache Spark-Dokumentation. Das folgende Beispiel zeigt, wie ein
spark-sql
Befehl deaktiviert wird MagicCommitProtocol , während er ausgeführt wird.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
-
Verwenden Sie die
spark-defaults
Konfigurationsklassifizierung, um diespark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
Eigenschaft auf False zu setzen. Weitere Informationen finden Sie unter Konfigurieren von Anwendungen.
MagicCommitProtocol Überlegungen
-
Beim Einfügen statischer Partitionen MagicCommitProtocol beansprucht der auf Spark-Executoren eine geringe Menge an Speicher für jede Datei, die durch einen Task-Versuch geschrieben wurde, bis die Aufgabe festgeschrieben oder abgebrochen wird. Bei den meisten Aufträgen ist die Menge des belegten Speichers vernachlässigbar. Für den Spark-Treiber ist kein zusätzlicher Speicherbedarf erforderlich
-
Für das dynamische Einfügen von Partitionen MagicCommitProtocol benötigt der auf Spark-Treibern Speicher, um die Metadateninformationen jeder übergebenen Datei zu speichern, bis der Job festgeschrieben oder abgebrochen wird. Bei den meisten Aufträgen ist die standardmäßige Speichereinstellung des Spark-Treibers vernachlässigbar.
Bei Aufträgen mit Aufgaben mit langer Laufzeit, die eine große Anzahl von Dateien schreiben, kann der Speicherverbrauch des Commit-Protokolls spürbar sein und Anpassungen des für Spark zugewiesenen Speichers erfordern, insbesondere für Spark-Ausführer. Sie können den Speicher mithilfe der
spark.driver.memory
-Eigenschaft für Spark-Treiber und der Eigenschaft fürspark.executor.memory
-Spark-Aufträge optimieren. Als Richtlinie gilt, dass für eine einzelne Aufgabe, die 100.000 Dateien schreibt, in der Regel zusätzliche 200 MB Arbeitsspeicher benötigt werden. Weiter Informationen finden Sie unter Anwendungseigenschaftenin der Dokumentation zur Konfiguration von Apache Spark.