

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

[Apache Flink](https://flink.apache.org/) es un motor de flujo de datos de streaming que se puede usar para ejecutar el procesamiento de flujos en tiempo real con orígenes de datos de alto rendimiento. Flink admite la semántica temporal de out-of-order eventos para eventos, la semántica de una sola vez, el control de contrapresión y APIs está optimizado para escribir aplicaciones de streaming y por lotes.

Además, Flink dispone de conectores para orígenes de datos de terceros, tales como los siguientes:
+ [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)
+ [Conector para Elasticsearch de Flink](https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/connectors/elasticsearch2.html)
+ [Twitter Streaming API](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)

Amazon EMR admite Flink como aplicación YARN para que pueda administrar los recursos junto con otras aplicaciones de un clúster. Flink-on-YARNle permite enviar trabajos transitorios de Flink o puede crear un clúster de larga duración que acepte varios trabajos y asigne los recursos de acuerdo con la reserva general de YARN.

Flink se incluye en las versiones de Amazon EMR 5.1.0 y posteriores.

**nota**  
La compatibilidad con la clase `FlinkKinesisConsumer` se agregó en la versión de lanzamiento de Amazon EMR 5.2.1.

En la siguiente tabla, se muestra la versión de Flink incluida en la última versión de la serie 7.x de Amazon EMR, junto con los componentes que Amazon EMR instala con Flink.

[Para ver la versión de los componentes instalados con Flink en esta versión, consulte Versiones de componentes de la versión 7.12.0.](emr-7120-release.md)


**Información sobre la versión de Flink para emr-7.12.0**  

| Etiqueta de versión de Amazon EMR | Versión de Flink | Componentes instalados con 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 | 

En la tabla siguiente, se muestra la versión de Flink incluida en la última versión de la serie Amazon EMR 6.x, junto con los componentes que Amazon EMR instala con Flink.

Para ver la versión de los componentes instalados con Flink en esta versión, consulte [Versiones de los componentes de la versión 6.15.0](emr-6150-release.md).


**Información de la versión de Flink para emr-6.15.0**  

| Etiqueta de versión de Amazon EMR | Versión de Flink | Componentes instalados con 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 | 

En la tabla siguiente, se muestra la versión de Flink incluida en la última versión de la serie Amazon EMR 5.x, junto con los componentes que Amazon EMR instala con Flink.

Para ver la versión de los componentes instalados con Flink en esta versión, consulte [Versiones del componente de la versión 5.36.2](emr-5362-release.md).


**Información de la versión de Flink para emr-5.36.2**  

| Etiqueta de versión de Amazon EMR | Versión de Flink | Componentes instalados con 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**
+ [Creación de un clúster con Flink](flink-create-cluster.md)
+ [Configuración de Flink en Amazon EMR](flink-configure.md)
+ [Trabajar con trabajos de Flink en Amazon EMR](flink-jobs.md)
+ [Uso del intérprete de comandos de Scala](flink-scala.md)
+ [Encontrar la interfaz web de Flink](flink-web-interface.md)
+ [Escalador automático de Flink](flink-autoscaler.md)
+ [Optimización de los tiempos de reinicio de los trabajos para las operaciones de escalado y recuperación de tareas](flink-restart.md)
+ [Trabajar con trabajos de Flink de Zeppelin en Amazon EMR](flink-zeppelin.md)
+ [Historial de lanzamientos de Flink](Flink-release-history.md)

# Creación de un clúster con Flink
<a name="flink-create-cluster"></a>

Puede lanzar un clúster con el Consola de administración de AWS AWS CLI, o un AWS SDK.<a name="emr-flink-create-console"></a>

**Para lanzar un clúster con Flink instalado de la consola**

1. [Abra la consola Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. Elija **Crear clúster** e **Ir a las opciones avanzadas**.

1.  En **Software Configuration (Configuración de software)**, elija **EMR Release emr-5.1.0 (EMR versión emr-5.1.0)** o una versión posterior.

1.  Elija **Flink** como aplicación, junto con las demás que desee instalar.

1.  Seleccione las demás opciones que necesite y elija **Create cluster (Crear clúster)**.

**Para lanzar un clúster con Flink desde AWS CLI**
+ Cree el clúster con el siguiente 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**  
Se incluyen caracteres de continuación de línea de Linux (\$1) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

# Configuración de Flink en Amazon EMR
<a name="flink-configure"></a>

## Configuración de Flink con el metaalmacén de Hive y el Catálogo de Glue
<a name="flink-configure-hive"></a>

Las versiones 6.9.0 y posteriores de Amazon EMR son compatibles con Hive Metastore y AWS Glue Catalog con el conector Apache Flink a Hive. En esta sección se describen los pasos necesarios para configurar el [Catálogo de AWS Glue](#flink-configure-hive-glue) y el [metaalmacén de Hive](#flink-configure-hive-metastore) con Flink.

**Topics**
+ [Uso del metaalmacén de Hive](#flink-configure-hive-metastore)
+ [Utilice el catálogo de datos de AWS Glue](#flink-configure-hive-glue)

### Uso del metaalmacén de Hive
<a name="flink-configure-hive-metastore"></a>

1. Cree un clúster de EMR con la versión 6.9.0 o posterior y al menos dos aplicaciones: **Hive** y **Flink**. 

1. Utilice el [ejecutor de scripts](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html) para ejecutar el siguiente script como una función escalonada:

   `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/es_es/emr/latest/ReleaseGuide/images/hive.png)

### Utilice el catálogo de datos de AWS Glue
<a name="flink-configure-hive-glue"></a>

1. Cree un clúster de EMR con la versión 6.9.0 o posterior y al menos dos aplicaciones: **Hive** y **Flink**. 

1. Seleccione **Usar para metadatos de la tabla de Hive** en la configuración del Catálogo de datos de AWS Glue para habilitar el Catálogo de datos en el clúster.

1. Utilice el [ejecutor de scripts](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html) para ejecutar el siguiente script como función escalonada: [Ejecución de comandos y scripts en un clúster de Amazon EMR](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/es_es/emr/latest/ReleaseGuide/images/hive.png)

## Configuración de Flink con un archivo de configuración
<a name="flink-configure-config"></a>

Puede usar la API de configuración de Amazon EMR para configurar Flink con un archivo de configuración. Los archivos configurables dentro de la API son:
+ `flink-conf.yaml`
+ `log4j.properties`
+ `flink-log4j-session`
+ `log4j-cli.properties`

El archivo de configuración principal para Flink es `flink-conf.yaml`. 

**Para configurar el número de espacios de tareas que se utilizan para Flink desde el AWS CLI**

1. Cree un archivo, `configurations.json`, con el siguiente contenido:

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

1. A continuación, cree un clúster con la siguiente configuración:

   ```
   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**  
También puede cambiar algunas configuraciones con la API de Flink. Para obtener más información, 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) en la documentación de Flink.  
Con la versión 5.21.0 y posteriores de Amazon EMR, puede anular las configuraciones de clúster y especificar las clasificaciones de configuración adicionales para cada grupo de instancias en un clúster en ejecución. Para ello, utilice la consola Amazon EMR, el AWS Command Line Interface (AWS CLI) o el AWS SDK. Para obtener más información, consulte [Suministrar una configuración para un grupo de instancias en un clúster en ejecución](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html).

### Opciones de paralelismo
<a name="flink-parallelism"></a>

Como propietario de la aplicación, conoce bien los recursos que asignar a las tareas en Flink. Para los ejemplos de esta documentación, utilice el mismo número de tareas que el de las tareas de instancias que utilice para la aplicación. En general, recomendamos este nivel inicial de paralelismo, pero también puede aumentar el grado de detalle del paralelismo con ranuras de tareas, que generalmente no deben superar el número de [núcleos virtuales](https://aws.amazon.com/ec2/virtualcores/) por instancia. Para obtener más información sobre la arquitectura de 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) en la documentación de Flink.

## Configurar Flink en un clúster de EMR con varios nodos principales
<a name="flink-multi-master"></a>

Flink permanece disponible durante el proceso JobManager de conmutación por error del nodo principal en un clúster de Amazon EMR con varios nodos principales. A partir de Amazon EMR 5.28.0, la JobManager alta disponibilidad también se habilita automáticamente. No se necesita ninguna configuración manual.

Con las versiones 5.27.0 o anteriores de Amazon EMR, JobManager existe un único punto de error. Cuando se produce un JobManager error, pierde todos los estados de las tareas y no reanudará las tareas en ejecución. Puede habilitar la JobManager alta disponibilidad configurando el recuento de intentos de aplicación, los puntos de control y habilitándola ZooKeeper como almacenamiento de estado para Flink, como se muestra en el siguiente ejemplo:

```
[
  {
    "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"
    }
  }
]
```

Debe configurar tanto los intentos máximos maestros de aplicación para YARN como los intentos de aplicación para Flink. Para obtener más información, consulte [Configuración de la alta disponibilidad de un clúster de YARN](https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/jobmanager_high_availability.html#maximum-application-master-attempts-yarn-sitexml). También puede configurar los puntos de control de Flink para que los reiniciados JobManager recuperen los trabajos en ejecución a partir de puntos de control completados anteriormente. Para obtener más información, consulte [Puntos de comprobación de Flink](https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/checkpointing.html).

## Configuración del tamaño del proceso de memoria
<a name="flink-process-memory"></a>

Para las versiones de Amazon EMR que utilizan Flink 1.11.x, debe configurar el tamaño total del proceso de memoria tanto para () como para JobManager (`jobmanager.memory.process.size`) in. TaskManager `taskmanager.memory.process.size` `flink-conf.yaml` Para establecer estos valores, puede configurar el clúster con la API de configuración o eliminar manualmente los comentarios de estos campos mediante SSH. Flink proporciona los siguientes valores predeterminados.
+ `jobmanager.memory.process.size`: 1600 m
+ `taskmanager.memory.process.size`: 1728 m

Para excluir el metaespacio y la sobrecarga de la JVM, utilice el tamaño total de la memoria de Flink (`taskmanager.memory.flink.size`) en lugar de `taskmanager.memory.process.size`. El valor predeterminado de `taskmanager.memory.process.size` es 1280 m. No se recomienda establecer `taskmanager.memory.process.size` y `taskmanager.memory.process.size`.

Todas las versiones de Amazon EMR que utilizan Flink 1.12.0 y versiones posteriores tienen los valores predeterminados enumerados en el conjunto de código abierto para Flink como valores predeterminados en Amazon EMR, por lo que no necesita configurarlos usted mismo.

## Configuración del tamaño del archivo de salida del registro
<a name="flink-log-output"></a>

Los contenedores de aplicaciones de Flink crean tres tipos de archivos de registro (archivos `.out`, archivos `.log` y archivos `.err`) y también escriben en ellos. Solo los archivos `.err` se comprimen y se eliminan del sistema de archivos, mientras que los archivos de registro `.log` y `.out` permanecen en el sistema de archivos. Para garantizar que estos archivos de salida se puedan administrar y que el clúster permanezca estable, puede configurar la rotación de registros en `log4j.properties` para establecer un número máximo de archivos y limitar sus tamaños.

**Versiones 5.30.0 y posteriores de Amazon EMR**

A partir de Amazon EMR 5.30.0, Flink utiliza el marco de registro log4j2 con el nombre de clasificación de configuración `flink-log4j.`. Con el siguiente ejemplo de configuración se muestra el 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"
    },
  }
]
```

**Versiones 5.29.0 y anteriores de Amazon EMR**

Con las versiones 5.29.0 y anteriores de Amazon EMR, Flink usa el marco de registro log4j. El siguiente ejemplo ilustra la siguiente configuración de un dominio de 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"
    },
  }
]
```

## Configuración de Flink para que se ejecute con Java 11
<a name="flink-configure-java11"></a>

Las versiones 6.12.0 y posteriores de Amazon EMR proporcionan compatibilidad con el tiempo de ejecución de Java 11 para Flink. En las siguientes secciones, se describe cómo configurar el clúster para proporcionar compatibilidad con el tiempo de ejecución de Java 11 a Flink.

**Topics**
+ [Configuración de Flink para Java 11 al crear un clúster](#flink-configure-java11-create)
+ [Configuración de Flink para Java 11 en un clúster en ejecución](#flink-configure-java11-update)
+ [Confirmación del tiempo de ejecución de Java para Flink en un clúster en ejecución](#flink-configure-java11-confirm)

### Configuración de Flink para Java 11 al crear un clúster
<a name="flink-configure-java11-create"></a>

Siga los pasos siguientes para crear un clúster de EMR con Flink y el tiempo de ejecución de Java 11. El archivo de configuración en el que se agrega la compatibilidad con el tiempo de ejecución de Java 11 es `flink-conf.yaml`.

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

**Para crear un clúster con Flink y el tiempo de ejecución de Java 11 en la consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. Elija **Clústeres** en **EMR en EC2** en el panel de navegación izquierdo y, a continuación, elija **Crear clúster**.

1. Seleccione la versión 6.12.0 o posterior de Amazon EMR y elija instalar la aplicación de Flink. Seleccione cualquier otra aplicación que desee instalar en el clúster.

1. Continúe configurando el clúster. En la sección opcional **Configuración de software**, utilice la opción **Ingresar la configuración** predeterminada e ingrese la siguiente configuración:

   ```
   [
       {
         "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. Continúe con la configuración y el lanzamiento del clúster.

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

**Para crear un clúster con el tiempo de ejecución de Flink y Java 11 desde la CLI**

1. Cree un archivo de configuración `configurations.json` para que Flink use 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. Desde AWS CLI, cree un nuevo clúster de EMR con Amazon EMR versión 6.12.0 o superior e instale la aplicación Flink, como se muestra en el siguiente ejemplo:

   ```
   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
   ```

------

### Configuración de Flink para Java 11 en un clúster en ejecución
<a name="flink-configure-java11-update"></a>

Siga los pasos siguientes para actualizar un clúster en ejecución de EMR con Flink y Java 11 en tiempo de ejecución. El archivo de configuración en el que se agrega la compatibilidad con el tiempo de ejecución de Java 11 es `flink-conf.yaml`.

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

**Para actualizar un clúster en ejecución con el tiempo de ejecución de Flink y Java 11 en la consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. Elija **Clústeres** en **EMR en EC2** en el panel de navegación izquierdo y seleccione el clúster que desee actualizar.
**nota**  
El clúster debe usar la versión 6.12.0 o posterior de Amazon EMR para admitir Java 11.

1. Seleccione la pestaña **Configuraciones**.

1. En la sección de **Configuración del grupo de instancias**, seleccione el grupo de instancias **En ejecución** que desea actualizar y, a continuación, seleccione **Volver a configurar** en el menú de acciones de la lista.

1. Vuelva a configurar el grupo de instancias con la opción **Editar atributos** de la siguiente manera. Seleccione **Agregar nueva configuración** después de cada uno de ellos.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/flink-configure.html)

1. Seleccione **Guardar cambios** para agregar los ajustes de configuración.

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

**Para actualizar un clúster en ejecución para usar el tiempo de ejecución de Flink y Java 11 en la CLI**

Use el comando `modify-instance-groups` para especificar una nueva configuración para cada grupo de instancias en un clúster en ejecución.

1. Primero, cree un archivo de configuración `configurations.json` que configure a Flink para usar Java 11. En el siguiente ejemplo, *ig-1xxxxxxx9* sustitúyelo por el ID del grupo de instancias que quieres reconfigurar. Guarde el siguiente archivo en el mismo directorio en el que ejecutará el 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. Desde AWS CLI, ejecuta el siguiente comando. Reemplace el ID del grupo de instancias que desea volver a configurar:

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

------

### Confirmación del tiempo de ejecución de Java para Flink en un clúster en ejecución
<a name="flink-configure-java11-confirm"></a>

A fin de determinar el tiempo de ejecución de Java para un clúster en ejecución, inicie sesión en el nodo principal con SSH, tal y como se describe en [Conectarse al nodo principal utilizando SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html). A continuación, ejecute el siguiente comando:

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

El comando `ps` con la opción `-ef` muestra una lista de todos los procesos en ejecución en el sistema. Puede filtrar esa salida con `grep` para encontrar menciones de la cadena `flink`. Revise el resultado para ver el valor del Entorno de ejecución de Java (JRE), `jre-XX`. En la siguiente salida, `jre-11` indica que se elige Java 11 en tiempo de ejecución para 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, [inicie sesión en el nodo principal con SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) e inicie una sesión de YARN de Flink con el comando `flink-yarn-session -d`. El resultado muestra la máquina virtual de Java (JVM) de Flink, `java-11-amazon-corretto` en el siguiente ejemplo:

```
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
```

# Trabajar con trabajos de Flink en Amazon EMR
<a name="flink-jobs"></a>

Hay varias formas de interactuar con Flink en Amazon EMR: a través de la consola, la interfaz de Flink que se encuentra en la interfaz de usuario de seguimiento y en ResourceManager la línea de comandos. Puede enviar un archivo JAR a una aplicación de Flink con cualquiera de estas opciones. Una vez enviado un archivo JAR, se convierte en un trabajo gestionado por Flink. JobManager JobManager Se encuentra en el nodo YARN que aloja el daemon Application Master de la sesión de Flink.

Puede ejecutar una aplicación de Flink como trabajo de YARN en un clúster de ejecución prolongada o como clúster transitorio. En un clúster de ejecución prolongada, puede enviar varios trabajos de Flink a un clúster de Flink que se ejecuta en Amazon EMR. Si ejecuta un trabajo de Flink como clúster transitorio, su clúster de Amazon EMR solo existe durante el tiempo que se tarda en ejecutar la aplicación de Flink, por lo que solo se le cobrará por los recursos y el tiempo utilizado. Puede enviar un trabajo de Flink con la operación de la API Amazon `AddSteps` EMR, como argumento de paso de `RunJobFlow` la operación y mediante AWS CLI `add-steps` los `create-cluster` comandos o.

## Inicio de una aplicación de YARN de Flink como un paso en un clúster de ejecución prolongada
<a name="flink-add-step"></a>

Para iniciar una aplicación de Flink a la que varios clientes puedan enviar trabajos mediante las operaciones de la API de YARN, debe crear un clúster o agregar una aplicación de Flink a un clúster existente. Para obtener instrucciones sobre cómo crear un clúster nuevo, consulte [Creación de un clúster con Flink](flink-create-cluster.md). Para iniciar una sesión de YARN en un clúster existente, utilice los siguientes pasos desde la consola, la AWS CLI o el SDK de Java.

**nota**  
El comando `flink-yarn-session` se agregó en Amazon EMR versión 5.5.0 como envoltorio para que el script `yarn-session.sh` simplifique la ejecución. Si utiliza una versión anterior de Amazon EMR, sustituya `bash -c "/usr/lib/flink/bin/yarn-session.sh -d"` por **Argumentos** en la consola o `Args` en el comando AWS CLI .

**Para enviar un trabajo de Flink en un clúster existente desde la consola**

Envíe la sesión de Flink de con el comando `flink-yarn-session` en un clúster existente.

1. [Abra la consola Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. En la lista de clústeres, seleccione el clúster que lanzó con anterioridad.

1. En la página de detalles del clúster, elija **Steps (Pasos)**, **Add Step (Añadir paso)**.

1. Utilice las directrices que siguen para introducir los parámetros y, a continuación, elija **Agregar**.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/flink-jobs.html)

**Para enviar un trabajo de Flink en un clúster existente con el AWS CLI**
+ Utilice el comando `add-steps` para agregar un trabajo de Flink a un clúster de ejecución prolongada. El siguiente comando de ejemplo especifica `Args="flink-yarn-session", "-d"` para iniciar una sesión de Flink dentro del clúster de YARN en un estado desconectado (`-d`). Consulte [Configuración de YARN](https://ci.apache.org/projects/flink/flink-docs-release-1.3/setup/yarn_setup.html#flink-yarn-session) en la documentación de Flink más reciente para conocer los detalles de 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"
  ```

## Envío del trabajo a una aplicación de Flink existente en un clúster de ejecución prolongada
<a name="flink-submit-work"></a>

Si ya tiene una aplicación de Flink existente en un clúster de ejecución prolongada, puede especificar el ID de la aplicación de Flink del clúster para enviar el trabajo. Para obtener el ID de la aplicación, ejecute `yarn application -list` la operación de [YarnClient](https://hadoop.apache.org/docs/current/api/org/apache/hadoop/yarn/client/api/YarnClient.html)API AWS CLI o a través de ella:

```
$ 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
```

El ID de la aplicación para esta sesión de Flink es`application_1473169569237_0002`, que puedes usar para enviar trabajos a la aplicación desde el SDK AWS CLI o desde un 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 un trabajo de Flink transitorio
<a name="flink-transient-job"></a>

El segundo ejemplo lanza un clúster transitorio que ejecuta un trabajo de Flink y, a continuación, termina al completarse.

**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**  
Utilice el subcomando `create-cluster` para crear un clúster transitorio que termina cuando se completa el trabajo de Flink:  

```
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/""
```

# Uso del intérprete de comandos de Scala
<a name="flink-scala"></a>

El intérprete de comandos de Scala de Flink para clústeres de EMR solo está configurado para iniciar nuevas sesiones de YARN. Puede utilizar el shell Scala con el procedimiento siguiente.

**Uso del intérprete de comandos de Scala de Flink en el nodo principal**

1. Inicie sesión en el nodo principal con SSH, tal y como se describe en [Conectarse al nodo principal utilizando SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html).

1. Escriba lo siguiente para iniciar un shell:

   En Amazon EMR versión 5.5.0 y versiones posteriores, puede usar el siguiente comando para iniciar un clúster de Yarn para el Scala Shell con uno. TaskManager

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

   En las versiones anteriores de Amazon EMR, utilice:

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

   Esto inicia el shell Scala de Flink para que pueda utilizar de forma interactiva Flink. De la misma forma que con otras interfaces y opciones, puede escalar el valor de opción `-n` utilizado en el ejemplo en función del número de tareas que desea ejecutar desde el shell.

   Para obtener más información, consulte [Scala REPL](https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/scala_shell.html) en la documentación de Apache Flink.

# Encontrar la interfaz web de Flink
<a name="flink-web-interface"></a>

La aplicación maestra que pertenece a la aplicación de Flink aloja la interfaz web de Flink. Es una forma alternativa de enviar un JAR como trabajo o de ver el estado actual de otros trabajos. La interfaz web de Flink está activa siempre y cuando tenga una sesión de Flink en ejecución. Si ya tiene activo un trabajo de YARN de larga duración, puede seguir las instrucciones del tema [Conectarse al nodo principal con SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) de la *Guía de administración de Amazon EMR* para conectarse al YARN. ResourceManager Por ejemplo, si ha configurado un túnel SSH y ha activado un proxy en su navegador, debe elegir la ResourceManager conexión en **Conexiones** en la página de detalles del clúster de EMR.

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


Cuando encuentres el ResourceManager, selecciona la aplicación YARN que aloja una sesión de Flink. Elija el enlace bajo la columna **Tracking UI (IU de seguimiento)**. 

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


En la interfaz web de Flink, puede ver la configuración, enviar su propio JAR personalizado como trabajo o monitorizar los trabajos en curso. 

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


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

## Descripción general de
<a name="flink-autoscaler-overview"></a>

Las versiones 6.15.0 y posteriores de Amazon EMR admiten el *escalador automático de Flink*. La funcionalidad del escalador automático de trabajos recopila métricas de la ejecución de los trabajos de transmisión de Flink y escala automáticamente los vértices individuales de los trabajos. Esto reduce la contrapresión y cumple el objetivo de utilización establecido.

Para obtener más información, consulte la sección sobre el [escalador automático](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/custom-resource/autoscaler/) de la documentación del *operador de Kubernetes de Apache Flink*.

## Consideraciones
<a name="flink-autoscaler-considerations"></a>
+ Las versiones 6.15.0 y posteriores de Amazon EMR admiten el escalador automático de Flink.
+ El escalador automático de Flink solo es compatible con trabajos de transmisión.
+ Solo se admite el programador adaptativo. El programador predeterminado no es compatible.
+ Se recomienda habilitar el escalado de clústeres para permitir el aprovisionamiento dinámico de recursos. Se prefiere el escalado administrado de Amazon EMR porque la evaluación de las métricas se realiza cada 5 a 10 segundos. En este intervalo, el clúster puede adaptarse más fácilmente al cambio en los recursos del clúster necesarios.

## Habilitación del escalador automático
<a name="flink-autoscaler-start"></a>

Realice los siguientes pasos para habilitar el escalador automático de Flink al crear un clúster de Amazon EMR en EC2.

1. En la consola de Amazon EMR, cree un nuevo clúster de EMR:

   1. Elija la versión `emr-6.15.0` de Amazon EMR o una posterior. Elija el paquete de aplicaciones de **Flink** y seleccione cualquier otra aplicación que desee incluir en su clúster.  
![\[Application bundle options for Amazon EMRclúster, with Flink highlighted and selected.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/emr-flink-cluster-create.png)

   1. En la opción **Escalado y aprovisionamiento del clúster**, seleccione **Usar escalado administrado de EMR**.  
![\[Clúster scaling options: manual, EMR-managed (selected), or custom automatic scaling.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/emr-flink-cluster-managedscaling.png)

1. En la sección **Configuración de software**, introduzca la siguiente configuración para habilitar el escalador automático de Flink. Para los escenarios de prueba, defina el intervalo de decisión, el intervalo de la ventana de métricas y el intervalo de estabilización en un valor inferior para que el trabajo tome inmediatamente una decisión de escalado a fin de facilitar la verificación.

   ```
   [
     {
       "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. Seleccione o configure cualquier otro ajuste como prefiera y cree el clúster con escalador automático de Flink.

## Configuraciones del escalador automático
<a name="flink-autoscaler-config"></a>

En esta sección, se describe la mayoría de las configuraciones que puede cambiar en función de sus necesidades específicas.

**nota**  
En el caso de configuraciones que se basan en el tiempo como `time`, `interval` y `window`, la unidad predeterminada es milisegundos cuando no se especifica ninguna. Por lo tanto, un valor de `30` sin sufijo equivale a 30 milisegundos. Para otras unidades de tiempo, incluya el sufijo correspondiente: `s` para *segundos*, `m` para *minutos* y `h` para *horas*.

**Topics**
+ [Configuraciones de bucles](#flink-autoscaler-config-loop)
+ [Configuraciones de las métricas y el historial](#flink-autoscaler-config-metrics)
+ [Configuraciones de vértices](#flink-autoscaler-config-vertex)
+ [Configuraciones de eventos pendientes](#flink-autoscaler-config-backlog)
+ [Configuraciones de operaciones de escala](#flink-autoscaler-config-scale)

### Configuraciones de bucles del escalador automático
<a name="flink-autoscaler-config-loop"></a>

El escalador automático busca las métricas a nivel de vértice de trabajo para cada intervalo de tiempo configurable, las convierte en variables procesables a escala, estima el nuevo paralelismo entre los vértices de trabajo y lo recomienda al programador de trabajos. Las métricas se recopilan solo después del tiempo de reinicio del trabajo y del intervalo de estabilización del clúster.


| Clave de configuración | Predeterminado | Description (Descripción) | Valores de ejemplo | 
| --- | --- | --- | --- | 
| job.autoscaler.enabled | false | Habilite el escalado automático en su clúster de Flink. | true, false | 
| job.autoscaler.decision.interval | 60s | Intervalo de decisión del escalador automático. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 
| job.autoscaler.restart.time | 3m | Se utilizará el tiempo de reinicio previsto hasta que el operador pueda determinarlo de forma fiable a partir del historial. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 
| job.autoscaler.stabilization.interval | 300s | El periodo de estabilización en el que no se ejecutará ningún nuevo escalado. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 
| job.autoscaler.debug.logs.interval | 300s | El intervalo de registros de depuración del escalador automático. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 

### Configuraciones de la agregación de métricas y el historial
<a name="flink-autoscaler-config-metrics"></a>

El escalador automático busca las métricas, las agrega en una ventana deslizante basada en tiempo y las evalúa para tomar decisiones de escalado. El historial de decisiones de escalado de cada vértice de trabajo se utiliza para estimar el nuevo paralelismo. Estos valores tienen una fecha de vencimiento basada en la antigüedad y el tamaño del historial (al menos 1).


| Clave de configuración | Predeterminado | Description (Descripción) | Valores de ejemplo | 
| --- | --- | --- | --- | 
| job.autoscaler.metrics.window | 600s | Scaling metrics aggregation window size. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 
| job.autoscaler.history.max.count | 3 | Número máximo de decisiones de escalado anteriores que se deben conservar por vértice. | De 1 a Integer.MAX\$1VALUE | 
| job.autoscaler.history.max.age | 24h | Número mínimo de decisiones de escalado anteriores que se deben conservar por vértice. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 

### Configuraciones a nivel de vértice de trabajo
<a name="flink-autoscaler-config-vertex"></a>

El paralelismo de cada vértice de trabajo se modifica en función del objetivo de utilización y está limitado por los límites de paralelismo mínimo-máximo. No se recomienda fijar el objetivo de utilización cerca del 100 % (es decir, un valor de 1), y el límite de utilización funciona como amortiguador para gestionar las fluctuaciones de carga intermedias.


| Clave de configuración | Predeterminado | Description (Descripción) | Valores de ejemplo | 
| --- | --- | --- | --- | 
| job.autoscaler.target.utilization | 0.7 | Objetivo de utilización del vértice. | 0 - 1 | 
| job.autoscaler.target.utilization.boundary | 0.4 | Límite del objetivo de utilización del vértice. El escalado no se realizará si la velocidad de procesamiento actual está dentro de [target\$1rate / (target\$1utilization - boundary) y (target\$1rate / (target\$1utilization \$1 boundary)]. | 0 - 1 | 
| job.autoscaler.vertex.min-parallelism | 1 | El paralelismo mínimo que puede utilizar el escalador automático. | 0 - 200 | 
| job.autoscaler.vertex.max-parallelism | 200 | El paralelismo máximo que puede utilizar el escalador automático. Tenga en cuenta que se ignorará este límite si es superior al paralelismo máximo establecido en la configuración de Flink o directamente en cada operador. | 0 - 200 | 

### Configuraciones de eventos de procesamiento pendientes
<a name="flink-autoscaler-config-backlog"></a>

El vértice de trabajo necesita recursos adicionales para gestionar los eventos pendientes, o atrasados, que se acumulan durante el periodo de operación de escalado. Esto también se conoce como duración de `catch-up`. Si el tiempo de procesamiento del atraso supera el valor del `lag -threshold` configurado, el objetivo de utilización del vértice de trabajo aumenta hasta el nivel máximo. Esto ayuda a evitar operaciones de escalado innecesarias mientras se procesa la acumulación de eventos pendientes.


| Clave de configuración | Predeterminado | Description (Descripción) | Valores de ejemplo | 
| --- | --- | --- | --- | 
| job.autoscaler.backlog-processing.lag-threshold | 5m | Umbral de retraso que evitará escalados innecesarios y eliminará los mensajes pendientes responsables del retraso. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 
| job.autoscaler.catch-up.duration | 15m | El tiempo objetivo para procesar por completo cualquier acumulación después de una operación de escalado. Configúrelo en 0 para deshabilitar el escalado que se basa en la acumulación de eventos. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 

### Configuraciones de operaciones de escala
<a name="flink-autoscaler-config-scale"></a>

El escalador automático no realiza la operación de reducción vertical inmediatamente después de una operación de escalado vertical dentro del periodo de gracia. Esto evita el ciclo innecesario de up-down-up-down operaciones de la báscula provocado por fluctuaciones temporales de carga. 

Podemos utilizar la relación de operaciones de reducción vertical para reducir gradualmente el paralelismo y liberar recursos a fin de hacer frente a los picos de carga temporales. Esto también ayuda a evitar una operación de escalado vertical menor innecesaria tras una operación de reducción vertical mayor. 

Se puede detectar una operación de escalado vertical ineficaz según el historial de decisiones de escalado de vértices de trabajo anteriores para evitar nuevos cambios en el paralelismo.


| Clave de configuración | Predeterminado | Description (Descripción) | Valores de ejemplo | 
| --- | --- | --- | --- | 
| job.autoscaler.scale-up.grace-period | 1h | Duración durante la cual no se permite reducir verticalmente el tamaño de un vértice después de haberlo escalado verticalmente. | 30 (la unidad predeterminada es milisegundos), 5m, 1h | 
| job.autoscaler.scale-down.max-factor | 0.6 | Factor máximo de reducción vertical. Un valor de 1 significa que no hay límite en la reducción vertical; 0.6 significa que el trabajo solo se puede reducir verticalmente con el 60 % del paralelismo original. | 0 - 1 | 
| job.autoscaler.scale-up.max-factor | 100000. | Relación máxima de escalado vertical. Un valor de 2.0 significa que el trabajo solo se puede escalar verticalmente con el 200 % del paralelismo actual. | 0 - Integer.MAX\$1VALUE | 
| job.autoscaler.scaling.effectiveness.detection.enabled | false | Si se debe permitir la detección de operaciones de escalado ineficaces y permitir que el escalador automático bloquee nuevos escalados verticales. | true, false | 

# Optimización de los tiempos de reinicio de los trabajos para las operaciones de escalado y recuperación de tareas
<a name="flink-restart"></a>

Cuando se produce un error en una tarea o se produce una operación de escalado, Flink intenta volver a ejecutar la tarea desde el último punto de control completado. El proceso de reinicio puede tardar un minuto o más en ejecutarse, según el tamaño del estado del punto de control y el número de tareas paralelas. Durante el periodo de reinicio, es posible que se acumulen tareas pendientes para el trabajo. Sin embargo, hay algunas formas en las que Flink optimiza la velocidad de los gráficos de recuperación y reinicio de la ejecución para mejorar la estabilidad del trabajo.

En esta página, se describen algunas de las formas en que Amazon EMR Flink puede mejorar el tiempo de reinicio de un trabajo durante las operaciones de recuperación o escalado de tareas.

**Topics**
+ [Recuperación local de tareas](#flink-restart-task-local)
+ [Punto de control incremental genérico basado en registros](#flink-restart-log-check)
+ [Recuperación detallada](#flink-restart-fine-grained)
+ [Mecanismo de reinicio combinado en el programador adaptativo](#flink-restart-combined)

## Recuperación local de tareas
<a name="flink-restart-task-local"></a>

**nota**  
La recuperación local de tareas es compatible a partir de la versión 6.0.0 de Amazon EMR.

Con los puntos de control de Flink, cada tarea produce una instantánea de su estado que Flink graba en un almacenamiento distribuido como Amazon S3. En los casos de recuperación, las tareas restauran su estado desde el almacenamiento distribuido. El almacenamiento distribuido ofrece tolerancia a errores y puede redistribuir el estado durante el reescalado, ya que todos los nodos pueden acceder a él.

Sin embargo, un almacén distribuido remoto también tiene una desventaja: todas las tareas deben leer su estado desde una ubicación remota a través de la red. Esto puede provocar tiempos de recuperación prolongados para los estados de gran tamaño durante las operaciones de recuperación o escalado de tareas.

Este problema del tiempo de recuperación prolongado se resuelve mediante la *recuperación local de tareas*. Las tareas escriben su estado en el punto de control de un almacenamiento secundario que es local para la tarea, por ejemplo, en un disco local. También almacenan su estado en el almacenamiento principal, o Amazon S3 en nuestro caso. Durante la recuperación, el programador programa las tareas en el mismo administrador de tareas en el que se ejecutaron anteriormente, de modo que se puedan recuperar del almacén de estado local en lugar de leerlas del almacén de estado remoto. Para obtener más información, consulte [Task-Local Recovery](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/large_state_tuning/#task-local-recovery) en la *documentación de Apache Flink*.

Nuestras pruebas comparativas con trabajos de muestra han demostrado que el tiempo de recuperación se ha reducido de unos minutos a unos pocos segundos con la opción de recuperación local de tareas habilitada.

Para habilitar la recuperación local de tareas, defina las siguientes configuraciones en el archivo `flink-conf.yaml`. Especifique el valor del intervalo de puntos de control en milisegundos.

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

## Punto de control incremental genérico basado en registros
<a name="flink-restart-log-check"></a>

**nota**  
Los puntos de control incrementales genéricos basados en registros son compatibles a partir de la versión 6.10.0 de Amazon EMR.

En Flink 1.16, se agregaron puntos de control incrementales genéricos basados en registros para mejorar la velocidad de los puntos de control. Un intervalo de puntos de control más rápido suele reducir el trabajo de recuperación, ya que es necesario volver a procesar menos eventos después de la recuperación. Para obtener más información, 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/) en el *blog de Apache Flink*.

Con trabajos de muestra, nuestras pruebas comparativas han demostrado que el tiempo de los puntos de control se ha reducido de unos minutos a unos pocos segundos con el punto de control incremental genérico basado en registros.

Para habilitar los puntos de control incrementales genéricos basados en registros, defina las siguientes configuraciones en el archivo `flink-conf.yaml`. Especifique el valor del intervalo de puntos de control en milisegundos.

```
    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
```

## Recuperación detallada
<a name="flink-restart-fine-grained"></a>

**nota**  
El soporte de la recuperación detallada para el programador predeterminado está disponible a partir de la versión 6.0.0 de Amazon EMR. El soporte de la recuperación detallada para el programador predeterminado está disponible a partir de la versión 6.15.0 de Amazon EMR.

Cuando se produce un error en una tarea durante la ejecución, Flink restablece todo el gráfico de ejecución y activa una nueva ejecución completa desde el último punto de control completado. Esto es más caro que volver a ejecutar las tareas con errores. La recuperación detallada reinicia solo el componente conectado a la canalización de la tarea con el error. En el siguiente ejemplo, el gráfico de tareas tiene 5 vértices (de `A` a `E`). Todas las conexiones entre los vértices se canalizan con una distribución puntual y el valor `parallelism.default` para el trabajo se establece en `2`. 

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

En este ejemplo, hay un total de 10 tareas en ejecución. La primera canalización (de `a1` a `e1`) se ejecuta en un TaskManager (`TM1`) y la segunda canalización (de `a2` a `e2`) se ejecuta en otro TaskManager (`TM2`).

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

Hay dos componentes conectados por canalización: `a1 → e1` y `a2 → e2`. Si `TM1` o `TM2` falla, el error solo afecta a las 5 tareas de la canalización en la que el TaskManager se estaba ejecutando. La estrategia de reinicio solo inicia el componente canalizado afectado. 

La recuperación detallada solo funciona con trabajos de Flink perfectamente paralelos. No es compatible con las operaciones `keyBy()` o `redistribute()`. Para obtener más información, 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) en el proyecto de Jira *Flink Improvement Proposal*.

Para habilitar la recuperación detallada, establezca las siguientes configuraciones en el archivo `flink-conf.yaml`.

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

## Mecanismo de reinicio combinado en el programador adaptativo
<a name="flink-restart-combined"></a>

**nota**  
El mecanismo de reinicio combinado del programador adaptativo es compatible a partir de la versión 6.15.0 de Amazon EMR.

El programador adaptativo puede ajustar el paralelismo del trabajo en función de los espacios disponibles. Reduce automáticamente el paralelismo si no hay suficientes espacios disponibles para ajustarse al paralelismo del trabajo configurado. Si hay nuevos espacios disponibles, la tarea se escala verticalmente de nuevo al paralelismo del trabajo configurado. Un programador adaptativo evita el tiempo de inactividad del trabajo cuando no hay suficientes recursos disponibles. Este es el programador compatible con el escalador automático de Flink. Recomendamos el programador adaptativo con Amazon EMR Flink por estos motivos. Sin embargo, los programadores adaptativos pueden realizar varios reinicios en un periodo corto, uno por cada nuevo recurso agregado. Esto puede provocar una disminución en el rendimiento del trabajo.

Con Amazon EMR 6.15.0 y versiones posteriores, Flink cuenta con un mecanismo de reinicio combinado en el programador adaptativo que abre una ventana de reinicio cuando se agrega el primer recurso y, a continuación, espera hasta alcanzar el intervalo de ventana configurado del minuto predeterminado. Realiza un único reinicio cuando hay suficientes recursos disponibles para ejecutar el trabajo con el paralelismo configurado o cuando se agota el intervalo.

Con trabajos de muestra, nuestras pruebas comparativas han demostrado que esta característica procesa un 10 % de los registros más que el comportamiento predeterminado cuando se utiliza el programador adaptativo y el escalador automático de Flink.

Para habilitar el mecanismo de reinicio combinado, defina las siguientes configuraciones en el archivo `flink-conf.yaml`.

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

# Trabajar con trabajos de Flink de Zeppelin en Amazon EMR
<a name="flink-zeppelin"></a>

## Introducción
<a name="flink-zeppelin-intro"></a>

Las versiones 6.10.0 y posteriores de Amazon EMR admiten la integración de [Apache Zeppelin](emr-zeppelin.md) con Apache Flink. Puede enviar trabajos de Flink de forma interactiva a través de los cuadernos de Zeppelin. Con el intérprete de Flink, puede ejecutar consultas de Flink, definir los trabajos de streaming y lotes de Flink y visualizar el resultado en los cuadernos de Zeppelin. El intérprete de Flink se basa en la API de REST de Flink. Esto le permite acceder a los trabajos de Flink y manipularlos desde el entorno de Zeppelin para procesar y analizar los datos en tiempo real.

Hay cuatro subintérpretes en el intérprete de Flink. Tienen diferentes propósitos, pero todos están en la JVM y comparten los mismos puntos de entrada a Flink preconfigurados (`ExecutionEnviroment`, `StreamExecutionEnvironment`, `BatchTableEnvironment`, `StreamTableEnvironment`). Los intérpretes son los siguientes:
+ `%flink`: crea `ExecutionEnvironment`, `StreamExecutionEnvironment`, `BatchTableEnvironment`, `StreamTableEnvironment` y proporciona un entorno de Scala.
+ `%flink.pyflink`: proporciona un entorno de Python.
+ `%flink.ssql`: proporciona un entorno de SQL de streaming.
+ `%flink.bsql`: proporciona un entorno de SQL de lotes.

## Requisitos previos
<a name="flink-zeppelin-prerequisites"></a>
+ La integración de Zeppelin con Flink es compatible con los clústeres creados con la versión 6.10.0 y posteriores de Amazon EMR.
+ Para ver las interfaces web que están alojadas en los clústeres de EMR como se requiere en estos pasos, debe configurar un túnel de SSH para permitir el acceso entrante. Para obtener más información, consulte [Configurar ajustes de proxy para ver sitios web alojados en el nodo principal](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-proxy.html).

## Configuración de Zeppelin-Flink en un clúster de EMR
<a name="flink-zeppelin-configure"></a>

Siga los siguientes pasos para configurar Apache Flink en Apache Zeppelin para que se ejecute en un clúster de EMR:

1. Cree un clúster nuevo desde la consola de Amazon EMR. Seleccione emr-6.10.0 o una versión posterior para la versión de Amazon EMR. A continuación, elija personalizar el paquete de aplicaciones con la opción Personalizado. Incluya al menos Flink, Hadoop y Zeppelin en su paquete.  
![\[En la consola de Amazon EMR, personalice el paquete de aplicaciones con la opción Personalizado. Incluye al menos Flink, Hadoop y Zeppelin en su paquete\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/emr-flink-zeppelin-console.png)

1. Cree el resto del clúster con la configuración que prefiera.

1. Una vez que el clúster esté en ejecución, selecciónelo en la consola para ver sus detalles y abrir la pestaña Aplicaciones. Seleccione Zeppelin en la sección Interfaces de usuario de aplicaciones para abrir la interfaz web de Zeppelin. Asegúrese de haber configurado el acceso a la interfaz web de Zeppelin con un túnel de SSH al nodo principal y una conexión de proxy, tal y como se describe en [Requisitos previos](#flink-zeppelin-prerequisites).  
![\[En la interfaz web de Zeppelin, puede importar y crear nuevos cuadernos.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/welcome-to-zeppelin.png)

1. Ahora puede crear una nota nueva en un cuaderno de Zeppelin con Flink como intérprete predeterminado.  
![\[Puede crear una nota nueva en un cuaderno de Zeppelin con Flink como intérprete predeterminado.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/emr-flink-zeppelin-create-notebook.png)

1. Consulte los siguientes ejemplos de código que muestran cómo ejecutar trabajos de Flink desde un cuaderno de Zeppelin.

## Ejecución de trabajos de Flink con Zeppelin-Flink en un clúster de EMR
<a name="flink-zeppelin-run-jobs"></a>
+ Ejemplo 1: Flink Scala

  a) WordCount Ejemplo de lote (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 Ejemplo de transmisión (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 ejemplo, puede ejecutar WordCount trabajos por lotes WordCount y en streaming desde un portátil Zeppelin.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/streaming-wordcount-example.png)
+ Ejemplo 2: SQL en streaming de Flink

  ```
  %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;
  ```  
![\[En este ejemplo se muestra cómo ejecutar un trabajo de SQL en streaming de Flink.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/flink-streaming-sql.png)
+ Ejemplo 3: Pyflink. Tenga en cuenta que debe cargar su propio archivo de texto de muestra `word.txt` con un nombre en su bucket de 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. Elija **FLINK JOB** en la interfaz de usuario de Zeppelin para acceder a la interfaz de usuario web de Flink y verla.  
![\[Flink code snippet for word count with output showing counts for "hello", "flink", "hadoop", and "world".\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/batch-wordcount-example.png)

1. Al elegir **FLINK JOB**, se accede a la consola web de Flink en otra pestaña del navegador.  
![\[Al elegir FLINK JOB (TRABAJO DE FLINK) abre la consola web de Flink en otra pestaña del navegador.\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/images/flink-web-console.png)

# Historial de lanzamientos de Flink
<a name="Flink-release-history"></a>

En la siguiente tabla se muestra la versión de Flink incluida en cada versión de lanzamiento de Amazon EMR, junto con los componentes instalados con la aplicación. Para ver las versiones de los componentes de cada versión, consulte la sección Versiones de los componentes en la versión correspondiente de [Versiones de Amazon EMR 7.x](emr-release-7x.md), [Versiones de lanzamiento de Amazon EMR 6.x](emr-release-6x.md) o [Versiones de lanzamiento de Amazon EMR 5.x](emr-release-5x.md).


**Información de la versión de Flink**  

| Etiqueta de versión de Amazon EMR | Versión de Flink | Componentes instalados con Flink | 
| --- | --- | --- | 
| emr-7.12.0 | 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 | 
| emr-7.11.0 | 1.20.0-amzn-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-amzn-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-amzn-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-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.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 de la versión de Flink por versión
<a name="Flink-release-history-versions"></a>

Consulte las siguientes secciones para ver las notas completas de la versión.

# Amazon EMR 7.10.0 - Notas de la versión de Flink
<a name="Flink-release-history-7100"></a>

**Amazon EMR 7.10.0: cambios en Flink**


| Tipo | Description (Descripción) | 
| --- | --- | 
|  Nueva característica  |  A partir de la versión 7.10.0 de Amazon EMR, puede activar los conectores Kafka y Kinesis Flink con mayor facilidad mediante los ajustes de configuración. Añada `kafka.enabled: true` o `kinesis.enabled: true` en la clasificación `flink-conf` durante la creación del clúster para configurar de manera automática el conector correspondiente. Este enfoque simplificado elimina los pasos de configuración manual que eran necesarios anteriormente.  | 

# Amazon EMR 7.9.0 - Notas de la versión de Flink
<a name="Flink-release-history-790"></a>

**Amazon EMR 7.9.0: cambios en Flink**


| Tipo | Description (Descripción) | 
| --- | --- | 
|  Nueva característica  |  A partir de Amazon EMR 7.9.0, Apache Flink out-of-the-box admite los formatos de archivo Avro, Parquet y ORC. Puede usar estos formatos directamente con cualquier API de Flink (DataStream, tabla o SQL) sin necesidad de ninguna configuración adicional.  | 
|  Nueva característica  |  A partir de la versión 7.9.0 de Amazon EMR, puede habilitar los catálogos de datos de Hive Metastore o AWS Glue con mayor facilidad mediante los ajustes de configuración. Añada `hive.enabled: true` o `glue.enabled: true` en la clasificación `flink-conf` durante la creación del clúster para configurar de manera automática el catálogo de datos correspondiente. Este enfoque simplificado elimina los pasos de configuración manual que eran necesarios anteriormente.  | 

# Amazon EMR 7.8.0 - Notas de la versión de Flink
<a name="Flink-release-history-780"></a>

**Configuración**: EMR Flink funciona de forma inmediata con el S3A en todas las regiones y particiones. AWS 

# Amazon EMR 7.7.0 - Notas de la versión de Flink
<a name="Flink-release-history-770"></a>
+ El intérprete de comandos SQL de Flink se puede invocar fácilmente con el comando `flink-sql-client` que está vinculado simbólicamente a `/usr/lib/flink/bin/sql-client.sh`

# Amazon EMR 7.6.0 - Notas de la versión de Flink
<a name="Flink-release-history-760"></a>

## Amazon EMR 7.6.0: características de Flink
<a name="Flink-release-history-760-features"></a>
+ No hay cambios en la versión.

# Amazon EMR 7.5.0 - Notas de la versión de Flink
<a name="Flink-release-history-750"></a>


| Tipo | Description (Descripción) | 
| --- | --- | 
|  Característica  |  Se agregó soporte para ejecutar trabajos de Flink con un jar remoto.  | 
|  Mejora  |  Haga que los subprocesos de exclusión e inclusión de vértices sean seguros.  | 

## Amazon EMR 7.5.0: características de Flink
<a name="Flink-release-history-750-features"></a>
+ A partir de Amazon EMR 7.5.0, puede especificar una ubicación de Amazon S3 como ruta JAR cuando use los comandos `run` y `run-application` de la CLI Apache Flink. Al proporcionar una ruta S3, EMR descarga automáticamente el archivo JAR de Amazon S3 al almacenamiento EBS del clúster. Cada vez que especifique el mismo archivo JAR, EMR descarga la última versión de Amazon S3 en lugar de volver a usar el archivo JAR existente en el clúster. 
+ A partir de Amazon EMR 7.5.0, los clientes pueden pasar la ruta remota (una ubicación S3) como la ruta JAR con los comandos `run` y `run-application` de la CLI de Flink. A continuación, el JAR se extrae automáticamente del almacén de S3 al almacenamiento EBS del clúster. Si se vuelve a proporcionar el mismo JAR, se descarga el último de S3 y no se reutiliza el JAR existente en el clúster.

# Amazon EMR 7.4.0 - Notas de la versión de Flink
<a name="Flink-release-history-740"></a>


| Tipo | Description (Descripción) | 
| --- | --- | 
|  Upgrade  |  Se ha actualizado Flink a la versión 1.19.1.  | 

# Amazon EMR 7.3.0: notas de la versión de Flink
<a name="Flink-release-history-730"></a>
+ De forma predeterminada, los clústeres con el cifrado en tránsito habilitado mediante la configuración de seguridad utilizarán TLS 1.3 para la comunicación interna entre los procesos de Flink, el punto final REST de Job Manager y el servidor de historial de trabajos de Flink.

# Amazon EMR 7.2.0: notas de la versión de Flink
<a name="Flink-release-history-720"></a>


| Tipo | Description (Descripción) | 
| --- | --- | 
|  Mejoras  |  La asistencia permite añadir etiquetas personalizadas al servicio de Kubernetes por trabajo de Flink mediante la configuración `kubernetes.service.labels`.  | 