Konfigurieren von Tez - 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.

Konfigurieren von Tez

Sie können Tez anpassen, indem Sie mit der Konfigurationsklassifizierung tez-site Einstellungen in der Konfigurationsdatei tez-site.xml konfigurieren. Weitere Informationen finden Sie TezConfigurationin der Apache Tez-Dokumentation. Verwenden Sie entsprechend die hive-site- und pig-properties-Konfigurationsklassifizierungen, um zu ändern, dass Hive oder Pig die Tez-Ausführungs-Engine verwendet. Beispiele werden unten angezeigt.

Beispielkonfiguration

Beispiel: Anpassen der Tez-Stammprotokollierungsebene und Festlegen von Tez als Ausführungs-Engine für Hive und Pig

Mit dem unten angezeigten create-cluster-Beispielbefehl wird ein Cluster mit installierten Tez, Hive und Pig erstellt. Der Befehl verweist auf eine Datei die in Amazon S3 myConfig.jsongespeichert ist und die Eigenschaften für die tez-site-Klassifizierung angibt, die tez.am.log.level auf DEBUG setzt und die Ausführungs-Engine für Hive und Pig mit den Konfigurationsklassifizierungen hive-site und pig-properties auf Tez festlegt.

Anmerkung

Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

aws emr create-cluster --release-label emr-7.1.0 \ --applications Name=Tez Name=Hive Name=Pig --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json --use-default-roles

Beispielinhalte von myConfig.json werden unten angezeigt.

[ { "Classification": "tez-site", "Properties": { "tez.am.log.level": "DEBUG" } }, { "Classification": "hive-site", "Properties": { "hive.execution.engine": "tez" } }, { "Classification": "pig-properties", "Properties": { "exectype": "tez" } } ]
Anmerkung

Ab Amazon-EMR-Version 5.21.0 können Sie Cluster-Konfigurationen überschreiben und zusätzliche Konfigurationsklassifikationen für jede Instance-Gruppe in einem ausgeführten Cluster angeben. Dazu verwenden Sie die Amazon EMR-Konsole, das AWS Command Line Interface (AWS CLI) oder das AWS SDK. Weitere Informationen finden Sie unter Angeben einer Konfiguration für eine Instance-Gruppe in einem aktiven Cluster.

Asynchrone Öffnung von Tez-Splits

Wenn der Tabellenpfad eine große Anzahl kleiner Dateien enthält und eine Abfrage versucht, sie alle zu lesen, wird jede kleine Datei, die jeder einzelnen Aufteilung entspricht, zu einem gruppierten Tez-Split zusammengefasst. Ein einzelner Mapper verarbeitet dann den einzelnen gruppierten Tez-Split. Da die Ausführung synchron ist, wird jeder einzelne Split im Rahmen des gruppierten Splits einzeln verarbeitet. Dafür ist erforderlich, dass RecordReader-Objekte die Splits synchron verarbeiten.

Name Klassifizierung Beschreibung

tez.grouping.split.init.threads

tez-site

Gibt die Anzahl der Daemon-Threads an, die Tez verwendet, um die RecordReaders vorab zu initiieren und Splits zu öffnen. Für ACID-Tabellen ist der unterstützte Höchstwert von tez.grouping.split.init.threads 1.

tez.grouping.split.init.recordreaders

tez-site

Gibt die Anzahl an RecordReaders an, die von den Daemon-Threads vorinitialisiert werden sollen. Dies kann hilfreich sein, wenn ein gruppierter Tez-Split eine große Anzahl von InputSplits enthält. Die Initialisierung von RecordReaders zur Verarbeitung dieser Eingabe-Splits kann asynchron mit Daemon-Threads anstelle einer sequentiellen Verarbeitung erfolgen.

Benchmarking für das asynchrone Öffnen von Tez-Splits

Wir haben die folgenden Umgebungen und Konfigurationen für das Benchmarking der asynchronen Split-Öffnungsfunktion von Tez verwendet:

  • Benchmark-Umgebung – Amazon-EMR-Cluster mit einem Primärknoten, der m5.16xlarge verwendet, und 16 Core-Knoten, die m5.16xlarge verwenden.

  • Benchmark-Konfigurationen – Um das Szenario für das Benchmarking zu simulieren, bei dem sich eine große Anzahl von Eingabe-Splits in einem einzigen gruppierten Tez-Split befinden, ist tez.grouping.split-count ist auf 1 eingestellt.

  • Für das Benchmarking verwendete Tabelle – Die Tabelle enthält 200 Partitionen, wobei jede Partition eine einzelne Datei enthält. Der Benchmark wird durchgeführt, wenn diese Tabelle CSV-Dateien enthält und wenn diese Tabelle Parquet-Dateien enthält. Hive-Abfrage für das Benchmarking: zehnmal SELECT COUNT(*) aus der Tabelle, und es wird die durchschnittliche Laufzeit berechnet.

  • Konfigurationen zur Aktivierung des asynchronen geteilten Öffnens von Tez – wie folgt:

    • tez.grouping.split.init.threads = 4

    • tez.grouping.split.init.recordreaders = 10

Datensatz Feature deaktiviert (Basisversion) Feature aktiviert Verbesserung

CSV-Datensatz

90,26 Sekunden

79,20 Sekunden

12,25%

Parquet-Datensatz

54,67 Sekunden

42,23 Sekunden

22,75%