Configurazione di Tez - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di Tez

Puoi personalizzare Tez impostando i valori tramite la classificazione di configurazione tez-site, che consente di configurare le impostazioni nel file di configurazione tez-site.xml. Per ulteriori informazioni, consulta la documentazione TezConfigurationdi Apache Tez. Per modificare Hive o Pig perché impieghino il motore di esecuzione Tez, utilizza le classificazioni di configurazione hive-site e pig-properties in base alle esigenze. Di seguito sono riportati alcuni esempi.

Configurazione di esempio

Esempio: Personalizzazione del livello di registrazione root di Tez e impostazione di Tez come motore di esecuzione per Hive e Pig

Il comando create-cluster di esempio riportato di seguito crea un cluster con Tez, Hive e Pig installati. Il comando fa riferimento a un file archiviato in Amazon S3, myConfig.json, il quale specifica le proprietà per la classificazione tez-site, che imposta tez.am.log.level su DEBUG e definisce Tex come motore di esecuzione per Hive e Pig utilizzando le configurazioni di classificazione hive-site e pig-properties.

Nota

I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

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

Contenuti di esempio di myConfig.json sono mostrati di seguito.

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

Con Amazon EMR versione 5.21.0 e successive, puoi sovrascrivere le configurazioni del cluster e specificare classificazioni di configurazione aggiuntive per ogni gruppo di istanze in un cluster in esecuzione. A tale scopo, puoi utilizzare la console Amazon EMR, AWS Command Line Interface (AWS CLI) o l' AWS SDK. Per ulteriori informazioni, consulta Specifica di una configurazione per un gruppo di istanze in un cluster in esecuzione.

Apertura della suddivisione asincrona Tez

Quando nel percorso della tabella è presente un gran numero di file di piccole dimensioni e una query tenta di leggerli tutti, ogni file di piccole dimensioni che corrisponde a ogni singola divisione viene combinato in una suddivisione raggruppata Tez. Un singolo mappatore elabora quindi la singola suddivisione raggruppata Tez. Poiché l'esecuzione è sincrona, ogni singola divisione nell'ambito della divisione raggruppata viene elaborata una per una. Ciò richiede che gli oggetti RecordReader elaborino le suddivisioni in modo sincrono.

Nome Classificazione Descrizione

tez.grouping.split.init.threads

tez-site

Specifica il numero di thread daemon che Tez utilizza per preinizializzare RecordReaders e aprire le suddivisioni. Per le tabelle ACID, il valore massimo supportato di tez.grouping.split.init.threads è 1.

tez.grouping.split.init.recordreaders

tez-site

Specifica il numero di file RecordReaders da tenere preinizializzati dai thread daemon. Questo può essere utile quando la suddivisione raggruppata Tez contiene un gran numero di InputSplits. L'inizializzazione di RecordReaders per elaborare tali suddivisioni di input può essere eseguita in modo asincrono con i thread daemon anziché l'elaborazione sequenziale.

Analisi comparativa per l'apertura asincrona delle suddivisioni Tez

Abbiamo utilizzato i seguenti ambienti e configurazioni per confrontare la capacità di apertura della suddivisione asincrona Tez:

  • Ambiente di riferimento: cluster Amazon EMR con 1 nodo primario che utilizza m5.16xlarge e 16 nodi primari che utilizzano m5.16xlarge.

  • Configurazioni di riferimento: per simulare lo scenario di benchmarking in cui un gran numero di suddivisioni di input si trovano in una singola suddivisione raggruppata Tez, tez.grouping.split-count è impostato su 1.

  • Tabella utilizzata per il benchmarking: la tabella contiene 200 partizioni, ognuna delle quali contiene un singolo file. Il benchmark viene eseguito quando la tabella contiene file CSV e file parquet. Query Hive per il benchmarking: SELECT COUNT(*) dalla tabella dieci volte e calcola il runtime medio.

  • Configurazioni per abilitare l'apertura della suddivisione asincrona Tez come segue:

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

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

Set di dati Funzionalità disabilitata (baseline) Funzionalità abilitata Miglioramenti

set di dati CSV

90,26 secondi

79,20 secondi

12,25%

set di dati Parquet

54,67 secondi

42,23 secondi

22,75%