Logotipo de Zephyrnet

Simplifique la ingesta de transmisión de datos para análisis mediante Amazon MSK y Amazon Redshift | Servicios web de Amazon

Fecha:

Hacia el final de 2022, AWS anunció la disponibilidad general de la ingesta de streaming en tiempo real a Desplazamiento al rojo de Amazon para Secuencias de datos de Amazon Kinesis y Amazon Managed Streaming para Apache Kafka (Amazon MSK), eliminando la necesidad de organizar la transmisión de datos en Servicio de almacenamiento simple de Amazon (Amazon S3) antes de ingerirlo en Amazon Redshift.

Transmisión de ingestión de Amazon MSK a Amazon Redshift, representa un enfoque de vanguardia para el procesamiento y análisis de datos en tiempo real. Amazon MSK actúa como un servicio altamente escalable y totalmente administrado para Apache Kafka, lo que permite la recopilación y el procesamiento fluidos de grandes flujos de datos. La integración de datos en streaming en Amazon Redshift aporta un valor inmenso al permitir a las organizaciones aprovechar el potencial del análisis en tiempo real y la toma de decisiones basada en datos.

Esta integración le permite lograr una latencia baja, medida en segundos, mientras ingiere cientos de megabytes de datos de transmisión por segundo en Amazon Redshift. Al mismo tiempo, esta integración ayuda a garantizar que la información más actualizada esté disponible para su análisis. Debido a que la integración no requiere datos provisionales en Amazon S3, Amazon Redshift puede ingerir datos de transmisión con una latencia más baja y sin costos de almacenamiento intermediario.

Puede configurar la ingesta de streaming de Amazon Redshift en un clúster de Redshift mediante declaraciones SQL para autenticarse y conectarse a un tema de MSK. Esta solución es una excelente opción para los ingenieros de datos que buscan simplificar las canalizaciones de datos y reducir el costo operativo.

En esta publicación, proporcionamos una descripción completa sobre cómo configurar Ingestión de streaming de Amazon Redshift de AmazonMSK.

Resumen de la solución

El siguiente diagrama de arquitectura describe los servicios y características de AWS que utilizará.

diagrama de arquitectura que describe los servicios y características de AWS que utilizará

El flujo de trabajo incluye los siguientes pasos:

  1. Se comienza configurando un Conexión de Amazon MSK conector de origen, para crear un tema de MSK, generar datos simulados y escribirlos en el tema de MSK. Para esta publicación, trabajamos con datos de clientes simulados.
  2. El siguiente paso es conectarse a un clúster de Redshift utilizando el Editor de consultas v2.
  3. Finalmente, configura un esquema externo y crea una vista materializada en Amazon Redshift para consumir los datos del tema MSK. Esta solución no depende de un conector receptor de MSK Connect para exportar los datos de Amazon MSK a Amazon Redshift.

El siguiente diagrama de arquitectura de la solución describe con más detalle la configuración e integración de los servicios de AWS que utilizará.
Diagrama de arquitectura de la solución que describe con más detalle la configuración e integración de los servicios de AWS que utilizará.
El flujo de trabajo incluye los siguientes pasos:

  1. Implementa un conector de origen de MSK Connect, un clúster de MSK y un clúster de Redshift dentro de las subredes privadas de una VPC.
  2. El conector de origen de MSK Connect utiliza permisos granulares definidos en un Administración de acceso e identidad de AWS (IAM) política en línea adjunto a un Rol de IAM, que permite que el conector de origen realice acciones en el clúster MSK.
  3. Los registros del conector de origen de MSK Connect se capturan y envían a un Reloj en la nube de Amazon grupo de registro.
  4. El clúster MSK utiliza un configuración personalizada del clúster MSK, lo que permite que el conector MSK Connect cree temas en el clúster de MSK.
  5. Los registros del clúster MSK se capturan y envían a un grupo de registros de Amazon CloudWatch.
  6. El clúster de Redshift utiliza permisos granulares definidos en una política en línea de IAM adjunta a una función de IAM, lo que permite que el clúster de Redshift realice acciones en el clúster de MSK.
  7. Puede utilizar el Editor de consultas v2 para conectarse al clúster de Redshift.

Requisitos previos

