Introducción a Amazon Kinesis Data Streams

Introducción

Amazon Kinesis Data Streams es un servicio de procesamiento e ingesta de datos, de larga duración y escalable, optimizado para el streaming de datos. Puede configurar cientos de miles de generadores de datos para incluir datos de manera continua en un stream de datos de Amazon Kinesis. Los datos estarán disponibles en milisegundos para sus aplicaciones de Amazon Kinesis, y esas aplicaciones recibirán registros de datos en el orden en que se generaron.

Amazon Kinesis Data Streams se integra con una serie de servicios de AWS, que incluyen Amazon Kinesis Data Firehose para la transformación casi en tiempo real y la entrega de datos de streaming en un lago de datos de AWS como Amazon S3, Amazon Managed Service para Apache Flink para el procesamiento de datos de streaming administrado, AWS Lambda para el procesamiento de eventos o registros, AWS PrivateLink para la conectividad privada, Amazon Cloudwatch para las métricas y el procesamiento de registros y AWS KMS para el cifrado desde el servidor.

Amazon Kinesis Data Streams se utiliza como puerta de enlace de una solución de big data. Se colocan datos de diferentes fuentes en un stream de Amazon Kinesis para que puedan consumirse en las diferentes aplicaciones de Amazon Kinesis. En este ejemplo, una aplicación (resaltada en amarillo) ejecuta un panel de estado en tiempo real con los datos de streaming. Otra aplicación (destacada en rojo) realiza una agregación sencilla y emite los datos procesados a Amazon S3. Los datos presentes en S3 se continúan procesando y se almacenan en Amazon Redshift para la realización de análisis complejos. La tercera aplicación (resaltada en verde) emite datos sin procesar a Amazon S3, que luego se archivan en Amazon Glacier para un almacenamiento a largo plazo de costo más bajo. Observe cómo estas tres líneas de procesamiento de datos funcionan simultáneamente y en paralelo.

Introducción a Amazon Kinesis Data Streams

Consulte las novedades de Amazon Kinesis Data Streams

Solicite ayuda para realizar una prueba de concepto o evaluación

Videos

Utilice Kinesis Data Streams

Una vez que se registre en Amazon Web Services, puede comenzar a utilizar Amazon Kinesis Data Streams de las siguientes maneras:

  • Cree un stream de datos de Amazon Kinesis a partir de la consola de administración de Amazon Kinesis o con la API CreateStream de Amazon Kinesis.
  • Configure los generadores de datos para incluir datos en su streaming de Amazon Kinesis sin interrupción.
  • Desarrolle sus aplicaciones de Amazon Kinesis para que lean y procesen datos de su secuencia de Amazon Kinesis.

Conceptos clave

Un generador de datos es una aplicación que normalmente emite registros de datos a medida que se generan en un stream de datos de Kinesis. Los generadores de datos asignan claves de particiones a los registros. Las claves de particiones en última instancia determinan qué partición incorpora el registro de datos para un streaming de datos.

Un consumidor de datos es una aplicación de Kinesis distribuida o un servicio de AWS que recupera datos de todas las particiones en un stream a medida que se generan. La mayoría de los consumidores de datos recuperan los datos más recientes en una partición, lo que permite el análisis o el manejo de datos en tiempo real.

Un stream de datos es una agrupación lógica de particiones. No hay límites en la cantidad de particiones dentro de una secuencia de datos (solicite un aumento de límite si necesita más). Un stream de datos retendrá los datos por 24 horas por defecto, u opcionalmente hasta 365 días.

