View a markdown version of this page

Gestión de registros de gran tamaño - Amazon Kinesis Data Streams

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.

Gestión de registros de gran tamaño

Amazon Kinesis Data Streams admite registros de hasta 10 mebibytes (). MiBs Esta capacidad se recomienda para procesar cargas útiles de datos intermitentes que superen el límite de tamaño de registro predeterminado de 1 MiB. El tamaño de registro máximo predeterminado para las transmisiones existentes y nuevas es de 1 MiB.

Esta característica beneficia a las aplicaciones de Internet de las cosas (IoT), a los procesos de captura de datos de cambios (CDC) y a los flujos de trabajo de machine learning que requieren procesar cargas de datos eventuales de mayor tamaño. Si desea comenzar a utilizar registros de gran tamaño en su flujo, actualice el límite máximo de tamaño de registro del flujo.

importante

El límite de rendimiento de los fragmentos individuales de 1 MB/s para las escrituras y 2 MB/s para las lecturas permanece inalterado y es compatible con registros de mayor tamaño. Kinesis Data Streams está diseñado para admitir registros intermitentes de gran tamaño, además de un tráfico base de registros inferior o igual a 1 MiB. Pero no para permitir la ingesta sostenida de grandes volúmenes de registros de gran tamaño.

Cómo funcionan los registros de gran tamaño

Amazon Kinesis Data Streams acepta registros de hasta 10 MiB de tamaño. Su transmisión aloja registros de gran tamaño, ya que supera temporalmente su rendimiento de escritura sostenido y, con el tiempo, vuelve a su velocidad de referencia. Esta capacidad de ráfaga se repone de forma continua, por lo que su transmisión puede gestionar grandes registros intermitentes junto con el tráfico normal sin ningún ajuste manual de capacidad.

Para visualizar este comportamiento, piensa en la capacidad de escritura de tu transmisión como la de un depósito que se recarga a un ritmo constante. Cuando envías un registro grande, como un registro de 10 MiB, el depósito se agota temporalmente. A continuación, comienza a rellenarse inmediatamente, lo que significa que puedes seguir enviando registros más pequeños a medida que haya capacidad disponible.

La velocidad a la que se repone la capacidad depende de varios factores:

  • El tamaño de los registros grandes

  • El tamaño de los registros de referencia

  • El patrón de tráfico general de la transmisión

  • La estrategia de clave de partición que eligió

Para obtener los mejores resultados, utilice una clave de partición distribuida de manera uniforme para distribuir los registros de gran tamaño en toda la capacidad disponible de la transmisión.

En el modo bajo demanda, Kinesis Data Streams administra la capacidad automáticamente. Su transmisión aumenta o reduce su rendimiento en función de sus patrones de tráfico, y la gran capacidad de ráfagas de grabación se gestiona de forma transparente. No necesitas aprovisionar ni administrar la capacidad para usar registros de gran tamaño. Para obtener más información sobre cómo se escala el modo bajo demanda, consulte las características del On-demand modo y los casos de uso.

Actualice su flujo para usar registros de gran tamaño

Cómo procesar registros de gran tamaño con Kinesis Data Streams
  1. Vaya a la consola de Kinesis Data Streams.

  2. Seleccione su flujo y vaya a la pestaña Configuración.

  3. Haga clic en Editar junto a Tamaño máximo de registro.

  4. Establezca el tamaño máximo de registro (hasta 10 MiB).

  5. Guarde los cambios.

Esta configuración solo ajusta el tamaño máximo de registro para este flujo de datos de Kinesis. Antes de aumentar este límite, compruebe que todas las aplicaciones posteriores puedan gestionar registros de mayor tamaño.

También puedes actualizar esta configuración mediante la AWS CLI:

aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000

Optimice el rendimiento de su flujo con registros de gran tamaño

Los registros de gran tamaño están diseñados para un uso intermitente. Para obtener mejores resultados, mantén registros grandes en menos del 2% de tu tráfico total. Dado que la transmisión supera temporalmente su rendimiento sostenido para ofrecer un registro grande, el envío de registros grandes con demasiada frecuencia puede reducir la capacidad disponible para el tráfico de referencia. Para obtener más información sobre cómo optimizar el rendimiento de la transmisión con registros de gran tamaño, consulta la sección Limitación y prácticas recomendadas para un rendimiento óptimo.