Para simplificar el aprovisionamiento y la configuración de los recursos de requisitos previos, puede utilizar lo siguiente Formación en la nube de AWS modelo:

Complete los siguientes pasos al iniciar la pila:

  1. Nombre de pila, ingrese un nombre significativo para la pila, por ejemplo, prerequisites.
  2. Elige Siguiente.
  3. Elige Siguiente.
  4. Seleccione Reconozco que AWS CloudFormation podría crear recursos de IAM con nombres personalizados.
  5. Elige Enviar.

La pila de CloudFormation crea los siguientes recursos:

  • una VPC custom-vpc, creado en tres zonas de disponibilidad, con tres subredes públicas y tres subredes privadas:
    • Las subredes públicas están asociadas con una tabla de rutas pública y el tráfico saliente se dirige a una puerta de enlace de Internet.
    • Las subredes privadas están asociadas con una tabla de rutas privada y el tráfico saliente se envía a una puerta de enlace NAT.
  • An puerta de enlace de internet adjunto a la VPC de Amazon.
  • A Puerta de enlace NAT que está asociado con un IP elástica y se implementa en una de las subredes públicas.
  • Tres puestos grupos de seguridad:
    • msk-connect-sg, que luego se asociará con el conector MSK Connect.
    • redshift-sg, que luego se asociará con el clúster Redshift.
    • msk-cluster-sg, que luego se asociará con el clúster MSK. Permite el tráfico entrante desde msk-connect-sgy redshift-sg.
  • Dos grupos de registros de CloudWatch:
    • msk-connect-logs, que se utilizará para los registros de MSK Connect.
    • msk-cluster-logs, que se utilizará para los registros del clúster MSK.
  • Dos funciones de IAM:
    • msk-connect-role, que incluye permisos granulares de IAM para MSK Connect.
    • redshift-role, que incluye permisos granulares de IAM para Amazon Redshift.
  • A configuración personalizada del clúster MSK, lo que permite que el conector MSK Connect cree temas en el clúster de MSK.
  • Un clúster MSK, con tres corredores implementados en las tres subredes privadas de custom-vpc. El msk-cluster-sg grupo de seguridad y el custom-msk-cluster-configuration La configuración se aplica al clúster MSK. Los registros del corredor se entregan al msk-cluster-logs Grupo de registros de CloudWatch.
  • A Grupo de subred del clúster Redshift, que utiliza las tres subredes privadas de custom-vpc.
  • Un clúster de Redshift, con un único nodo implementado en una subred privada dentro del grupo de subred del clúster de Redshift. El redshift-sg grupo de seguridad y redshift-role El rol de IAM se aplica al clúster Redshift.

Cree un complemento personalizado de MSK Connect

Para esta publicación, usamos un Generador de datos de Amazon MSK implementado en MSK Connect, para generar datos de clientes simulados y escribirlos en un tema de MSK.

Complete los siguientes pasos:

  1. Descargue nuestra Generador de datos de Amazon MSK Archivo JAR con dependencias de GitHub.
    Página de awslabs github para descargar el archivo jar del generador de datos de amazon msk
  2. Cargue el archivo JAR en un depósito S3 en su cuenta de AWS.
    Imagen de la consola de Amazon S3 que muestra el archivo jar cargado en un depósito de S3.
  3. En la consola de Amazon MSK, elija Complementos personalizados bajo Conexión MSK en el panel de navegación.
  4. Elige Crea un complemento personalizado.
  5. Elige Examinar S3, busque el archivo JAR del generador de datos de Amazon MSK que cargó en Amazon S3 y luego elija Elige.
  6. Nombre de complemento personalizado, introduzca msk-datagen-plugin.
  7. Elige Crea un complemento personalizado.

Cuando se crea el complemento personalizado, verá que su estado es Activey podrá pasar al siguiente paso.
Consola de Amazon msk que muestra el complemento personalizado de msk connect creado correctamente

Crear un conector MSK Connect

Complete los siguientes pasos para crear su conector:

  1. En la consola de Amazon MSK, elija Conectores bajo Conexión MSK en el panel de navegación.
  2. Elige Crear conector.
  3. Tipo de complemento personalizado, escoger Utilice el complemento existente.
  4. Seleccione msk-datagen-plugin, A continuación, elija Siguiente.
  5. Nombre del conector, introduzca msk-datagen-connector.
  6. Tipo de clúster, escoger Clúster Apache Kafka autogestionado.
  7. VPC, escoger custom-vpc.
  8. Subred 1, elija la subred privada dentro de su primera zona de disponibilidad.