El partición es la unidad base de capacidad de rendimiento de un streaming de datos de Amazon Kinesis.

  • Un fragmento es un registro solo de anexo y una unidad de capacidad de streaming. Un partición contiene una secuencia ordenada de registros ordenados por hora de llegada.
  • Un fragmento puede incorporar hasta 1000 registros de datos por segundo, o 1 MB/s. Agregue más fragmentos para aumentar su capacidad de incorporación de datos.
  • Agregue o elimine particiones de la transmisión de forma dinámica a medida que cambia su capacidad de rendimiento de datos con la API UpdateShardCount de la Consola de AWS, active el escalado automático a través de AWS Lambda, o con una utilidad de escalamiento automático.
  • Cuando los consumidores usan una distribución ramificada mejorada, una partición proporciona una entrada de datos de 1 MB/s y una salida de datos de 2 MB/s para cada consumidor de datos registrado para usar una distribución ramificada mejorada.
  • Cuando los consumidores no usan una distribución ramificada mejorada, la partición proporciona 1 MB/s de entrada y 2 MB/s de salida de datos, y esta salida se comparte con cualquier consumidor que no utilice la distribución ramificada mejorada.
  • Especificará la cantidad de particiones necesarias al crear un stream y puede cambiar esta cantidad en cualquier momento. Por ejemplo, puede crear un stream con dos particiones. Si tiene 5 consumidores de datos que utilizan una distribución ramificada mejorada, este stream puede proporcionar hasta 20 MB/s de salida de datos totales (2 particiones x 2 MB/s x 5 consumidores de datos). Cuando el consumidor de datos no está usando una distribución ramificada mejorada, este stream tiene una capacidad de rendimiento de entrada de datos de 2 MB/s y de salida de datos de 4 MB/s. En todos los casos, este streaming permite hasta 2000 registros PUT por segundo, o 2 MB/s de ingreso, el límite al que se llegue primero.
  • Puede monitorear las métricas a nivel de la partición en Amazon Kinesis Data Streams.

Un registro es la unidad de datos que se almacena en un stream de Amazon Kinesis. Un registro se compone de un número secuencial, una clave de partición y un blob de datos. Un blob de datos son los datos de interés que el generador de datos agrega a su transmisión. El tamaño máximo de un blob de datos (la carga útil de datos posterior a la descodificación Base64) es de 1 megabyte (MB).

Una clave de partición suele ser un identificador significativo, como un ID de usuario o una marca de tiempo. Su generador de datos lo especifica al colocar datos en un stream de datos de Amazon Kinesis, y es útil para los consumidores, ya que pueden usar la clave de partición para reproducir o crear un historial asociado con ella. La clave de partición se utiliza para segregar y direccionar registros de datos a diferentes particiones de un stream. Por ejemplo, supongamos que tiene un stream de datos de Amazon Kinesis con dos particiones (Partición 1 y Partición 2). Puede configurar el generador de datos para que utilice dos claves de partición (clave A y clave B), a fin de que todos los registros con clave A se incluyan en el fragmento 1 y todos los registros con clave B se incluyan en el fragmento 2.

Un número secuencial es un identificador exclusivo de cada registro de datos. Amazon Kinesis Data Streams asigna un número secuencial cuando un generador de datos llama a la API PutRecord o PutRecords para agregar datos a una secuencia de Amazon Kinesis. Por lo general, los números secuenciales de una misma clave de partición aumentan a medida que transcurre el tiempo; cuanto mayor sea el período de tiempo transcurrido entre las solicitudes PutRecord o PutRecords, mayor será el aumento de los números secuenciales.

Incluya los datos en streamings

Los generadores de datos pueden colocar datos en las secuencias de datos de Amazon Kinesis a través de las API de Amazon Kinesis Data Streams, la biblioteca de generadores de Amazon Kinesis (KPL) o el agente de Amazon Kinesis.

Coloque datos de ejemplo en una secuencia de datos de Kinesis o Kinesis Data Firehose con el generador de datos de Amazon Kinesis.

Amazon Kinesis Data Streams dispone de dos API para agregar datos a una transmisión de Amazon Kinesis: PutRecord y PutRecords. PutRecord permite incluir un solo registro de datos en una llamada a la API, mientras que PutRecords permite varios registros de datos en una llamada a la API.

