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 zum Standard FileCommitProtocol für Spark, wenn das S3A-Dateisystem verwendet wird.
MagicCommitProtocol
Das MagicCommitProtocol ist eine alternative Implementierung von, die für FileCommitProtocol
Das MagicCommitProtocol ist die FileCommitProtocol Standardimplementierung, die von Spark auf Amazon Elastic Map Reduce (EMR) verwendet wird, wenn das S3A-Dateisystem verwendet wird. Das verwendet MagicCommitProtocol intern den MagicV2Committer, um die Datei-Schreibvorgänge auf Amazon S3 durchzuführen.
Bei statischen Einfügeoperationen 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 durch Task-Versuche geschriebenen Dateien erst beim Commit im Ausgabeverzeichnis des Jobs. Dies wird erreicht, indem die Commit-Metadaten beim Commit-Aufruf der Aufgabe zurück in den Spark-Treiber exportiert werden.
Aktivieren MagicCommitProtocol
Die MagicCommitProtocol ist standardmäßig für Spark aktiviert, der 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.S3AFileSystemin core-site.xml ein.
Deaktivierung der MagicCommitProtocol
-
Sie können
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolden Wert auf false setzenSparkConf, indem Sie ihn in a fest codierenspark-submitund ihn als--confParameter in der Spark-Shell oder in denspark-sqlTools oder in übergeben.conf/spark-defaults.confWeitere Informationen finden Sie unter Spark-Konfigurationin der Apache Spark-Dokumentation. Das folgende Beispiel zeigt, wie das Gerät deaktiviert wird, MagicCommitProtocol während ein
spark-sqlBefehl 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-defaultsKonfigurationsklassifizierung, um diespark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolEigenschaft auf False zu setzen. Weitere Informationen finden Sie unter Konfigurieren von Anwendungen.
MagicCommitProtocol Überlegungen
-
Beim Einfügen statischer Partitionen MagicCommitProtocol verbraucht das auf Spark-Executoren eine kleine Menge an Speicher für jede durch einen Taskversuch geschriebene Datei, 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 ist auf Spark-Treibern Speicherplatz MagicCommitProtocol erforderlich, 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, normalerweise zusätzliche 200 MB Arbeitsspeicher benötigt werden. Weiter Informationen finden Sie unter Anwendungseigenschaftenin der Dokumentation zur Konfiguration von Apache Spark.