Para el custom-vpc creado por la plantilla de CloudFormation, utilizamos rangos CIDR impares para las subredes públicas e rangos CIDR pares para las subredes privadas:

    • Los CIDR para las subredes públicas son 10.10.1.0/24, 10.10.3.0/24 y 10.10.5.0/24.
    • Los CIDR para las subredes privadas son 10.10.2.0/24, 10.10.4.0/24 y 10.10.6.0/24.
  1. Subred 2, seleccione la subred privada dentro de su segunda zona de disponibilidad.
  2. Subred 3, seleccione la subred privada dentro de su tercera zona de disponibilidad.
  3. Servidores de arranque, ingrese la lista de servidores de arranque para la autenticación TLS de su clúster MSK.

A recupere los servidores de arranque para su clúster MSK, navegue hasta la consola de Amazon MSK, elija Clusters, escoger msk-cluster, A continuación, elija Ver información del cliente. Copie los valores TLS para los servidores de arranque.

  1. Grupos de seguridad, escoger Utilice grupos de seguridad específicos con acceso a este clúster, y elige msk-connect-sg.
  2. Configuración del conector, reemplace la configuración predeterminada con la siguiente:
connector.class=com.amazonaws.mskdatagen.GeneratorSourceConnector
tasks.max=2
genkp.customer.with=#{Code.isbn10}
genv.customer.name.with=#{Name.full_name}
genv.customer.gender.with=#{Demographic.sex}
genv.customer.favorite_beer.with=#{Beer.name}
genv.customer.state.with=#{Address.state}
genkp.order.with=#{Code.isbn10}
genv.order.product_id.with=#{number.number_between '101','109'}
genv.order.quantity.with=#{number.number_between '1','5'}
genv.order.customer_id.matching=customer.key
global.throttle.ms=2000
global.history.records.max=1000
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false

  1. Para Capacidad del conector, elija Aprovisionado.
  2. Recuento de MCU por trabajador, escoger 1.
  3. Numero de trabajadores, escoger 1.
  4. Configuración del trabajador, escoger Usar la configuración predeterminada de MSK.
  5. Permisos de acceso, escoger msk-connect-role.
  6. Elige Siguiente.
  7. Para cifrado, seleccione Tráfico cifrado TLS.
  8. Elige Siguiente.
  9. Entrega de registro, escoger Entregar a Amazon CloudWatch Logs.
  10. Elige Explorar, seleccione msk-connect-logs, y elige Elige.
  11. Elige Siguiente.
  12. Revisa y elige Crear conector.

Una vez creado el conector personalizado, verá que su estado es Correry podrá pasar al siguiente paso.
Consola de Amazon msk que muestra la creación exitosa del conector de conexión msk

Configurar la ingesta de streaming de Amazon Redshift para Amazon MSK

Complete los siguientes pasos para configurar la ingesta de streaming:

  1. Conéctese a su clúster de Redshift usando Query Editor v2 y autentíquese con el nombre de usuario de la base de datos. awsuser, y contraseña Awsuser123.
  2. Cree un esquema externo desde Amazon MSK utilizando la siguiente declaración SQL.

En el siguiente código, ingrese los valores para el redshift-role rol de IAM y el msk-cluster ARN del clúster.

CREATE EXTERNAL SCHEMA msk_external_schema
FROM MSK
IAM_ROLE '<insert your redshift-role arn>'
AUTHENTICATION iam
CLUSTER_ARN '<insert your msk-cluster arn>';

  1. Elige Ejecutar para ejecutar la instrucción SQL.

editor de consultas de desplazamiento al rojo v2 que muestra la declaración SQL utilizada para crear un esquema externo desde amazon msk

  1. Créar un vista materializada utilizando la siguiente declaración SQL:
CREATE MATERIALIZED VIEW msk_mview AUTO REFRESH YES AS
SELECT
    "kafka_partition",
    "kafka_offset",
    "kafka_timestamp_type",
    "kafka_timestamp",
    "kafka_key",
    JSON_PARSE(kafka_value) as Data,
    "kafka_headers"
