

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
<a name="tez-configure"></a>

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 [TezConfiguration](https://tez.apache.org/releases/0.8.2/tez-api-javadocs/configs/TezConfiguration.html)documentaçã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
<a name="tez-configure-example"></a>

**Example 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`.  
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.13.0}} \
--applications Name=Tez Name=Hive Name=Pig --ec2-attributes KeyName={{myKey}} \
--instance-type m5.xlarge --instance-count 3 \
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/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 as versões 5.21.0 e posteriores do Amazon EMR, você pode substituir as configurações de 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 console do Amazon EMR, o AWS Command Line Interface (AWS CLI) ou o AWS SDK. Para obter mais informações, consulte [Supplying a Configuration for an Instance Group in a Running Cluster](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html).

## Abertura de divisão assíncrona do Tez
<a name="tez-configure-async"></a>

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.

O Amazon EMR 6.15.0 introduz configurações que você pode especificar para abrir de forma assíncrona as divisões de entrada em uma divisão agrupada do Tez. O recurso foi iniciado pelo [TEZ-4397](https://issues.apache.org/jira/browse/TEZ-4397), mas teve regressões no Hive do OSS. O Hive para EMR corrigiu as regressões e outros bugs na tabela ACID do Hive. Essa melhoria resulta em uma performance mais rápida das consultas de leitura quando há um grande número de divisões de entrada em uma única divisão agrupada do Tez.


| Nome | Classificação | Description | 
| --- | --- | --- | 
| `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. | 

Notas de configuração:


| Assunto | Detalhes | 
| --- | --- | 
| Definições de configuração recomendadas | É recomendável definir as configurações acima para os valores desejados em `hive-site` e `tez-site`. | 
| Valores correspondentes | Os valores das definições de configurações devem ser os mesmos em `hive-site` e `tez-site`. | 
| Recomendação de LLAP | Não é recomendável usar esse recurso quando o LLAP está habilitado. | 

### Avaliação comparativa de abertura de divisão assíncrona do Tez
<a name="tez-configure-async-benchmark"></a>

Usamos os ambientes e configurações a seguir para comparar a capacidade de abertura de divisão assíncrona do Tez.
+ **Ambiente de avaliação comparativa**: cluster do Amazon EMR com 1 nó primário que usa m5.16xlarge e 16 nós centrais que usam m5.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% | 