La biblioteca de generadores de Amazon Kinesis (KPL) es una biblioteca de uso sencillo y altamente configurable que le permite incluir datos en una secuencia de datos de Amazon Kinesis. La biblioteca de generadores de Amazon Kinesis (KPL) contiene una interfaz sencilla, asíncrona y de confianza que le permite lograr un alto desempeño de generación de manera rápida con recursos del cliente mínimos.

El Agente de Amazon Kinesis es una aplicación preintegrada de Java que ofrece una forma fácil de recopilar y enviar datos a una transmisión de Amazon Kinesis. Puede instalar el agente en entornos de servidor basados en Linux, como servidores web, servidores de registro y servidores de bases de datos. El agente monitoriza ciertos archivos y continuamente envía datos al streaming.

Ejecute aplicaciones o cree una propia

Ejecute aplicaciones de procesamiento de streaming completamente administradas utilizando los servicios de AWS o cree las propias.

Amazon Kinesis Data Firehose ofrece la manera más sencilla de transformar y cargar de manera fiable datos de streaming a almacenes de datos y herramientas de análisis. Puede usar un streaming de datos de Kinesis como fuente para Kinesis Data Firehose.

Con Amazon Managed Service para Apache Flink, puede consultar con facilidad los datos de streaming o crear aplicaciones de streaming para obtener información útil y responder con rapidez a las necesidades de su empresa y sus clientes. Puede utilizar una secuencia de datos de Kinesis como origen y destino de una aplicación de Amazon Managed Service para Apache Flink.

Puede suscribirse a las funciones de Lambda para leer automáticamente los registros de su stream de datos de Kinesis. AWS Lambda normalmente se utiliza para el procesamiento de transmisiones registro por registro (también conocido como basado en eventos).

La biblioteca de clientes de Amazon Kinesis (KCL) es una biblioteca preintegrada que permite desarrollar de forma sencilla aplicaciones de Amazon Kinesis para la lectura y el procesamiento de datos procedentes de una secuencia de Amazon Kinesis. La KCL se encarga de administrar las cuestiones complejas, como la adaptación a los cambios del caudal del streaming, el equilibrio de carga de los datos de streaming, la coordinación de servicios distribuidos y el procesamiento de datos con tolerancia a errores. La KCL le permite concentrarse en la lógica del negocio al desarrollar aplicaciones de Amazon Kinesis.  A partir de la versión KCL 2.0, puede utilizar una API de streaming de HTTP/2 de baja latencia y una distribución ramificada mejorada para recuperar datos de un stream.

La biblioteca de conectores de Amazon Kinesis es una biblioteca preintegrada que permite integrar de forma sencilla Amazon Kinesis con otros servicios de AWS y herramientas de terceros. La biblioteca de clientes de Amazon Kinesis (KCL) es necesaria para el uso de la biblioteca de conectores de Amazon Kinesis. La versión actual de esta biblioteca proporciona conectores para Amazon DynamoDB, Amazon Redshift, Amazon S3 y Amazon Elasticsearch Service. La biblioteca también incluye conectores de muestra de cada tipo, además de archivos de compilación de Apache Ant para ejecutar las muestras.

Amazon Kinesis Storm Spout es una biblioteca preintegrada que permite integrar de forma sencilla Amazon Kinesis Data Streams con Apache Storm. La versión actual de Amazon Kinesis Storm Spout obtiene datos del stream de Kinesis y los emite como tuplas. Se añade el canal (spout) a la topología de Storm para poder utilizar Amazon Kinesis Data Streams como un servicio escalable y de confianza para la captura, el almacenamiento y la reproducción de streamings.

Administrar streamings

Puede obtener acceso de manera privada a las API de Kinesis Data Streams desde su Amazon Virtual Private Cloud (VPC) mediante la creación de puntos de enlace de la VPC. Con los puntos de enlace de la VPC, el direccionamiento entre la VPC y Kinesis Data Streams se controla mediante la red de AWS sin la necesidad de utilizar una gateway de Internet, una gateway de NAT ni una conexión de VPN. La última generación de puntos de enlace de la VPC que usa Kinesis Data Streams powered by AWS PrivateLink, un recurso que habilita la conectividad privada entre los servicios de AWS mediante el uso de interfaces de red elástica (ENI) con IP privadas en sus VPC. Consulte la documentación de AWS PrivateLink para obtener más información.