FROM
    "dev"."msk_external_schema"."customer"

  1. Elige Ejecutar para ejecutar la instrucción SQL.

editor de consultas de desplazamiento al rojo v2 que muestra la declaración SQL utilizada para crear una vista materializada

  1. Ahora puede consultar la vista materializada utilizando la siguiente declaración SQL:
select * from msk_mview LIMIT 100;

  1. Elige Ejecutar para ejecutar la instrucción SQL.

editor de consultas de desplazamiento al rojo v2 que muestra la declaración SQL utilizada para consultar la vista materializada

  1. Para monitorear el progreso de los registros cargados a través de la ingesta de streaming, puede aprovechar la SYS_STREAM_SCAN_STATES vista de monitoreo usando la siguiente declaración SQL:
select * from SYS_STREAM_SCAN_STATES;

  1. Elige Ejecutar para ejecutar la instrucción SQL.

editor de consultas de desplazamiento al rojo v2 que muestra la declaración SQL utilizada para consultar la vista de monitoreo de los estados de escaneo del flujo del sistema

  1. Para monitorear los errores encontrados en los registros cargados mediante la ingestión de transmisión, puede aprovechar la SYS_STREAM_SCAN_ERRORS vista de monitoreo usando la siguiente declaración SQL:
select * from SYS_STREAM_SCAN_ERRORS;

  1. Elige Ejecutar para ejecutar la instrucción SQL.editor de consultas de corrimiento al rojo v2 que muestra la declaración SQL utilizada para consultar la vista de monitoreo de errores de escaneo de flujo del sistema

Limpiar

Después de seguir adelante, si ya no necesita los recursos que creó, elimínelos en el siguiente orden para evitar incurrir en cargos adicionales:

  1. Eliminar el conector MSK Connect msk-datagen-connector.
  2. Eliminar el complemento MSK Connect msk-datagen-plugin.
  3. Elimine el archivo JAR del generador de datos de Amazon MSK que descargó y elimine el depósito S3 que creó.
  4. Después de eliminar su conector MSK Connect, puede eliminar la plantilla de CloudFormation. Todos los recursos creados por la plantilla de CloudFormation se eliminarán automáticamente de su cuenta de AWS.

Conclusión

En esta publicación, demostramos cómo configurar la ingesta de streaming de Amazon Redshift desde Amazon MSK, centrándonos en la privacidad y la seguridad.

La combinación de la capacidad de Amazon MSK para manejar flujos de datos de alto rendimiento con las sólidas capacidades analíticas de Amazon Redshift permite a las empresas obtener información procesable rápidamente. Esta integración de datos en tiempo real mejora la agilidad y la capacidad de respuesta de las organizaciones para comprender las tendencias cambiantes de los datos, los comportamientos de los clientes y los patrones operativos. Permite tomar decisiones oportunas e informadas, obteniendo así una ventaja competitiva en el dinámico panorama empresarial actual.

Esta solución también es aplicable para clientes que desean utilizar Amazon MSK sin servidor y Amazon Redshift sin servidor.

Esperamos que esta publicación haya sido una buena oportunidad para aprender más sobre la integración y configuración de servicios de AWS. Háganos saber sus comentarios en la sección de comentarios.


Sobre los autores

Sebastián Vlad es un arquitecto de soluciones socio senior de Amazon Web Services, apasionado por las soluciones de análisis y datos y el éxito del cliente. Sebastian trabaja con clientes empresariales para ayudarlos a diseñar y crear soluciones modernas, seguras y escalables para lograr sus resultados comerciales.

Sharad Pai es consultor técnico líder en AWS. Se especializa en análisis de transmisión y ayuda a los clientes a crear soluciones escalables utilizando Amazon MSK y Amazon Kinesis. Tiene más de 16 años de experiencia en la industria y actualmente trabaja con clientes de medios que alojan plataformas de transmisión en vivo en AWS, gestionando una concurrencia máxima de más de 50 millones. Antes de unirse a AWS, la carrera de Sharad como desarrollador líder de software incluyó 9 años de codificación, trabajando con tecnologías de código abierto como JavaScript, Python y PHP.

punto_img

Información más reciente

punto_img