Uso de HDInsight Spark y Kafka

Completado

Como ingeniero de datos, debe determinar el tipo más adecuado de clúster de HDInsight que se va a crear para compilar la solución. Los clústeres de Spark y Kafka, cuando se usan de forma conjunta, proporcionan una excelente manera de ingerir y procesar flujos de datos en tiempo real o casi en tiempo real.

Uso de Kafka para ingerir datos en tiempo real

Apache Kafka se puede usar como sistema de mensajería, como sistema de suscripción de publicaciones o como plataforma de procesamiento de streaming. Almacena los datos en un registro que se puede leer en tiempo real, procesarse posteriormente y que varios consumidores pueden leer al mismo tiempo.

Uso del flujo estructurado de Spark para procesar eventos en tiempo real

Apache Spark es un motor de procesamiento de datos distribuidos de código abierto que se puede usar en muchas circunstancias para procesar, consultar, analizar y transformar datos a escala rápidamente. Spark se usa normalmente para realizar trabajos de ETL y SQL en macrodatos, procesar datos de streaming y para aprendizaje automático.

El flujo estructurado de Spark tiene características que no están disponibles en otras plataformas, como las garantías de tolerancia a errores, la capacidad de unir datos de streaming y por lotes, la capacidad de controlar los datos que llegan tarde y mucho más, como se verá más adelante en este módulo. Además, con Azure HDInsight puede crear una red virtual que hospede el clúster de Spark y Kafka. Con los dos clústeres en una red virtual, el clúster de Spark puede acceder a particiones individuales de datos dentro del clúster de Kafka, en lugar de comunicarse entre clústeres o puntos de conexión. Al proporcionar acceso a particiones individuales de datos, aumenta el paralelismo que tiene en el trabajo de procesamiento en tiempo real, lo que proporciona un mejor rendimiento.

Escenarios de uso de Kafka con Spark

Hay muchos escenarios de análisis en tiempo real que se beneficiarían del streaming en tiempo real que ofrecen Apache Kafka y Spark. Todos estos escenarios tienen un componente de ingesta de datos de streaming, que es el componente de Kafka, y un proceso analítico que se ejecuta en los datos, que es el de Spark.

Scenarios for using Kafka with Spark

  • Detección de fraudes en tiempo real para ingerir datos de transacciones financieras y compararlos con patrones históricos de comportamiento fraudulento.
  • Escenarios de administración de flotas y coches conectados en los que se ingieren datos de dispositivos IoT y reaccionan cuando determinados datos del sensor, como el kilometraje, la velocidad, la ubicación o los datos de temperatura alcanzan un umbral.
  • Análisis clickstream de soluciones de comercio electrónico para analizar cómo la selección de ubicación de los productos en la página puede influir en los impulsos de compras y la proporción de clics.
  • Supervisión de pacientes en tiempo real para ver información sobre el ritmo cardíaco y la presión sanguínea, y notificar a los médicos cuando un paciente se encuentra en estado crítico.
  • Soluciones de redes eléctricas inteligentes que supervisan el uso de la energía eléctrica y responden a medida que cambia la demanda.
  • Comportamiento del cliente en tiendas, para averiguar qué compras se realizan a determinadas horas del día para programar las reposiciones y modificar el personal en la línea de cajas.
  • Supervisión de la red y la infraestructura de TI para vigilar la disponibilidad de los servidores y el ancho de banda, y volver a enrutar el tráfico cuando sea necesario.
  • Administración de la demanda y el inventario en tiempo real para detectar niveles de inventario bajos y solicitar nuevos pedidos o reposiciones de esos productos.

Migración sencilla de lotes a streaming

En muchos casos, estos escenarios se inician en el entorno local, o con procesamiento por lotes de los datos, pero a medida que las soluciones se desarrollan y necesitan evolucionar, el procesamiento por lotes cambia a streaming y las aplicaciones locales se trasladan a la nube. Como se ha mencionado antes, el flujo estructurado de Spark es único en su capacidad para controlar trabajos por lotes y de streaming, lo que facilita la transición de cualquier procesamiento por lotes realizado a trabajos en tiempo real, ya que se puede pasar de uno a otro, o utilizarse al mismo tiempo, con las mismas aplicaciones y marcos.