Configurar o Tez - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o Tez

Você pode personalizar o Tez definindo valores com a classificação de configuração tez-site, que define as configurações no arquivo de configuração tez-site.xml. Para obter mais informações, consulte a TezConfigurationdocumentação do Apache Tez. Para alterar o Hive ou o Pig para usar o mecanismo de execução do Tez, use o hive-site e classificações de configuração de pig-properties, conforme apropriado. Os exemplos são mostrados abaixo.

Exemplo de configuração

exemplo Exemplo: personalizar o nível de registro raiz do Tez e configurar o Tez como mecanismo de execução para o Hive e o Pig

O comando de exemplo create-cluster mostrado a seguir cria um cluster com o Tez, o Hive e o Pig instalados. O comando faz referência a um arquivo armazenado no Amazon S3, myConfig.json, que especifica as propriedades da classificação tez-site que define tez.am.log.level como DEBUG e define o mecanismo de execução do Tez para Hive e Pig usando as classificações de configuração hive-site e pig-properties.

nota

Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

aws emr create-cluster --release-label emr-7.2.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

Os conteúdos de exemplo de myConfig.json são mostrados abaixo.

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

Com a Amazon EMR versão 5.21.0 e posterior, você pode substituir as configurações do cluster e especificar classificações de configuração adicionais para cada grupo de instâncias em um cluster em execução. Você faz isso usando o EMR console da Amazon, o AWS Command Line Interface (AWS CLI) ou AWS SDK o. Para obter mais informações, consulte Supplying a Configuration for an Instance Group in a Running Cluster.

Abertura de divisão assíncrona do Tez

Quando há um grande número de arquivos pequenos no caminho da tabela e uma consulta tenta ler todos eles, cada arquivo pequeno que corresponde a cada divisão individual é combinado em uma divisão agrupada do Tez. Então, um único mapper processa a única divisão agrupada do Tez. Como a execução é síncrona, cada divisão individual sob a divisão agrupada é processada uma a uma. Isso exige que os objetos de RecordReader processem as divisões de forma síncrona.

Nome Classificação Descrição

tez.grouping.split.init.threads

tez-site

Especifica o número de threads do daemon que o Tez usa para pré-iniciar o RecordReaders e abrir as divisões. Em tabelas ACID, o valor máximo compatível de tez.grouping.split.init.threads é 1.

tez.grouping.split.init.recordreaders

tez-site

Especifica o número de RecordReaders a serem mantidos pré-inicializados por threads do daemon. Isso pode ajudar quando a divisão agrupada do Tez contém um grande número de InputSplits. A inicialização de RecordReaders para processar essas divisões de entrada pode ser feita de forma assíncrona com threads do daemon em vez de processamento sequencial.

Avaliação comparativa de abertura de divisão assíncrona do Tez

Usamos os ambientes e configurações a seguir para comparar a capacidade de abertura de divisão assíncrona do Tez.

  • Ambiente de referência — EMR cluster da Amazon com 1 nó primário que usa m5.16xlarge e 16 nós principais que usam5.16xlarge.

  • Configurações de avaliação comparativa: para simular o cenário de avaliação comparativa em que um grande número de divisões de entrada estão em uma única divisão agrupada do Tez, tez.grouping.split-count é definido como 1.

  • Tabela usada para avaliação comparativa: a tabela contém 200 partições, com cada partição contendo um único arquivo. A avaliação comparativa é feita para quando essa tabela contiver arquivos CSV e quando essa tabela contiver arquivos Parquet. Consulta do Hive para avaliação comparativa: SELECT COUNT(*) da tabela dez vezes e calcule o runtime médio.

  • Configurações para habilitar a abertura de divisão assíncrona do Tez: da seguinte forma:

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

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

Conjunto de dados Recurso desabilitado (linha de base) Recurso habilitado Melhoria

Conjunto de dados CSV

90.26 segundos

79.20 segundos

12,25%

Conjunto de dados Parquet

54.67 segundos

42.23 segundos

22,75%