La distribución ramificada mejorada permite a los clientes aumentar en paralelo la cantidad de consumidores que leen un stream al mismo tiempo que se mantiene el rendimiento. Puede utilizar la distribución ramificada mejorada y una API de recuperación de datos de HTTP/2 para distribuir datos a múltiples aplicaciones, generalmente dentro de los 70 milisegundos de llegada.

Es posible cifrar los datos que coloca en Kinesis Data Streams mediante el uso de cifrado del lado del servidor o cifrado del lado del cliente. El cifrado desde el servidor es una característica completamente administrada que cifra y descifra datos automáticamente cuando los coloca o los recupera de una secuencia de datos. Opcionalmente, puede cifrar datos desde el cliente antes de colocarlos en su secuencia de datos. Para obtener más información, consulte la sección Seguridad de las preguntas frecuentes sobre Kinesis Data Streams.

Use una secuencia de datos como origen para Kinesis Data Firehose y transforme sus datos sobre la marcha mientras los entrega a S3, Redshift, Elasticsearch y Splunk. Asocie una aplicación de Amazon Managed Service para Apache Flink para procesar datos de streaming en tiempo real con SQL estándar sin tener que aprender a usar lenguajes de programación ni marcos de procesamiento nuevos.

Amazon Kinesis Data Streams se integra con Amazon CloudWatch para recopilar, ver y analizar con facilidad métricas de CloudWatch correspondientes a las secuencias de datos de Amazon Kinesis y a las particiones de esas secuencias de datos. Para obtener más información sobre las métricas de Amazon Kinesis Data Streams, consulte Monitoreo del servicio Amazon Kinesis Data Streams con Amazon CloudWatch.

Amazon Kinesis Data Streams se integra a AWS Identity and Access Management (IAM), un servicio que permite controlar de forma segura el acceso de los usuarios a sus recursos y servicios de AWS. Por ejemplo, puede crear una política que permita únicamente a un usuario o a un grupo específico incluir datos en su stream de datos de Amazon Kinesis. Para obtener más información sobre cómo administrar y controlar el acceso a su secuencia de datos de Amazon Kinesis, consulte Control del acceso a los recursos de Amazon Kinesis por medio de IAM.

Amazon Kinesis Data Streams se integra con AWS CloudTrail, un servicio que registra las llamadas a la API de AWS de su cuenta y le entrega archivos de registros. Para obtener más información sobre los registros de las llamadas a la API y una lista de las API de Amazon Kinesis admitidas, consulte Registro de las llamadas a la API de Amazon Kinesis por medio de AWS CloudTrail.

Puede etiquetar los streams de datos de Amazon Kinesis para facilitar la administración de recursos y costos. Una etiqueta es un par clave-valor definido por el usuario que ayuda a organizar los recursos de AWS. Por ejemplo, puede etiquetarlos por centros de costos para clasificarlos en categorías y hacer un seguimiento de los costos de Amazon Kinesis Data Streams según el centro de costos. Para obtener más información, consulte el Etiquetado en Amazon Kinesis Data Streams.

Tutoriales

En este tutorial se explican los pasos para crear un stream de datos de Amazon Kinesis, que envía datos de la bolsa de valores simulados al stream, y a escribir una aplicación para procesar los datos de la transmisión de datos.  

Presentaciones destacadas

Soluciones destacadas

La solución de datos de streaming de AWS para Amazon Kinesis proporciona plantillas de AWS CloudFormation en las que los datos fluyen entre los productores, el almacenamiento en streaming, los consumidores y los destinos. Para admitir varios casos de uso y necesidades empresariales, esta solución ofrece cuatro plantillas de AWS CloudFormation. Las plantillas se configuran para aplicar las prácticas recomendadas a fin de monitorear la funcionalidad mediante paneles y alarmas, así como para proteger los datos.