

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á.

# Apache Flink
<a name="emr-flink"></a>

O [Apache Flink](https://flink.apache.org/) é um mecanismo de fluxo de dados de streaming que você pode usar para executar o processamento de streaming em tempo real em fontes de dados de alto throughput. O Flink suporta semântica de tempo de evento para out-of-order eventos, semântica de exatamente uma vez, controle de contrapressão e APIs otimizado para escrever aplicativos de streaming e em lote.

Além disso, o Flink tem conectores para fontes de dados de terceiros, como o seguinte:
+ [Amazon Kinesis Data Streams](https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/connectors/kinesis.html)
+ [Apache Kafka](https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/connectors/kafka.html)
+ [Elasticsearch Connector do Flink](https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/connectors/elasticsearch2.html)
+ [API de streaming do Twitter](https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/connectors/twitter.html)
+ [Cassandra](https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/connectors/cassandra.html)

O Amazon EMR oferece suporte ao Flink como um aplicativo do YARN para que você possa gerenciar recursos junto com outros aplicativos em um cluster. Flink-on-YARNpermite que você envie trabalhos temporários do Flink, ou você pode criar um cluster de longa execução que aceita vários trabalhos e aloca recursos de acordo com a reserva geral do YARN.

O Flink é incluído nas versões 5.1.0 e posteriores do Amazon EMR.

**nota**  
O suporte para a classe `FlinkKinesisConsumer` foi adicionado no Amazon EMR versão 5.2.1.

A tabela a seguir lista a versão do Flink incluída na versão mais recente da série 7.x do Amazon EMR, além dos componentes que o Amazon EMR instala com o Flink.

Para a versão dos componentes instalados com o Flink nesta versão, consulte Versões de componentes da [versão 7.12.0](emr-7120-release.md).


**Informações sobre a versão do Flink para o emr-7.12.0**  

| Rótulo de versão do Amazon EMR | Versão do Flink | Componentes instalados com o Flink | 
| --- | --- | --- | 
| emr-7.12.0 | Flink 1.20.0-amzn-6 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 

A tabela a seguir lista a versão do Flink incluída na versão mais recente da série 6.x do Amazon EMR, além dos componentes que o Amazon EMR instala com o Flink.

Para obter a versão dos componentes instalados com o Flink nessa versão, consulte [Release 6.15.0 Component Versions](emr-6150-release.md).


**Informações de versão do Flink para o emr-6.15.0**  

| Rótulo de versão do Amazon EMR | Versão do Flink | Componentes instalados com o Flink | 
| --- | --- | --- | 
| emr-6.15.0 | Flink 1.17.1-amzn-1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 

A tabela a seguir lista a versão do Flink incluída na versão mais recente da série 5.x do Amazon EMR, além dos componentes que o Amazon EMR instala com o Flink.

Para obter a versão dos componentes instalados com o Flink nesse lançamento, consulte [Release 5.36.2 Component Versions](emr-5362-release.md).


**Informações de versão do Flink para o emr-5.36.2**  

| Rótulo de versão do Amazon EMR | Versão do Flink | Componentes instalados com o Flink | 
| --- | --- | --- | 
| emr-5.36.2 | Flink 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 

**Topics**
+ [Criar um cluster com o Flink](flink-create-cluster.md)
+ [Configurar o Flink no Amazon EMR](flink-configure.md)
+ [Usar trabalhos do Flink no Amazon EMR](flink-jobs.md)
+ [Usar o shell Scala](flink-scala.md)
+ [Localizar a interface Web do Flink](flink-web-interface.md)
+ [Escalador automático do Flink](flink-autoscaler.md)
+ [Otimização dos tempos de reinício dos trabalhos para operações de recuperação e ajuste de escala de tarefas](flink-restart.md)
+ [Usar trabalhos do Flink pelo Zeppelin no Amazon EMR](flink-zeppelin.md)
+ [Histórico de versões do Flink](Flink-release-history.md)

# Criar um cluster com o Flink
<a name="flink-create-cluster"></a>

Você pode iniciar um cluster com o Console de gerenciamento da AWS, AWS CLI, ou um AWS SDK.<a name="emr-flink-create-console"></a>

**Iniciar um cluster com o Flink instalado no console**

1. [Abra o console do Amazon EMR em https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. Escolha **Create cluster (Criar cluster)**, **Go to advanced options (Ir para opções avançadas)**.

1.  Para **Software Configuration (Configuração do software)**, selecione **EMR Release emr-5.1.0** ou posterior.

1.  Selecione **Flink** como um aplicativo, juntamente com outros a serem instalados.

1.  Selecione as outras opções conforme necessário e selecione **Create cluster (Criar cluster)**.

**Para iniciar um cluster com o Flink a partir do AWS CLI**
+ Crie o cluster usando o seguinte comando:

  ```
  aws emr create-cluster --release-label emr-7.12.0 \
  --applications Name=Flink \
  --region us-east-1 \
  --log-uri s3://myLogUri \
  --instance-type m5.xlarge \
  --instance-count 2 \
  --service-role EMR_DefaultRole_V2 \ 
  --ec2-attributes KeyName=MyKeyName,InstanceProfile=EMR_EC2_DefaultRole \
  --steps Type=CUSTOM_JAR,Jar=command-runner.jar,Name=Flink_Long_Running_Session,\
  Args=flink-yarn-session,-d
  ```
**nota**  
Os caracteres de continuação de linha do Linux (\$1) 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 (^).

# Configurar o Flink no Amazon EMR
<a name="flink-configure"></a>

## Configurar o Flink com o Hive Metastore e o Catálogo do Glue
<a name="flink-configure-hive"></a>

As versões 6.9.0 e superiores do Amazon EMR oferecem suporte ao Hive Metastore e ao AWS Glue Catalog com o conector Apache Flink para o Hive. Esta seção descreve as etapas necessárias para configurar o [Catálogo do AWS Glue](#flink-configure-hive-glue) e o [Hive Metastore](#flink-configure-hive-metastore) com o Flink.

**Topics**
+ [Usar o Hive Metastore](#flink-configure-hive-metastore)
+ [Use o catálogo de dados AWS Glue](#flink-configure-hive-glue)

### Usar o Hive Metastore
<a name="flink-configure-hive-metastore"></a>

1. Crie um cluster do EMR com a versão 6.9.0 ou posterior e pelo menos duas aplicações: **Hive** e **Flink**. 

1. Use [script runner](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html) para executar o script a seguir como função de etapa:

   `hive-metastore-setup.sh`

   ```
   sudo cp /usr/lib/hive/lib/antlr-runtime-3.5.2.jar /usr/lib/flink/lib 
   sudo cp /usr/lib/hive/lib/hive-exec-3.1.3*.jar /lib/flink/lib 
   sudo cp /usr/lib/hive/lib/libfb303-0.9.3.jar /lib/flink/lib 
   sudo cp /usr/lib/flink/opt/flink-connector-hive_2.12-1.15.2.jar /lib/flink/lib
   sudo chmod 755 /usr/lib/flink/lib/antlr-runtime-3.5.2.jar 
   sudo chmod 755 /usr/lib/flink/lib/hive-exec-3.1.3*.jar 
   sudo chmod 755 /usr/lib/flink/lib/libfb303-0.9.3.jar
   sudo chmod 755 /usr/lib/flink/lib/flink-connector-hive_2.12-1.15.2.jar
   ```  
![\[Form to add a Custom JAR step with fields for step type, name, JAR location, arguments, and failure action.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/hive.png)

### Use o catálogo de dados AWS Glue
<a name="flink-configure-hive-glue"></a>

1. Crie um cluster do EMR com a versão 6.9.0 ou posterior e pelo menos duas aplicações: **Hive** e **Flink**. 

1. Selecione **Usar com metadados da tabela do Hive** nas configurações do Catálogo de Dados do AWS Glue para habilitar o Catálogo de Dados no cluster.

1. Use [script runner](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html) para executar o seguinte script como função de etapa: [Run commands and scripts on an Amazon EMR cluster](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html):

   glue-catalog-setup.sh 

   ```
   sudo cp /usr/lib/hive/auxlib/aws-glue-datacatalog-hive3-client.jar /usr/lib/flink/lib 
   sudo cp /usr/lib/hive/lib/antlr-runtime-3.5.2.jar /usr/lib/flink/lib 
   sudo cp /usr/lib/hive/lib/hive-exec-3.1.3*.jar /lib/flink/lib 
   sudo cp /usr/lib/hive/lib/libfb303-0.9.3.jar /lib/flink/lib 
   sudo cp /usr/lib/flink/opt/flink-connector-hive_2.12-1.15.2.jar /lib/flink/lib
   sudo chmod 755 /usr/lib/flink/lib/aws-glue-datacatalog-hive3-client.jar 
   sudo chmod 755 /usr/lib/flink/lib/antlr-runtime-3.5.2.jar 
   sudo chmod 755 /usr/lib/flink/lib/hive-exec-3.1.3*.jar 
   sudo chmod 755 /usr/lib/flink/lib/libfb303-0.9.3.jar
   sudo chmod 755 /usr/lib/flink/lib/flink-connector-hive_2.12-1.15.2.jar
   ```  
![\[Form to add a Custom JAR step with fields for step type, name, JAR location, arguments, and failure action.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/hive.png)

## Configurar o Flink com um arquivo de configuração
<a name="flink-configure-config"></a>

É possível usar a API de configuração do Amazon EMR para configurar o Flink com um arquivo de configuração. Os arquivos que são configuráveis com a API são:
+ `flink-conf.yaml`
+ `log4j.properties`
+ `flink-log4j-session`
+ `log4j-cli.properties`

O principal arquivo de configuração para o Flink é `flink-conf.yaml`. 

**Para configurar o número de slots de tarefas que são usados para o Flink a partir do AWS CLI**

1. Crie um arquivo `configurations.json`, com o seguinte conteúdo:

   ```
   [
       {
         "Classification": "flink-conf",
         "Properties": {
           "taskmanager.numberOfTaskSlots":"2"
         }
       }
   ]
   ```

1. Em seguida, crie um cluster com a seguinte configuração:

   ```
   aws emr create-cluster --release-label emr-7.12.0 \
   --applications Name=Flink \
   --configurations file://./configurations.json \
   --region us-east-1 \
   --log-uri s3://myLogUri \
   --instance-type m5.xlarge \
   --instance-count 2 \
   --service-role EMR_DefaultRole_V2 \ 
   --ec2-attributes KeyName=YourKeyName,InstanceProfile=EMR_EC2_DefaultRole
   ```

**nota**  
Também é possível alterar algumas configurações com a API Flink. Para obter mais informações, consulte [https://ci.apache.org/projects/flink/flink-docs-release-1.12/concepts/index.html](https://ci.apache.org/projects/flink/flink-docs-release-1.12/concepts/index.html) na documentação do Flink.  
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).

### Opções de paralelismo
<a name="flink-parallelism"></a>

Como proprietário da aplicação, você sabe quais recursos atribuir a tarefas no Flink. Para os exemplos nesta documentação, use o mesmo número de tarefas que as instâncias de tarefa que você usa para a aplicação. Geralmente, recomendamos isso para o nível de paralelismo inicial, mas também é possível aumentar a granularidade do paralelismo usando slots de tarefa, que geralmente não excedem o número de [núcleos virtuais](https://aws.amazon.com/ec2/virtualcores/) por instância. Para obter mais informações sobre a arquitetura do Flink, consulte [https://ci.apache.org/projects/flink/flink-docs-master/concepts/index.html](https://ci.apache.org/projects/flink/flink-docs-master/concepts/index.html) na documentação do Flink.

## Configurar o Flink em um cluster do EMR com múltiplos nós primários
<a name="flink-multi-master"></a>

O JobManager do Flink permanece disponível durante o processo de failover do nó primário em um cluster do Amazon EMR com vários nós primários. A partir do Amazon EMR 5.28.0, a JobManager alta disponibilidade também é ativada automaticamente. Nenhuma configuração manual é necessária.

Com as versões 5.27.0 ou anteriores do Amazon EMR, esse JobManager é um único ponto de falha. Quando o JobManager falha, ele perde todos os estados de trabalho e não retoma os trabalhos em execução. Você pode ativar a JobManager alta disponibilidade configurando a contagem de tentativas do aplicativo, marcando o ponto de verificação e ativando o armazenamento ZooKeeper como estado para o Flink, conforme demonstra o exemplo a seguir:

```
[
  {
    "Classification": "yarn-site",
    "Properties": {
      "yarn.resourcemanager.am.max-attempts": "10"
    }
  },
  {
    "Classification": "flink-conf",
    "Properties": {
        "yarn.application-attempts": "10",
        "high-availability": "zookeeper",
        "high-availability.zookeeper.quorum": "%{hiera('hadoop::zk')}",
        "high-availability.storageDir": "hdfs:///user/flink/recovery",
        "high-availability.zookeeper.path.root": "/flink"
    }
  }
]
```

É necessário configurar o máximo de tentativas mestre do aplicativo para o YARN e as tentativas do aplicativo para o Flink. Para obter mais informações, consulte [Configuration of YARN cluster high availability](https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/jobmanager_high_availability.html#maximum-application-master-attempts-yarn-sitexml). Você também pode configurar o ponto de verificação do Flink para reiniciar a JobManager recuperação de trabalhos em execução de pontos de verificação concluídos anteriormente. Para obter mais informações, consulte [Flink checkpointing](https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/checkpointing.html).

## Configurar o tamanho do processo de memória
<a name="flink-process-memory"></a>

Para versões do Amazon EMR que usam o Flink 1.11.x, você deve configurar o tamanho total do processo de memória para () e JobManager (`jobmanager.memory.process.size`) in. TaskManager `taskmanager.memory.process.size` `flink-conf.yaml` É possível definir esses valores configurando o cluster com a API de configuração ou retirando manualmente os comentários desses campos via SSH. O Flink fornece os valores padrão a seguir.
+ `jobmanager.memory.process.size`: 1600m
+ `taskmanager.memory.process.size`: 1728m

Para excluir o metaspace e a sobrecarga da JVM, use o tamanho total da memória do Flink (`taskmanager.memory.flink.size`) em vez de `taskmanager.memory.process.size`. O valor padrão para `taskmanager.memory.process.size` é 1280m. Não é recomendável definir `taskmanager.memory.process.size` e `taskmanager.memory.process.size`.

Todas as versões do Amazon EMR que usam o Flink 1.12.0 e versões posteriores têm os valores padrão listados no conjunto de código aberto do Flink como valores padrão no Amazon EMR, então você não precisa configurá-los.

## Configurar o tamanho do arquivo de saída de log
<a name="flink-log-output"></a>

Os contêineres de aplicações Flink criam e gravam em três tipos de arquivos de log: arquivos `.out`, arquivos `.log` e arquivos `.err`. Somente os arquivos `.err` são compactados e removidos do sistema de arquivos, enquanto os arquivos de log `.log` e `.out` permanecem no sistema de arquivos. Para garantir que esses arquivos de saída continuem gerenciáveis e que o cluster continue estável, é possível configurar a alternância de logs `log4j.properties` para definir um número máximo de arquivos e limitar o tamanho deles.

**Amazon EMR 5.30.0 e versões posteriores**

A partir do Amazon EMR 5.30.0, o Flink usa a estrutura de registro em log log4j2 com o nome de classificação de configuração `flink-log4j.`. O exemplo de configuração a seguir demonstra o formato log4j2.

```
[
  {
    "Classification": "flink-log4j",
    "Properties": {
      "appender.main.name": "MainAppender",
      "appender.main.type": "RollingFile",
      "appender.main.append" : "false",
      "appender.main.fileName" : "${sys:log.file}",
      "appender.main.filePattern" : "${sys:log.file}.%i",
      "appender.main.layout.type" : "PatternLayout",
      "appender.main.layout.pattern" : "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n",
      "appender.main.policies.type" : "Policies",
      "appender.main.policies.size.type" : "SizeBasedTriggeringPolicy",
      "appender.main.policies.size.size" : "100MB",
      "appender.main.strategy.type" : "DefaultRolloverStrategy",
      "appender.main.strategy.max" : "10"
    },
  }
]
```

**Amazon EMR 5.29.0 e versões anteriores**

Com o Amazon EMR versão 5.29.0 e posteriores, o Flink usa o framework de registro em log log4j. O exemplo de configuração a seguir demonstra o formato log4j.

```
[
  {
    "Classification": "flink-log4j",
    "Properties": {
      "log4j.appender.file": "org.apache.log4j.RollingFileAppender",
      "log4j.appender.file.append":"true",
      # keep up to 4 files and each file size is limited to 100MB
      "log4j.appender.file.MaxFileSize":"100MB",
      "log4j.appender.file.MaxBackupIndex":4,
      "log4j.appender.file.layout":"org.apache.log4j.PatternLayout",
      "log4j.appender.file.layout.ConversionPattern":"%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n"
    },
  }
]
```

## Configurar o Flink para ser executado com o Java 11
<a name="flink-configure-java11"></a>

As versões 6.12.0 e posteriores do Amazon EMR oferecem suporte ao runtime do Java 11 para o Flink. As seções a seguir descrevem como configurar o cluster para fornecer suporte ao runtime do Java 11 para o Flink.

**Topics**
+ [Configurar o Flink para Java 11 ao criar um cluster](#flink-configure-java11-create)
+ [Configurar o Flink para Java 11 em um cluster em execução](#flink-configure-java11-update)
+ [Confirmar o runtime do Java para o Flink em um cluster em execução](#flink-configure-java11-confirm)

### Configurar o Flink para Java 11 ao criar um cluster
<a name="flink-configure-java11-create"></a>

Realize as etapas a seguir para criar um cluster do EMR com o Flink e runtime do Java 11. O arquivo de configuração ao qual você adiciona suporte ao runtime do Java 11 é `flink-conf.yaml`.

------
#### [ Console ]

**Para criar um cluster com o Flink e o runtime do Java 11 no console**

1. [Faça login no e abra Console de gerenciamento da AWS o console do Amazon EMR em https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. Escolha **Clusters** em **EMR no EC2** no painel de navegação e **Criar cluster**.

1. Selecione o Amazon EMR versão 6.12.0 ou posterior e escolha instalar a aplicação Flink. Selecione qualquer outra aplicação que você queira instalar no cluster.

1. Continue configurando o cluster. Na seção opcional **Configurações de software**, use a opção padrão **Inserir configuração** e insira a seguinte configuração:

   ```
   [
       {
         "Classification": "flink-conf",
         "Properties": {
           "containerized.taskmanager.env.JAVA_HOME":"/usr/lib/jvm/jre-11",
           "containerized.master.env.JAVA_HOME":"/usr/lib/jvm/jre-11",
           "env.java.home":"/usr/lib/jvm/jre-11"
         }
       }
   ]
   ```

1. Continue configurando e iniciando o cluster.

------
#### [ AWS CLI ]

**Criar um cluster com o Flink e o runtime do Java 11 na CLI**

1. Crie um arquivo de configuração `configurations.json` que configure o Flink para usar o Java 11. 

   ```
   [
       {
         "Classification": "flink-conf",
         "Properties": {
           "containerized.taskmanager.env.JAVA_HOME":"/usr/lib/jvm/jre-11",
           "containerized.master.env.JAVA_HOME":"/usr/lib/jvm/jre-11",
           "env.java.home":"/usr/lib/jvm/jre-11"
         }
       }
   ]
   ```

1. A partir do AWS CLI, crie um novo cluster do EMR com o Amazon EMR versão 6.12.0 ou superior e instale o aplicativo Flink, conforme mostrado no exemplo a seguir:

   ```
   aws emr create-cluster --release-label emr-6.12.0 \ 
   --applications Name=Flink \ 
   --configurations file://./configurations.json \ 
   --region us-east-1 \ 
   --log-uri s3://myLogUri \ 
   --instance-type m5.xlarge \ 
   --instance-count 2 \ 
   --service-role EMR_DefaultRole_V2 \ 
   --ec2-attributes KeyName=YourKeyName,InstanceProfile=EMR_EC2_DefaultRole
   ```

------

### Configurar o Flink para Java 11 em um cluster em execução
<a name="flink-configure-java11-update"></a>

Realize as etapas a seguir para atualizar um cluster do EMR em execução com o Flink e runtime do Java 11. O arquivo de configuração ao qual você adiciona suporte ao runtime do Java 11 é `flink-conf.yaml`.

------
#### [ Console ]

**Para atualizar um cluster em execução com o Flink e o runtime do Java 11 no console**

1. [Faça login no e abra Console de gerenciamento da AWS o console do Amazon EMR em https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. Escolha **Clusters** em **EMR no EC2** no painel de navegação esquerdo, e selecione o cluster que você deseja atualizar.
**nota**  
O cluster deve usar o Amazon EMR versão 6.12.0 ou posterior para oferecer suporte ao Java 11.

1. Selecione a guia **Configuração**.

1. Na seção **Configurações do grupo de instâncias**, selecione o grupo de instâncias **Em execução** que você deseja atualizar e escolha **Reconfigurar** no menu de ações da lista.

1. Reconfigure o grupo de instâncias com a opção **Editar atributos**, conforme mostrado a seguir. Selecione **Adicionar nova configuração** após cada.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/flink-configure.html)

1. Selecione **Salvar alterações** para adicionar as configurações.

------
#### [ AWS CLI ]

**Atualizar um cluster em execução para usar o Flink e o runtime do Java 11 na CLI**

Você pode usar o comando `modify-instance-groups` para especificar configurações para cada grupo de instâncias em um cluster em execução.

1. Primeiro, crie um arquivo de configuração `configurations.json` que configure o Flink para usar o Java 11. No exemplo a seguir, *ig-1xxxxxxx9* substitua pelo ID do grupo de instâncias que você quer reconfigurar. Salve o arquivo no mesmo diretório em que você executará o comando `modify-instance-groups`.

   ```
   [
      {
         "InstanceGroupId":"ig-1xxxxxxx9",
         "Configurations":[
            {
               "Classification":"flink-conf",
               "Properties":{
                 "containerized.taskmanager.env.JAVA_HOME":"/usr/lib/jvm/jre-11",
                 "containerized.master.env.JAVA_HOME":"/usr/lib/jvm/jre-11",
                 "env.java.home":"/usr/lib/jvm/jre-11"
               },
               "Configurations":[]
            }
         ]
      }
   ]
   ```

1. A partir do AWS CLI, execute o seguinte comando. Substitua o ID do grupo de instâncias que você deseja reconfigurar:

   ```
   aws emr modify-instance-groups --cluster-id j-2AL4XXXXXX5T9 \
   --instance-groups file://configurations.json
   ```

------

### Confirmar o runtime do Java para o Flink em um cluster em execução
<a name="flink-configure-java11-confirm"></a>

Para determinar o runtime do Java para um cluster em execução, faça login no nó primário com SSH, conforme descrito em [Connect to the primary node with SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html). Em seguida, execute o seguinte comando:

```
ps -ef | grep flink
```

O comando `ps` com a opção `-ef` lista todos os processos que estão em execução no sistema. É possível filtrar essa saída com `grep` para encontrar menções à string `flink`. Revise a saída do valor do Ambiente de Execução Java (JRE), `jre-XX`. Na saída a seguir, `jre-11` indica que o Java 11 está selecionado em runtime para o Flink.

```
flink    19130     1  0 09:17 ?        00:00:15 /usr/lib/jvm/jre-11/bin/java -Djava.io.tmpdir=/mnt/tmp -Dlog.file=/usr/lib/flink/log/flink-flink-historyserver-0-ip-172-31-32-127.log -Dlog4j.configuration=file:/usr/lib/flink/conf/log4j.properties -Dlog4j.configurationFile=file:/usr/lib/flink/conf/log4j.properties -Dlogback.configurationFile=file:/usr/lib/flink/conf/logback.xml -classpath /usr/lib/flink/lib/flink-cep-1.17.0.jar:/usr/lib/flink/lib/flink-connector-files-1.17.0.jar:/usr/lib/flink/lib/flink-csv-1.17.0.jar:/usr/lib/flink/lib/flink-json-1.17.0.jar:/usr/lib/flink/lib/flink-scala_2.12-1.17.0.jar:/usr/lib/flink/lib/flink-table-api-java-uber-1.17.0.jar:/usr/lib/flink/lib/flink-table-api-scala-bridge_2.12-1.17.0.
```

Como alternativa, [faça login no nó primário com SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) e inicie uma sessão YARN do Flink com o comando `flink-yarn-session -d`. A saída mostra a Máquina Virtual Java (JVM) para Flink, `java-11-amazon-corretto` no exemplo a seguir:

```
2023-05-29 10:38:14,129 INFO  org.apache.flink.configuration.GlobalConfiguration           [] - Loading configuration property: containerized.master.env.JAVA_HOME, /usr/lib/jvm/java-11-amazon-corretto.x86_64
```

# Usar trabalhos do Flink no Amazon EMR
<a name="flink-jobs"></a>

Há várias maneiras de interagir com o Flink no Amazon EMR: por meio do console, da interface do Flink encontrada na interface de usuário de rastreamento e ResourceManager na linha de comando. Você pode enviar um arquivo JAR para uma aplicação Flink com qualquer uma destas opções. Depois de enviar um arquivo JAR, ele se torna um trabalho gerenciado pelo Flink JobManager. O JobManager está localizado no nó YARN que hospeda o daemon do Application Master da sessão Flink.

Você pode executar uma aplicação do Flink como um trabalho do YARN em um cluster de execução prolongada ou em um cluster transitório. Em um trabalho de execução prolongada, você pode enviar vários trabalhos do Flink para um cluster do Flink em execução no Amazon EMR. Se você executar um trabalho do Flink em um cluster transitório, seu cluster do Amazon EMR existirá somente pelo tempo necessário para executar a aplicação Flink; portanto, você pagará somente pelos recursos e pelo tempo usados. Você pode enviar um trabalho do Flink com a operação da API do Amazon `AddSteps` EMR, como um argumento de etapa para `RunJobFlow` a operação e por meio AWS CLI `add-steps` dos `create-cluster` comandos ou.

## Iniciar uma aplicação YARN do Flink como uma etapa em um cluster de execução prolongada
<a name="flink-add-step"></a>

Para iniciar uma aplicação Flink para a qual vários clientes possam enviar trabalhos por meio de operações de API do YARN, é necessário criar um cluster ou adicionar uma aplicação Flink a um cluster já existente. Para obter instruções sobre como criar um novo cluster, consulte [Criar um cluster com o Flink](flink-create-cluster.md). Para iniciar uma sessão do YARN em um cluster atual, use as etapas a seguir no console, na AWS CLI ou no SDK do Java.

**nota**  
O comando `flink-yarn-session` foi incluído no Amazon EMR versão 5.5.0 como um wrapper para o script `yarn-session.sh` para simplificar a execução. Se você usa uma versão anterior do Amazon EMR, substitua `bash -c "/usr/lib/flink/bin/yarn-session.sh -d"` por **Arguments** no console ou`Args` no comando AWS CLI .

**Enviar um trabalho do Flink que está em um cluster existente no console**

Envie a sessão do Flink usando o comando `flink-yarn-session` em um cluster já existente.

1. [Abra o console do Amazon EMR em https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. Na lista de clusters, selecione o cluster que você iniciou anteriormente.

1. Na página de detalhes do cluster, selecione **Steps (Etapas)**, **Add Step (Adicionar etapa)**.

1. Use as diretrizes a seguir para inserir os parâmetros e escolha **Adicionar**.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/flink-jobs.html)

**Para enviar uma tarefa do Flink em um cluster existente com o AWS CLI**
+ Use o comando `add-steps` para adicionar um trabalho do Flink a um cluster de execução prolongada. O comando de exemplo a seguir especifica `Args="flink-yarn-session", "-d"` para iniciar uma sessão do Flink em seu cluster do YARN em um estado desconectado (`-d`). Consulte a [configuração do YARN](https://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/yarn_setup.html#flink-yarn-session) na documentação do Flink mais recente para obter mais detalhes sobre argumentos.

  ```
  aws emr add-steps --cluster-id <j-XXXXXXXX> --steps Type=CUSTOM_JAR,Name=<example-flink-step-name>,Jar=command-runner.jar,Args="flink-yarn-session","-d"
  ```

## Enviar o trabalho para uma aplicação Flink existente em um cluster de execução prolongada
<a name="flink-submit-work"></a>

Caso já tenha uma aplicação Flink em um cluster de execução prolongada, você poderá especificar o ID da aplicação Flink do cluster para enviar trabalhos para ele. Para obter o ID do aplicativo, execute `yarn application -list` na operação da [YarnClient](https://hadoop.apache.org/docs/current/api/org/apache/hadoop/yarn/client/api/YarnClient.html)API AWS CLI ou por meio dela:

```
$ yarn application -list
16/09/07 19:32:13 INFO client.RMProxy: Connecting to ResourceManager at ip-10-181-83-19.ec2.internal/10.181.83.19:8032
Total number of applications (application-types: [] and states: [SUBMITTED, ACCEPTED, RUNNING]):1
Application-Id    Application-Name    Application-Type    User    Queue    State    Final-State    Progress    Tracking-URL
application_1473169569237_0002    Flink session with 14 TaskManagers (detached)	        Apache Flink	    hadoop	   default	           RUNNING	         UNDEFINED	           100%	http://ip-10-136-154-194.ec2.internal:33089
```

O ID do aplicativo para esta sessão do Flink é`application_1473169569237_0002`, que você pode usar para enviar trabalhos para o aplicativo a partir do AWS CLI ou de um SDK.

**Example SDK para Java**  

```
List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
  
HadoopJarStepConfig flinkWordCountConf = new HadoopJarStepConfig()
    .withJar("command-runner.jar")
    .withArgs("flink", "run", "-m", "yarn-cluster", "-yid", "application_1473169569237_0002", "-yn", "2", "/usr/lib/flink/examples/streaming/WordCount.jar", 
      "--input", "s3://amzn-s3-demo-bucket/pg11.txt", "--output", "s3://amzn-s3-demo-bucket/alice2/");
  
StepConfig flinkRunWordCount = new StepConfig()
  .withName("Flink add a wordcount step")
  .withActionOnFailure("CONTINUE")
  .withHadoopJarStep(flinkWordCountConf);
  
stepConfigs.add(flinkRunWordCount); 
  
AddJobFlowStepsResult res = emr.addJobFlowSteps(new AddJobFlowStepsRequest()
   .withJobFlowId("myClusterId")
   .withSteps(stepConfigs));
```

**Example AWS CLI**  

```
aws emr add-steps --cluster-id <j-XXXXXXXX> \
--steps Type=CUSTOM_JAR,Name=Flink_Submit_To_Long_Running,Jar=command-runner.jar,\
Args="flink","run","-m","yarn-cluster","-yid","application_1473169569237_0002",\
"/usr/lib/flink/examples/streaming/WordCount.jar",\
"--input","s3://amzn-s3-demo-bucket/pg11.txt","--output","s3://amzn-s3-demo-bucket/alice2/" \
--region <region-code>
```

## Enviar um trabalho transitório do Flink
<a name="flink-transient-job"></a>

Os exemplos a seguir iniciam um cluster transitório que executa um trabalho do Flink e é terminado na conclusão.

**Example SDK para Java**  

```
import java.util.ArrayList;
import java.util.List;
import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce;
import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder;
import com.amazonaws.services.elasticmapreduce.model.*;

public class Main_test {

	public static void main(String[] args) {
		AWSCredentials credentials_profile = null;
		try {
			credentials_profile = new ProfileCredentialsProvider("default").getCredentials();
		} catch (Exception e) {
			throw new AmazonClientException(
					"Cannot load credentials from .aws/credentials file. " +
							"Make sure that the credentials file exists and the profile name is specified within it.",
					e);
		}

		AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard()
				.withCredentials(new AWSStaticCredentialsProvider(credentials_profile))
				.withRegion(Regions.US_WEST_1)
				.build();

		List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
		HadoopJarStepConfig flinkWordCountConf = new HadoopJarStepConfig()
				.withJar("command-runner.jar")
				.withArgs("bash", "-c", "flink", "run", "-m", "yarn-cluster", "-yn", "2",
						"/usr/lib/flink/examples/streaming/WordCount.jar", "--input", "s3://path/to/input-file.txt", "--output",
						"s3://path/to/output/");

		StepConfig flinkRunWordCountStep = new StepConfig()
				.withName("Flink add a wordcount step and terminate")
				.withActionOnFailure("CONTINUE")
				.withHadoopJarStep(flinkWordCountConf);

		stepConfigs.add(flinkRunWordCountStep);

		Application flink = new Application().withName("Flink");

		RunJobFlowRequest request = new RunJobFlowRequest()
				.withName("flink-transient")
				.withReleaseLabel("emr-5.20.0")
				.withApplications(flink)
				.withServiceRole("EMR_DefaultRole")
				.withJobFlowRole("EMR_EC2_DefaultRole")
				.withLogUri("s3://path/to/my/logfiles")
				.withInstances(new JobFlowInstancesConfig()
						.withEc2KeyName("myEc2Key")
						.withEc2SubnetId("subnet-12ab3c45")
						.withInstanceCount(3)
						.withKeepJobFlowAliveWhenNoSteps(false)
						.withMasterInstanceType("m4.large")
						.withSlaveInstanceType("m4.large"))
				.withSteps(stepConfigs);

		RunJobFlowResult result = emr.runJobFlow(request);
		System.out.println("The cluster ID is " + result.toString());

	}

}
```

**Example AWS CLI**  
Use o subcomando `create-cluster` para criar um cluster transitório que termina quando o trabalho do Flink é concluído:  

```
aws emr create-cluster --release-label emr-5.2.1 \
--name "Flink_Transient" \
--applications Name=Flink \
--configurations file://./configurations.json \
--region us-east-1 \
--log-uri s3://myLogUri \
--auto-terminate
--instance-type m5.xlarge \
--instance-count 2 \
--service-role EMR_DefaultRole_V2 \ 
--ec2-attributes KeyName=<YourKeyName>,InstanceProfile=EMR_EC2_DefaultRole \
--steps Type=CUSTOM_JAR,Jar=command-runner.jar,Name=Flink_Long_Running_Session,\
Args="bash","-c","\"flink run -m yarn-cluster /usr/lib/flink/examples/streaming/WordCount.jar
--input s3://amzn-s3-demo-bucket/pg11.txt --output s3://amzn-s3-demo-bucket/alice/""
```

# Usar o shell Scala
<a name="flink-scala"></a>

O shell Scala do Flink para clusters do EMR está configurado somente para iniciar novas sessões do YARN. Você pode usar o shell Scala seguindo o procedimento abaixo.

**Usar o shell Flink Scala no nó primário**

1. Faça login no nó primário com SSH, conforme descrito em [Connect to the primary node with SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html).

1. Digite o seguinte para iniciar um shell:

   No Amazon EMR versão 5.5.0 e posterior, você pode usar o comando a seguir para iniciar um cluster do Yarn para o Scala Shell com um. TaskManager

   ```
   % flink-scala-shell yarn 1
   ```

   Em versões anteriores do Amazon EMR, use:

   ```
   % /usr/lib/flink/bin/start-scala-shell.sh yarn 1
   ```

   Isso inicia o shell Scala do Flink para que você possa usar o Flink interativamente. Assim como com outras interfaces e opções, você pode escalar o valor da opção `-n` usado no exemplo com base no número de tarefas que você deseja executar a partir do shell.

   Para obter mais informações, consulte [Scala REPL](https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/scala_shell.html) na documentação oficial do Apache Flink.

# Localizar a interface Web do Flink
<a name="flink-web-interface"></a>

O Application Master que pertence à aplicação Flink hospeda a interface da Web do Flink. É uma forma alternativa de enviar um JAR como trabalho ou de visualizar o status atual de outros trabalhos. A interface da web do Flink ficará ativa desde que você tenha um sessão do Flink em execução. Se você já tiver um trabalho do YARN de longa duração ativo, siga as instruções no tópico [Conecte-se ao nó primário com SSH no](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) *Guia de Gerenciamento do Amazon EMR* para se conectar ao YARN. ResourceManager Por exemplo, se você configurou um túnel SSH e ativou um proxy em seu navegador, escolha a ResourceManager conexão em **Conexões** na página de detalhes do cluster do EMR.

![\[Resource Manager link under Connections section in cluster details page.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/resourcemanager.png)


Depois de encontrar o ResourceManager, selecione o aplicativo YARN que está hospedando uma sessão do Flink. Selecione o link na coluna **Tracking UI**. 

![\[Application details table showing a running Apache Flink session with ApplicationMaster link.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/resourcemanager2.png)


Na interface da web do Flink, você pode visualizar a configuração, enviar seu próprio JAR personalizado como um trabalho ou monitorar os trabalhos em andamento. 

![\[Apache Flink Dashboard overview showing task managers, slots, and job statistics.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/flink.png)


# Escalador automático do Flink
<a name="flink-autoscaler"></a>

## Visão geral do
<a name="flink-autoscaler-overview"></a>

As versões 6.15.0 e superiores do Amazon EMR oferecem suporte ao *escalador automático do Flink*. A funcionalidade de escalador automático de trabalhos coleta métricas da execução de trabalhos de streaming do Flink e escala automaticamente os vértices individuais do trabalho. Isso reduz a contrapressão e satisfaz a meta de utilização definida por você.

Para obter mais informações, consulte a seção [Autoscaler](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/custom-resource/autoscaler/) da documentação do *Apache Flink Kubernetes Operator*.

## Considerações
<a name="flink-autoscaler-considerations"></a>
+ O escalador automático do Flink é compatível com o Amazon EMR 6.15.0 e versões superiores.
+ O escalador automático do Flink é compatível somente com trabalhos de streaming.
+ Só há suporte para o agendador adaptável. Não há suporte para o agendador padrão.
+ Recomendamos habilitar o ajuste de escala de clusters para permitir o provisionamento dinâmico de recursos. O Ajuste de Escala Gerenciado do Amazon EMR é preferencial porque a avaliação da métrica ocorre a cada cinco a dez segundos. Nesse intervalo, seu cluster pode se ajustar mais prontamente à mudança nos recursos necessários do cluster.

## Habilitação do escalador automático
<a name="flink-autoscaler-start"></a>

Use as etapas a seguir para habilitar o escalador automático do Flink ao criar um cluster do Amazon EMR no EC2.

1. No console do Amazon EMR, crie um cluster do EMR.

   1. Escolha a versão `emr-6.15.0` do Amazon EMR ou posterior. Selecione o pacote de aplicações **Flink** e quaisquer outras aplicações que você queira incluir no cluster.  
![\[Application bundle options for Amazon EMRcluster, with Flink highlighted and selected.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/emr-flink-cluster-create.png)

   1. Na opção **Ajuste de escala e provisionamento de clusters**, selecione **Usar Ajuste de Escala Gerenciado do EMR**.  
![\[Cluster scaling options: manual, EMR-managed (selected), or custom automatic scaling.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/emr-flink-cluster-managedscaling.png)

1. Na seção **Configurações de software**, insira a configuração a seguir para habilitar o escalador automático do Flink. Em cenários de teste, defina o intervalo de decisão, o intervalo da janela de métricas e o intervalo de estabilização para um valor menor de modo que o trabalho tome imediatamente uma decisão de ajuste de escala para facilitar a verificação.

   ```
   [
     {
       "Classification": "flink-conf",
       "Properties": {
         "job.autoscaler.enabled": "true",
         "jobmanager.scheduler": "adaptive",
         "job.autoscaler.stabilization.interval": "60s",
         "job.autoscaler.metrics.window": "60s",
         "job.autoscaler.decision.interval": "10s",
         "job.autoscaler.debug.logs.interval": "60s"
       }
     }
   ]
   ```

1. Selecione ou defina quaisquer outras configurações da maneira que preferir e crie o cluster habilitado pelo escalador automático do Flink.

## Configurações do escalador automático
<a name="flink-autoscaler-config"></a>

Esta seção aborda a maioria das configurações que você pode alterar com base nas suas necessidades específicas.

**nota**  
Com configurações baseadas em tempo, como `time`, `interval` e `window`, a unidade padrão quando nenhuma unidade é especificada é milissegundos. Portanto, um valor de `30` sem sufixo é igual a 30 milissegundos. Para outras unidades de tempo, inclua o sufixo apropriado de `s` para *segundos*, `m` para *minutos* ou `h` para *horas*.

**Topics**
+ [Configurações de loop](#flink-autoscaler-config-loop)
+ [Configurações de métricas e histórico](#flink-autoscaler-config-metrics)
+ [Configurações do vértice](#flink-autoscaler-config-vertex)
+ [Configurações do backlog](#flink-autoscaler-config-backlog)
+ [Configurações da operação de ajuste de escala](#flink-autoscaler-config-scale)

### Configurações de loop do escalador automático
<a name="flink-autoscaler-config-loop"></a>

O escalador automático busca as métricas do nível do vértice do trabalho para cada intervalo de tempo configurável, converte-as em ações de escala, estima o novo paralelismo do vértice do trabalho e o recomenda ao agendador de trabalhos. As métricas são coletadas somente após o horário de reinício do trabalho e o intervalo de estabilização do cluster.


| Chave de configuração | Valor padrão  | Description | Exemplos de valores | 
| --- | --- | --- | --- | 
| job.autoscaler.enabled | false | Habilita o ajuste de escala automático no cluster do Flink. | true, false | 
| job.autoscaler.decision.interval | 60s | Intervalo de decisões do escalador automático. | 30 (a unidade padrão é milissegundos), 5m, 1h | 
| job.autoscaler.restart.time | 3m | O tempo de reinício esperado a ser usado até que o operador possa determiná-lo de forma confiável com o histórico. | 30 (a unidade padrão é milissegundos), 5m, 1h | 
| job.autoscaler.stabilization.interval | 300s | O período de estabilização no qual nenhum novo ajuste de escala será executado. | 30 (a unidade padrão é milissegundos), 5m, 1h | 
| job.autoscaler.debug.logs.interval | 300s | Intervalo dos logs de depuração do escalador automático. | 30 (a unidade padrão é milissegundos), 5m, 1h | 

### Agregação de métricas e configurações de histórico
<a name="flink-autoscaler-config-metrics"></a>

O escalador automático busca as métricas, faz a agregação delas ao longo de uma janela deslizante com base no tempo e elas são avaliadas em decisões de ajuste de escala. O histórico de decisões do ajuste de escala para cada vértice do trabalho é utilizado para estimar novos paralelismos. Eles têm validade baseada na idade e no tamanho do histórico (pelo menos 1).


| Chave de configuração | Valor padrão  | Description | Exemplos de valores | 
| --- | --- | --- | --- | 
| job.autoscaler.metrics.window | 600s | Scaling metrics aggregation window size. | 30 (a unidade padrão é milissegundos), 5m, 1h | 
| job.autoscaler.history.max.count | 3 | Número máximo de decisões de ajuste de escala anteriores a serem retidas por vértice. | 1 para Integer.MAX\$1VALUE | 
| job.autoscaler.history.max.age | 24h | Número mínimo de decisões de ajuste de escala anteriores a serem retidas por vértice. | 30 (a unidade padrão é milissegundos), 5m, 1h | 

### Configurações no nível do vértice do trabalho
<a name="flink-autoscaler-config-vertex"></a>

O paralelismo de cada vértice do trabalho é modificado com base na utilização de destino e vinculado aos limites mínimo e máximo do paralelismo. Não é recomendável definir uma utilização de destino próxima de 100% (ou seja, valor de 1), e o limite de utilização funciona como um buffer para lidar com as flutuações intermediárias da carga.


| Chave de configuração | Valor padrão  | Description | Exemplos de valores | 
| --- | --- | --- | --- | 
| job.autoscaler.target.utilization | 0.7 | Utilização de destino do vértice. | 0 - 1 | 
| job.autoscaler.target.utilization.boundary | 0.4 | Limite de utilização de destino do vértice. O ajuste de escala não será realizado se a taxa de processamento atual estiver entre [target\$1rate / (target\$1utilization - boundary) e (target\$1rate / (target\$1utilization \$1 boundary)]. | 0 - 1 | 
| job.autoscaler.vertex.min-parallelism | 1 | O paralelismo mínimo que o escalador automático pode usar. | 0 - 200 | 
| job.autoscaler.vertex.max-parallelism | 200 | O paralelismo máximo que o escalador automático pode usar. Observe que esse limite será ignorado se ele for maior que o paralelismo máximo definido na configuração do Flink ou diretamente em cada operador. | 0 - 200 | 

### Configurações de processamento do backlog
<a name="flink-autoscaler-config-backlog"></a>

O vértice do trabalho precisa de recursos extras para lidar com os eventos pendentes, ou backlogs, que se acumulam durante o período da operação de escala. Isso também é conhecido como duração de `catch-up`. Se o tempo de processamento do backlog exceder o valor de `lag -threshold` configurado, a utilização de destino do vértice do trabalho aumentará para o nível máximo. Isso ajuda a evitar operações desnecessárias de ajuste de escala durante o processamento do backlog.


| Chave de configuração | Valor padrão  | Description | Exemplos de valores | 
| --- | --- | --- | --- | 
| job.autoscaler.backlog-processing.lag-threshold | 5m | Limite de atraso que evitará ajustes de escala desnecessários e removerá as mensagens pendentes responsáveis pelo atraso. | 30 (a unidade padrão é milissegundos), 5m, 1h | 
| job.autoscaler.catch-up.duration | 15m | A duração de destino para o processamento completo de qualquer backlog após uma operação de ajuste de escala. Defina como 0 para desabilitar o ajuste de escala baseado em backlog. | 30 (a unidade padrão é milissegundos), 5m, 1h | 

### Configurações da operação de ajuste de escala
<a name="flink-autoscaler-config-scale"></a>

O escalador automático não executa a operação de redução vertical de escala imediatamente após uma operação de aumento vertical de escala dentro do período de carência. Isso evita ciclos desnecessários de up-down-up-down operações de balança causados por flutuações temporárias de carga. 

Podemos usar a taxa de operação de redução vertical de escala para diminuir gradualmente o paralelismo e liberar recursos que atendam a picos de carga temporários. Isso também ajuda a evitar operações secundárias desnecessárias de aumento vertical de escala após uma grande operação de redução vertical de escala. 

Podemos detectar uma operação ineficaz de aumento vertical de escala com base no histórico anterior de decisões de ajuste de escala de vértices de trabalho para evitar mais alterações no paralelismo.


| Chave de configuração | Valor padrão  | Description | Exemplos de valores | 
| --- | --- | --- | --- | 
| job.autoscaler.scale-up.grace-period | 1h | Duração em que nenhuma redução vertical de escala de um vértice é permitida após ele ter sido aumentado. | 30 (a unidade padrão é milissegundos), 5m, 1h | 
| job.autoscaler.scale-down.max-factor | 0.6 | Fator máximo de redução vertical de escala. Um valor de 1 significa que não há limite na redução vertical de escala; 0.6 significa que o trabalho só pode ser reduzido verticalmente com 60% do paralelismo original. | 0 - 1 | 
| job.autoscaler.scale-up.max-factor | 100000. | Taxa máxima de aumento vertical de escala. Um valor de 2.0 significa que o trabalho só pode aumentar a escala verticalmente com 200% do paralelismo atual. | 0 - Integer.MAX\$1VALUE | 
| job.autoscaler.scaling.effectiveness.detection.enabled | false | Se deve habilitar a detecção de operações ineficazes de ajuste de escala e permitir que o escalador automático bloqueie novos aumentos verticais. | true, false | 

# Otimização dos tempos de reinício dos trabalhos para operações de recuperação e ajuste de escala de tarefas
<a name="flink-restart"></a>

Quando uma tarefa falha ou ocorre uma operação de ajuste de escala, o Flink tenta reexecutar a tarefa com base no último ponto de verificação concluído. O processo de reinicialização pode levar um minuto ou mais para ser executado, dependendo do tamanho do estado do ponto de verificação e do número de tarefas paralelas. Durante o período de reinicialização, as tarefas de backlog podem se acumular para o trabalho. No entanto, existem algumas maneiras de o Flink otimizar a velocidade de recuperação e reinicialização dos gráficos de execução para melhorar a estabilidade do trabalho.

Esta página descreve algumas maneiras que o Flink no Amazon EMR pode usar para melhorar o tempo de reinício de trabalhos durante as operações de recuperação ou ajuste de escala de tarefas.

**Topics**
+ [Recuperação local de tarefas](#flink-restart-task-local)
+ [Ponto de verificação incremental genérico baseado em logs](#flink-restart-log-check)
+ [Recuperação refinada](#flink-restart-fine-grained)
+ [Mecanismo de reinício combinado no agendador adaptável](#flink-restart-combined)

## Recuperação local de tarefas
<a name="flink-restart-task-local"></a>

**nota**  
A recuperação local de tarefas é compatível com o Amazon EMR 6.0.0 e versões superiores.

Com os pontos de verificação do Flink, cada tarefa produz um snapshot do próprio estado que o Flink grava em um armazenamento distribuído, como o Amazon S3. Em casos de recuperação, as tarefas restauram o estado no armazenamento distribuído. O armazenamento distribuído oferece tolerância a falhas e pode redistribuir o estado durante o reajuste de escala por ser acessível a todos os nós.

No entanto, um armazenamento distribuído remoto também tem uma desvantagem: todas as tarefas devem ler seu estado de um local remoto na rede. Isso pode resultar em tempos de recuperação longos para estados grandes durante operações de recuperação ou ajuste de escala de tarefas.

Esse problema de tempo de recuperação longo é resolvido pela *recuperação local de tarefas*. As tarefas gravam seu estado no ponto de verificação em um armazenamento secundário local para a tarefa, como em um disco local. Elas também armazenam seu estado no armazenamento principal, ou no Amazon S3, no nosso caso. Durante a recuperação, o agendador programa as tarefas no mesmo gerenciador de tarefas em que elas foram executadas anteriormente, para que possam se recuperar do armazenamento de estado local em vez de ler do armazenamento de estado remoto. Para obter mais informações, consulte [Task-Local Recovery](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/large_state_tuning/#task-local-recovery) na *Documentação do Apache Flink*.

Nossos testes de benchmark com exemplos de trabalhos mostraram que o tempo de recuperação foi reduzido de minutos para alguns segundos com a recuperação local da tarefa ativada.

Para habilitar a recuperação local de tarefas, defina as configurações a seguir no seu arquivo `flink-conf.yaml`. Especifique o valor do intervalo do ponto de verificação em milissegundos.

```
    state.backend.local-recovery: true
    state.backend: hasmap or rocksdb
    state.checkpoints.dir: s3://storage-location-bucket-path/checkpoint
    execution.checkpointing.interval: 15000
```

## Ponto de verificação incremental genérico baseado em logs
<a name="flink-restart-log-check"></a>

**nota**  
Os pontos de verificação incrementais genéricos baseados em logs são compatíveis com o Amazon EMR 6.10.0 e versões superiores.

O recurso de ponto de verificação incremental genérico baseado em logs foi adicionado ao Flink 1.16 para melhorar a velocidade dos pontos de verificação. Um intervalo de ponto de verificação mais rápido costuma resultar em uma redução do trabalho de recuperação porque menos eventos precisam ser reprocessados após a recuperação. Para obter mais informações, consulte [Improving speed and stability of checkpointing with generic log-based incremental checkpoints](https://flink.apache.org/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/) no *blog do Apache Flink*.

Com exemplos de trabalhos, nossos testes de comparação mostraram que o tempo do ponto de verificação foi reduzido de minutos para alguns segundos com o ponto de verificação incremental genérico baseado em logs.

Para habilitar os pontos de verificação incrementais genéricos baseados em logs, defina as configurações a seguir no seu arquivo `flink-conf.yaml`. Especifique o valor do intervalo do ponto de verificação em milissegundos.

```
    state.backend.changelog.enabled: true 
    state.backend.changelog.storage: filesystem
    dstl.dfs.base-path: s3://bucket-path/changelog
    state.backend.local-recovery: true
    state.backend: rocksdb
    state.checkpoints.dir: s3://bucket-path/checkpoint
    execution.checkpointing.interval: 15000
```

## Recuperação refinada
<a name="flink-restart-fine-grained"></a>

**nota**  
O suporte à recuperação refinada do agendador padrão está disponível no Amazon EMR 6.0.0 e versões superiores. O suporte à recuperação refinada no agendador adaptável está disponível no Amazon EMR 6.15.0 e versões superiores.

Quando uma tarefa falha durante a execução, o Flink redefine todo o gráfico de execução e aciona a reexecução completa com base no último ponto de verificação concluído. Isso é mais caro do que apenas reexecutar as tarefas que falharam. A recuperação refinada reinicia somente o componente conectado ao pipeline da tarefa que falhou. No exemplo a seguir, o gráfico do trabalho tem cinco vértices (de `A` a `E`). É feito o pipeline de todas as conexões entre os vértices com distribuição pontual, e o `parallelism.default` do trabalho é definido como `2`. 

```
A → B → C → D → E
```

Neste exemplo, há um total de dez tarefas em execução. O primeiro pipeline (de `a1` a `e1`) é executado em um TaskManager (`TM1`) e o segundo pipeline (de `a2` a `e2`) é executado em outro TaskManager (`TM2`).

```
a1 → b1 → c1 → d1 → e1
a2 → b2 → c2 → d2 → e2
```

Há dois componentes conectados por pipeline: `a1 → e1` e `a2 → e2`. Se `TM1` ou `TM2` falhar, a falha afetará somente as cinco tarefas no pipeline em que TaskManager estava em execução. A estratégia de reinicialização só inicia o componente do pipeline afetado. 

A recuperação refinada funciona somente com trabalhos perfeitamente paralelos do Flink. Não é compatível com operações de `keyBy()` ou `redistribute()`. Para obter mais informações, consulte [FLIP-1: Fine Grained Recovery from Task Failures](https://cwiki.apache.org/confluence/display/FLINK/FLIP-1%3A+Fine+Grained+Recovery+from+Task+Failures) no projeto Jira *Flink Improvement Proposal*.

Para habilitar a recuperação refinada, defina as configurações a seguir no seu arquivo `flink-conf.yaml`.

```
jobmanager.execution.failover-strategy: region 
restart-strategy: exponential-delay or fixed-delay
```

## Mecanismo de reinício combinado no agendador adaptável
<a name="flink-restart-combined"></a>

**nota**  
O mecanismo de reinício combinado no agendador adaptável é compatível com o Amazon EMR 6.15.0 e versões superiores.

O agendador adaptável pode ajustar o paralelismo do trabalho com base nos slots disponíveis. Ele reduz automaticamente o paralelismo se não houver slots suficientes disponíveis para atender ao paralelismo do trabalho configurado. Se novos slots ficarem disponíveis, o trabalho aumentará a escala verticalmente mais uma vez para o paralelismo do trabalho configurado. Um agendador adaptável evita o tempo de inatividade no trabalho quando não há recursos suficientes disponíveis. Esse é o agendador compatível com o escalador automático do Flink. Recomendamos o agendador adaptável com o Flink no Amazon EMR por esses motivos. No entanto, os agendadores adaptáveis podem fazer várias reinicializações em um curto período; uma reinicialização para cada novo recurso adicionado. Isso pode levar a uma queda na performance do trabalho.

Com o Amazon EMR 6.15.0 e versões superiores, o Flink tem um mecanismo de reinício combinado no agendador adaptável que abre uma janela de reinicialização quando o primeiro recurso é adicionado e aguarda pelo intervalo configurado da janela do padrão de um minuto. Ele executa uma única reinicialização quando há recursos suficientes disponíveis para executar o trabalho com o paralelismo configurado ou quando o intervalo expira.

Com os exemplos de trabalhos, nossos testes de comparação mostraram que esse recurso processa 10% a mais dos registros do que o comportamento padrão ao usar o agendador adaptável e o escalador automático do Flink.

Para habilitar o mecanismo de reinício combinado, defina as configurações a seguir no seu arquivo `flink-conf.yaml`.

```
jobmanager.adaptive-scheduler.combined-restart.enabled: true 
jobmanager.adaptive-scheduler.combined-restart.window-interval: 1m
```

# Usar trabalhos do Flink pelo Zeppelin no Amazon EMR
<a name="flink-zeppelin"></a>

## Introdução
<a name="flink-zeppelin-intro"></a>

O Amazon EMR 6.10.0 e versões posteriores oferecem suporte à integração de [Apache Zeppelin](emr-zeppelin.md) com o Apache Flink. É possível enviar trabalhos do Flink de forma interativa por meio dos cadernos Zeppelin. Com o intérprete Flink, é possível executar consultas do Flink, definir trabalhos em lote e de transmissão do Flink e visualizar a saída nos cadernos Zeppelin. O intérprete Flink foi desenvolvido com base na API REST do Flink. Isso possibilita acessar e manipular trabalhos do Flink de dentro do ambiente Zeppelin para realizar processamento e análise de dados em tempo real.

Há quatro subintérpretes no intérprete Flink. Eles servem a outras finalidades, mas estão todos na JVM e compartilham os mesmos pontos de entrada pré-configurados do Flink (`ExecutionEnviroment`, `StreamExecutionEnvironment`, `BatchTableEnvironment`, `StreamTableEnvironment`). Os intérpretes são estes:
+ `%flink`: cria `ExecutionEnvironment`, `StreamExecutionEnvironment`, `BatchTableEnvironment`, `StreamTableEnvironment` e fornece um ambiente Scala
+ `%flink.pyflink`: fornece um ambiente Python
+ `%flink.ssql`: fornece um ambiente SQL de transmissão
+ `%flink.bsql`: fornece um ambiente SQL em lote

## Pré-requisitos
<a name="flink-zeppelin-prerequisites"></a>
+ A integração do Zeppelin com o Flink é compatível com clusters criados com o Amazon EMR 6.10.0 e versões posteriores.
+ Para visualizar as interfaces Web hospedadas em clusters do EMR conforme necessário para essas etapas, é necessário configurar um túnel SSH para permitir o acesso de entrada. Para obter mais informações, consulte [Configure proxy settings to view websites hosted on the primary node](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-proxy.html).

## Configurar o Zeppelin-Flink em um cluster do EMR
<a name="flink-zeppelin-configure"></a>

Realize as etapas a seguir para configurar o Apache Flink no Apache Zeppelin para ser executado em um cluster do EMR:

1. Crie um novo cluster pelo console do Amazon EMR. Selecione a versão emr-6.10.0 ou posterior do Amazon EMR. Em seguida, escolha personalizar seu pacote de aplicações com a opção Personalizado. Inclua, no mínimo, Flink, Hadoop e Zeppelin no pacote.  
![\[No console do Amazon EMR, personalize o pacote de aplicações com a opção Personalizado. Inclua, no mínimo, Flink, Hadoop e Zeppelin no pacote\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/emr-flink-zeppelin-console.png)

1. Crie o resto do cluster com as configurações de sua preferência.

1. Quando o cluster estiver em execução, selecione o cluster no console para visualizar os detalhes e abra a guia Aplicações. Selecione Zeppelin na seção Interfaces de usuário da aplicação para abrir a interface da Web do Zeppelin. Configure o acesso à interface da Web do Zeppelin com um túnel SSH para o nó primário e uma conexão proxy, conforme descrito em [Pré-requisitos](#flink-zeppelin-prerequisites).  
![\[Na interface da Web do Zeppelin, é possível importar e criar novos cadernos.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/welcome-to-zeppelin.png)

1. Agora, você pode criar uma nova nota em um caderno do Zeppelin usando o Flink como intérprete padrão.  
![\[Você pode criar uma nova nota em um caderno do Zeppelin usando o Flink como intérprete padrão.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/emr-flink-zeppelin-create-notebook.png)

1. Consulte os exemplos de código a seguir que demonstram como executar trabalhos do Flink em um caderno do Zeppelin.

## Executar trabalhos do Flink com o Zeppelin-Flink em um cluster do EMR
<a name="flink-zeppelin-run-jobs"></a>
+ Exemplo 1, Flink Scala

  a) WordCount Exemplo de Batch (SCALA)

  ```
  %flink
  
  val data = benv.fromElements("hello world", "hello flink", "hello hadoop")
  data.flatMap(line => line.split("\\s"))
               .map(w => (w, 1))
               .groupBy(0)
               .sum(1)
               .print()
  ```

  b) WordCount Exemplo de streaming (SCALA)

  ```
  %flink
  
  val data = senv.fromElements("hello world", "hello flink", "hello hadoop")
  data.flatMap(line => line.split("\\s"))
    .map(w => (w, 1))
    .keyBy(0)
    .sum(1)
    .print
  
  senv.execute()
  ```  
![\[Por exemplo, você pode executar WordCount trabalhos em lote WordCount e de streaming a partir de um notebook Zeppelin.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/streaming-wordcount-example.png)
+ Exemplo 2, Flink Streaming SQL

  ```
  %flink.ssql
  SET 'sql-client.execution.result-mode' = 'tableau';
  SET 'table.dml-sync' = 'true';
  SET 'execution.runtime-mode' = 'streaming';
  
  create table dummy_table (
    id int,
    data string
  ) with (
    'connector' = 'filesystem',
    'path' = 's3://s3-bucket/dummy_table',
    'format' = 'csv'
  );
  
  INSERT INTO dummy_table SELECT * FROM (VALUES (1, 'Hello World'), (2, 'Hi'), (2, 'Hi'), (3, 'Hello'), (3, 'World'), (4, 'ADD'), (5, 'LINE'));
  
  SELECT * FROM dummy_table;
  ```  
![\[Este exemplo demonstra como executar um trabalho SQL do Flink Streaming.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/flink-streaming-sql.png)
+ Exemplo 3, Pyflink. Observe que você deve fazer upload da sua própria amostra de arquivo de texto chamada `word.txt` no bucket do S3.

  ```
  %flink.pyflink
  
  import argparse
  import logging
  import sys
  
  from pyflink.common import Row
  from pyflink.table import (EnvironmentSettings, TableEnvironment, TableDescriptor, Schema,
                             DataTypes, FormatDescriptor)
  from pyflink.table.expressions import lit, col
  from pyflink.table.udf import udtf
  
  def word_count(input_path, output_path):
      t_env = TableEnvironment.create(EnvironmentSettings.in_streaming_mode())
      # write all the data to one file
      t_env.get_config().set("parallelism.default", "1")
  
      # define the source
      if input_path is not None:
          t_env.create_temporary_table(
              'source',
              TableDescriptor.for_connector('filesystem')
                             .schema(Schema.new_builder()
                                     .column('word', DataTypes.STRING())
                                     .build())
                             .option('path', input_path)
                             .format('csv')
                             .build())
          tab = t_env.from_path('source')
      else:
          print("Executing word_count example with default input data set.")
          print("Use --input to specify file input.")
          tab = t_env.from_elements(map(lambda i: (i,), word_count_data),
                                    DataTypes.ROW([DataTypes.FIELD('line', DataTypes.STRING())]))
  
      # define the sink
      if output_path is not None:
          t_env.create_temporary_table(
              'sink',
              TableDescriptor.for_connector('filesystem')
                             .schema(Schema.new_builder()
                                     .column('word', DataTypes.STRING())
                                     .column('count', DataTypes.BIGINT())
                                     .build())
                             .option('path', output_path)
                             .format(FormatDescriptor.for_format('canal-json')
                                     .build())
                             .build())
      else:
          print("Printing result to stdout. Use --output to specify output path.")
          t_env.create_temporary_table(
              'sink',
              TableDescriptor.for_connector('print')
                             .schema(Schema.new_builder()
                                     .column('word', DataTypes.STRING())
                                     .column('count', DataTypes.BIGINT())
                                     .build())
                             .build())
  
      @udtf(result_types=[DataTypes.STRING()])
      def split(line: Row):
          for s in line[0].split():
              yield Row(s)
  
      # compute word count
      tab.flat_map(split).alias('word') \
         .group_by(col('word')) \
         .select(col('word'), lit(1).count) \
         .execute_insert('sink') \
         .wait()
  
  
  logging.basicConfig(stream=sys.stdout, level=logging.INFO, format="%(message)s")
  
  
  word_count("s3://s3_bucket/word.txt", "s3://s3_bucket/demo_output.txt")
  ```

1. Escolha **TRABALHO DO FLINK** na interface do usuário do Zeppelin para acessar e visualizar a interface do usuário Web do Flink.  
![\[Flink code snippet for word count with output showing counts for "hello", "flink", "hadoop", and "world".\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/batch-wordcount-example.png)

1. Escolher **TRABALHO DO FLINK** encaminhará o console Web do Flink para outra guia do navegador.  
![\[Escolher TRABALHO DO FLINK abrirá o console Web do Flink em outra guia do navegador.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/images/flink-web-console.png)

# Histórico de versões do Flink
<a name="Flink-release-history"></a>

A tabela a seguir informa a versão do Flink incluída em cada versão do Amazon EMR, junto com os componentes instalados com a aplicação. Para obter as versões dos componentes em cada versão, consulte a seção Versão de componentes da sua versão em [Versões 7.x do Amazon EMR](emr-release-7x.md), [Versões de lançamento 6.x do Amazon EMR](emr-release-6x.md) ou [Versões de lançamento 5.x do Amazon EMR](emr-release-5x.md).


**Informações de versão do Flink**  

| Rótulo de versão do Amazon EMR | Versão do Flink | Componentes instalados com o Flink | 
| --- | --- | --- | 
| emr-7.12.0 | 1.20.0-aman-6 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.11.0 | 1.20.0-aman-5 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.10.0 | 1.20.0-aman-4 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.9.0 | 1.20.0-aman-3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.8.0 | 1.20.0-aman-2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.7.0 | 1.20.0-amzn-1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.6.0 | 1.20.0-amzn-0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.5.0 | 1.19.1-amzn-1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.4.0 | 1.19.1-amzn-0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.3.0 | 1.18.1-amzn-2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.2.0 | 1.18.1-amzn-1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-5.36.2 | 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-7.1.0 | 1.18.1-amzn-0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta | 
| emr-7.0.0 | 1.18.0-amzn-0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.15.0 | 1.17.1-amzn-1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.14.0 | 1.17.1-amzn-0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.13.0 | 1.17.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.12.0 | 1.17.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.11.1 | 1.16.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.11.0 | 1.16.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi, delta-standalone-connectors | 
| emr-6.10.1 | 1.16.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.10.0 | 1.16.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.9.1 | 1.15.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.9.0 | 1.15.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.8.1 | 1.15.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.8.0 | 1.15.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.7.0 | 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-5.36.1 | 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.36.0 | 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-6.6.0 | 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-5.35.0 | 1.14.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-6.5.0 | 1.14.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.4.0 | 1.13.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config, hudi | 
| emr-6.3.1 | 1.12.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-6.3.0 | 1.12.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-6.2.1 | 1.11.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-6.2.0 | 1.11.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-6.1.1 | 1.11.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-6.1.0 | 1.11.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.34.0 | 1.13.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.33.1 | 1.12.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.33.0 | 1.12.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.32.1 | 1.11.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.32.0 | 1.11.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.31.1 | 1.11.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.31.0 | 1.11.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client, flink-jobmanager-config | 
| emr-5.30.2 | 1.10.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.30.1 | 1.10.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.30.0 | 1.10.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.29.0 | 1.9.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.28.1 | 1.9.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.28.0 | 1.9.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.27.1 | 1.8.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.27.0 | 1.8.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.26.0 | 1.8.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.25.0 | 1.8.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.24.1 | 1.8.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.24.0 | 1.8.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.23.1 | 1.7.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.23.0 | 1.7.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.22.0 | 1.7.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.21.2 | 1.7.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.21.1 | 1.7.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.21.0 | 1.7.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.20.1 | 1.6.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.20.0 | 1.6.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.19.1 | 1.6.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.19.0 | 1.6.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.18.1 | 1.6.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.18.0 | 1.6.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.17.2 | 1.5.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.17.1 | 1.5.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.17.0 | 1.5.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.16.1 | 1.5.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.16.0 | 1.5.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.15.1 | 1.4.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.15.0 | 1.4.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.14.2 | 1.4.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.14.1 | 1.4.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.14.0 | 1.4.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.13.1 | 1.4.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.13.0 | 1.4.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.12.3 | 1.4.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.12.2 | 1.4.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.12.1 | 1.4.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.12.0 | 1.4.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.11.4 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.11.3 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.11.2 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.11.1 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.11.0 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.10.1 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.10.0 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.9.1 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.9.0 | 1.3.2 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.8.3 | 1.3.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.8.2 | 1.3.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.8.1 | 1.3.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.8.0 | 1.3.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.7.1 | 1.3.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.7.0 | 1.3.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.6.1 | 1.2.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.6.0 | 1.2.1 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, flink-client | 
| emr-5.5.4 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.5.3 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.5.2 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.5.1 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.5.0 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.4.1 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.4.0 | 1.2.0 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.3.2 | 1.1.4 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.3.1 | 1.1.4 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.3.0 | 1.1.4 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.2.3 | 1.1.3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.2.2 | 1.1.3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.2.1 | 1.1.3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.2.0 | 1.1.3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.1.1 | 1.1.3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 
| emr-5.1.0 | 1.1.3 | emrfs, hadoop-client, hadoop-mapred, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, flink-client | 

# Notas da versão do Flink por versão
<a name="Flink-release-history-versions"></a>

Consulte as seções a seguir para ver as notas de lançamento completas.

# Amazon EMR 7.10.0 — Notas de lançamento do Flink
<a name="Flink-release-history-7100"></a>

**Amazon EMR 7.10.0 - alterações no Flink**


| Tipo | Description | 
| --- | --- | 
|  Novo recurso  |  A partir da versão 7.10.0 do Amazon EMR, você pode habilitar os conectores Kafka e Kinesis Flink mais facilmente usando configurações. Adicione `kafka.enabled: true` ou `kinesis.enabled: true` na classificação `flink-conf` durante a criação do cluster para configurar automaticamente o respectivo conector. Essa abordagem simplificada elimina as etapas de configuração manual que eram necessárias anteriormente.  | 

# Amazon EMR 7.9.0 — Notas de lançamento do Flink
<a name="Flink-release-history-790"></a>

**Amazon EMR 7.9.0 - alterações no Flink**


| Tipo | Description | 
| --- | --- | 
|  Novo recurso  |  A partir do Amazon EMR 7.9.0, o Apache Flink oferece out-of-the-box suporte aos formatos de arquivo Avro, Parquet e ORC. Você pode usar esses formatos diretamente com qualquer API do Flink (DataStream, tabela ou SQL) sem precisar de nenhuma configuração adicional.  | 
|  Novo recurso  |  A partir da versão 7.9.0 do Amazon EMR, você pode habilitar os catálogos de dados Hive Metastore ou AWS Glue com mais facilidade usando as definições de configuração. Adicione `hive.enabled: true` ou `glue.enabled: true` na classificação `flink-conf` durante a criação do cluster para configurar automaticamente o respectivo catálogo de dados. Essa abordagem simplificada elimina as etapas de configuração manual que eram necessárias anteriormente.  | 

# Amazon EMR 7.8.0 — Notas de lançamento do Flink
<a name="Flink-release-history-780"></a>

**Configuração** — O EMR Flink funciona imediatamente com o S3A em todas as regiões/partições. AWS 

# Amazon EMR 7.7.0 — Notas de lançamento do Flink
<a name="Flink-release-history-770"></a>
+ O shell SQL do Flink pode ser invocado facilmente com o comando `flink-sql-client` que está vinculado via link simbólico a `/usr/lib/flink/bin/sql-client.sh`

# Amazon EMR 7.6.0 — Notas de lançamento do Flink
<a name="Flink-release-history-760"></a>

## Amazon EMR 7.6.0 - recursos do Flink
<a name="Flink-release-history-760-features"></a>
+ Nenhuma alteração na versão.

# Amazon EMR 7.5.0 — Notas de lançamento do Flink
<a name="Flink-release-history-750"></a>


| Tipo | Description | 
| --- | --- | 
|  Recurso  |  Adicionado suporte para executar trabalhos do Flink com um jar remoto.  | 
|  Melhoria  |  Torne a exclusão e inclusão de vértices seguras para threads.  | 

## Amazon EMR 7.5.0 - recursos do Flink
<a name="Flink-release-history-750-features"></a>
+ A partir do Amazon EMR 7.5.0, você pode especificar uma localização do Amazon S3 como o caminho do JAR ao usar os comandos da CLI do Apache Flink `run` e `run-application`. Quando você fornece um caminho do S3, o EMR baixa automaticamente o arquivo JAR do Amazon S3 para o armazenamento EBS do cluster. Cada vez que você especifica o mesmo arquivo JAR, o EMR baixa a versão mais recente do Amazon S3 em vez de reutilizar o arquivo JAR existente no cluster. 
+ A partir do Amazon EMR 7.5.0, os clientes podem passar o caminho remoto (uma localização do S3) como o caminho JAR com comandos da CLI do Flink `run` e `run-application`. O JAR é então automaticamente transferido do armazenamento S3 para o armazenamento EBS do cluster. Se o mesmo JAR for fornecido novamente, ele baixará o mais recente do S3 e não reutilizará o JAR existente no cluster.

# Amazon EMR 7.4.0 — Notas de lançamento do Flink
<a name="Flink-release-history-740"></a>


| Tipo | Description | 
| --- | --- | 
|  Upgrade  |  A versão do Flink passou por um upgrade para 1.19.1.  | 

# Amazon EMR 7.3.0: notas de versão do Flink
<a name="Flink-release-history-730"></a>
+ Por padrão, clusters com criptografia em trânsito habilitada por meio da configuração de segurança usarão o TLS 1.3 para comunicação interna entre os processos do Flink, o endpoint REST do gerenciador de trabalhos e o servidor de histórico de trabalho do Flink.

# Amazon EMR 7.2.0: notas de versão do Flink
<a name="Flink-release-history-720"></a>


| Tipo | Description | 
| --- | --- | 
|  Melhoria  |  Suporte à adição de rótulos personalizados ao serviço Kubernetes por trabalho do Flink por meio da configuração `kubernetes.service.labels`.  | 