Mitigue la limitación con los registros de gran tamaño

Dado que los registros de gran tamaño consumen temporalmente la capacidad de ráfagas, es posible que la transmisión limite las escrituras posteriores hasta que se reponga la capacidad. Los siguientes pasos ayudan a reducir la limitación:

Cómo mitigar la limitación
  1. Implemente una lógica de reintento con un retroceso exponencial en su aplicación de producción.

  2. Usa claves de partición aleatorias para distribuir registros grandes en toda la capacidad disponible de la transmisión.

  3. Almacene las cargas útiles en Amazon S3 y envíe solo referencias de metadatos al flujo para flujos continuos de registros de gran tamaño. Para obtener más información, consulte Processing large records with Amazon Kinesis Data Streams.

Gestione registros de gran tamaño mediante las API de Kinesis Data Streams

La compatibilidad con registros de gran tamaño introduce una nueva API y actualiza dos API del plano de control existentes para gestionar hasta 10 registros. MiBs

API para modificar el tamaño de los registros:

  • UpdateMaxRecordSize: Configura el límite máximo de tamaño de registro para las transmisiones existentes de hasta 10 MiBs.

Actualizaciones de las API existentes:

  • CreateStream: agrega el parámetro opcional MaxRecordSizeInKiB para establecer los límites de tamaño de los registros durante la creación del flujo.

  • DescribeStreamSummary: devuelve el campo MaxRecordSizeInKiB para mostrar la configuración del flujo actual.

Todas las API de la lista mantienen la compatibilidad con versiones anteriores de los flujos existentes. Para obtener la documentación completa de las API, consulte la referencia de API del servicio de Amazon Kinesis Data Streams.

AWS componentes compatibles con registros de gran tamaño

Los siguientes AWS componentes son compatibles con registros de gran tamaño:

Componente Description (Descripción)

AWS SDK

AWS El SDK admite la gestión de registros de gran tamaño. Puedes actualizar el tamaño máximo de registro de tu transmisión hasta 10 MiB mediante los métodos disponibles en los SDK. AWS Para obtener más información, consulta Cómo usar este servicio con un SDK. AWS

Kinesis Consumer Library (KCL)

A partir de la versión 2.x, KCL permite la gestión de registros de gran tamaño. Para aprovechar la compatibilidad con los registros de gran tamaño, actualice el maxRecordSize de su flujo, y utilice KCL. Para obtener más información, consulte Uso de Kinesis Client Library

Kinesis Producer Library (KPL)

A partir de la versión 1.0.5, KPL permite la gestión de registros de gran tamaño. Para aprovechar la compatibilidad con los registros de gran tamaño, actualice el maxRecordSize de su flujo, y utilice KPL. Para obtener más información, consulte Develop producers using the Amazon Kinesis Producer Library (KPL).

Amazon EMR

Amazon EMR con Apache Spark admite la gestión de registros de gran tamaño hasta el límite de transmisiones de datos de Kinesis (10). MiBs Para aprovechar la compatibilidad con los registros de gran tamaño, utilice la función readStream. Para obtener más información, consulte Integración de Amazon EMR y Amazon Kinesis.

Amazon Data Firehose

Cuando se utiliza con Kinesis Data Streams, el comportamiento de Amazon Data Firehose con registros de gran tamaño depende del destino de la entrega:

  • Amazon S3: se permite la entrega de registros de gran tamaño sin necesidad de configuración adicional. Si se utiliza la conversión de formatos de datos, Firehose admite la entrega de registros de gran tamaño. Pero si se utiliza la partición dinámica, Firehose no admite la entrega de registros de gran tamaño.

  • Lambda: no recomendamos usar registros de gran tamaño con Firehose cuando activen funciones de Lambda en sentido descendente. Esto podría provocar errores intermitentes.

  • HTTP: Firehose no admite la entrega de registros de gran tamaño.

  • Snowflake: Firehose no admite la entrega de registros de gran tamaño.

  • Amazon Redshift: Firehose no admite la entrega de registros de gran tamaño.

En el caso de las aplicaciones que requieran la entrega a Snowflake o Redshift con registros de gran tamaño, entregue primero los datos a Amazon S3. Luego, utilice los procesos de extracción, transformación y carga (ETL) para cargar los datos. Para todos los demás destinos, pruebe el comportamiento con registros de gran tamaño en un entorno de prueba de concepto antes de escalarlo al uso en producción. La gestión de registros de gran tamaño varía según el destino.

AWS Lambda

AWS Lambda admite cargas útiles de hasta 6. MiBs Este límite incluye la carga útil de Kinesis convertida a codificación de base 64 y los metadatos asociados a la asignación de orígenes de eventos (ESM). Para registros de menos de 6 MiBs, Lambda los procesa mediante ESM sin necesidad de configuración adicional. Para los registros de más de 6 MiBs, Lambda los procesa mediante un destino en caso de error. Debe configurar un destino en caso de fallo mediante ESM para gestionar registros que superen los límites de procesamiento de Lambda. Cada evento enviado al destino en caso de fallo es un documento JSON que contiene metadatos sobre la invocación fallida.

Se recomienda crear un destino en caso de fallo en la ESM, independiente del tamaño del registro. Esto garantiza que no se descarte ningún registro. Para obtener más información, consulte Configuración de destinos para invocaciones fallidas.

Amazon Redshift

Al transmitir datos de Kinesis Data Streams a Amazon Redshift, compruebe el tamaño máximo de registro que admite Amazon Redshift. Para obtener más información, consulte Cómo empezar a incorporar streaming desde Amazon Kinesis Data Streams en la Guía para desarrolladores de bases de datos de Amazon Redshift. Los registros que superen este límite no se procesan. Para obtener más información sobre el registro de la información de los registros que no se procesan, consulte SYS_STREAM_SCAN_ERRORS en la guía para desarrolladores de bases de datos de Amazon Redshift.

Conector Flink para Kinesis Data Streams

Existen dos enfoques para consumir datos de Kinesis Data Streams: el conector origen de Kinesis y el conector receptor de Kinesis. El conector de origen admite la gestión de registros de menos de 1 MiB y de hasta 10. MiBs No utilice el conector receptor para registros de más de 1 MiB. Para obtener más información, consulte Usar conectores para mover datos en Amazon Managed Service para Apache Flink con la DataStream API.

Regiones en las que se admiten registros de gran tamaño

Esta función de Amazon Kinesis Data Streams solo está disponible en las siguientes regiones: AWS

AWS Región Nombre de la región

eu-north-1

Europa (Estocolmo)

me-south-1

Middle East (Bahrain)

ap-south-1

Asia-Pacífico (Mumbai)

eu-west-3

Europa (París)

ap-southeast-3

Asia-Pacífico (Yakarta)

us-east-2

Este de EE. UU. (Ohio)

af-south-1

África (Ciudad del Cabo)

eu-west-1

Europa (Irlanda)

me-central-1

Medio Oriente (EAU)

eu-central-1

Europa (Fráncfort)

sa-east-1

América del Sur (São Paulo)

ap-east-1

Asia-Pacífico (Hong Kong)

ap-south-2

Asia-Pacífico (Hyderabad)

us-east-1

Este de EE. UU. (Norte de Virginia)

ap-northeast-2

Asia-Pacífico (Seúl)

ap-northeast-3

Asia-Pacífico (Osaka)

eu-west-2

Europa (Londres)

ap-southeast-4

Asia-Pacífico (Melbourne)

ap-northeast-1

Asia-Pacífico (Tokio)

us-west-2

Oeste de EE. UU. (Oregón)

us-west-1

Oeste de EE. UU. (Norte de California)

ap-southeast-1

Asia-Pacífico (Singapur)

ap-southeast-2

Asia-Pacífico (Sídney)

il-central-1

Israel (Tel Aviv)

ca-central-1

Canadá (centro)

ca-west-1

Oeste de Canadá (Calgary)

eu-south-2

Europa (España)

cn-northwest-1

China (Ningxia)

eu-central-2

Europa (Zúrich)

us-gov-east-1

AWS GovCloud (US-East)

us-gov-west-1

AWS GovCloud (US-West)