Tutorial: Procesamiento de eventos de Apache Kafka para Event Hubs mediante Stream Analytics

En este artículo se muestra cómo transmitir en secuencias datos a Event Hubs y cómo procesarlos con Azure Stream Analytics. Estos pasos son los siguientes:

  1. Cree un espacio de nombres de Event Hubs.
  2. Cree un cliente de Kafka que envíe mensajes al centro de eventos.
  3. Cree un trabajo de Stream Analytics que copie datos del centro de eventos en Azure Blob Storage.

No es necesario cambiar a los clientes de protocolo ni ejecutar sus propios clústeres al usar el punto de conexión de Kafka expuesto por un centro de eventos. Azure Event Hubs admite Apache Kafka, versión 1.0. y superiores.

Prerrequisitos

Para completar esta guía de inicio rápido, asegúrese de cumplir los siguientes requisitos previos:

Creación de un espacio de nombres de Event Hubs

Al crear un espacio de nombres de Event Hubs, se habilita automáticamente el punto de conexión de Kafka para el espacio de nombres. Puede transmitir eventos a Event Hubs desde las aplicaciones que usan el protocolo de Kafka. Siga las instrucciones paso a paso de Creación de un centro de eventos mediante Azure Portal para crear un espacio de nombres de Event Hubs. Si usa un clúster dedicado, consulte Creación de un espacio de nombres y un centro de eventos en un clúster dedicado.

Nota:

Event Hubs para Kafka no se admite en el nivel básico.

Envío de mensajes con Kafka en Event Hubs

  1. Clone el repositorio de Azure Event Hubs para Kafka en la máquina.

  2. Vaya a la carpeta azure-event-hubs-for-kafka/quickstart/java/producer.

  3. Actualice los detalles de configuración para el productor en src/main/resources/producer.config. Especifique el nombre y cadena de conexión para el espacio de nombres del centro de eventos.

    bootstrap.servers={EVENT HUB NAMESPACE}.servicebus.windows.net:9093
    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{CONNECTION STRING for EVENT HUB NAMESPACE}";
    
  4. Vaya a azure-event-hubs-for-kafka/quickstart/java/producer/src/main/java/ y abra el archivo TestDataReporter.java en el editor que prefiera.

  5. Comente las siguientes líneas de código:

                //final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "Test Data " + i);
    
  6. Agregue la siguiente línea de código en lugar del código con comentarios:

                final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "{ \"eventData\": \"Test Data " + i + "\" }");            
    

    Este código envía los datos del evento en formato JSON. Al configurar la entrada para un trabajo de Stream Analytics, especifique JSON como formato de los datos de entrada.

  7. Ejecute el productor y transmítalo a Event Hubs. En un equipo Windows, al usar un símbolo del sistema Node.js, cambie a la carpeta azure-event-hubs-for-kafka/quickstart/java/producer antes de ejecutar estos comandos.

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    

Compruebe que ese centro de eventos recibe los datos.

  1. Seleccione Event Hubs en ENTIDADES. Confirme que ve un centro de eventos denominado prueba.

    Centro de eventos: prueba

  2. Confirme que ve los mensajes que entran en el centro de eventos.

    Centro de eventos: mensajes

Procesamiento de los datos de eventos mediante un trabajo de Stream Analytics

En esta sección, vamos a crear un trabajo de Azure Stream Analytics. El cliente de Kafka envía eventos al centro de eventos. Cree un trabajo de Stream Analytics que tome datos de eventos como entrada y los envíe a Azure Blob Storage. Si no tiene una cuenta de Azure Storage, cree una.

La consulta en el trabajo de Stream Analytics se pasa a través de los datos sin realizar ningún análisis. Puede crear una consulta que transforme los datos de entrada para generar datos de salida en un formato diferente o con información obtenida.

Creación de un trabajo de Stream Analytics

  1. Seleccione + Crear un recurso en Azure Portal.
  2. Seleccione Analytics en el menú Azure Marketplace y, luego, seleccione Stream Analytics job (Trabajo de Stream Analytics).
  3. En la página Nuevo Stream Analytics, haga lo siguiente:
    1. Escriba un nombre para el trabajo.

    2. Seleccione su suscripción.

    3. Seleccione Crear nuevo para el grupo de recursos y escriba el nombre. También puede usar un grupo de recursos existente.

    4. Seleccione una ubicación para el trabajo.

    5. Seleccione Crear para crear el trabajo.

      Nuevo trabajo de Stream Analytics

Configuración de la entrada del trabajo

  1. En el mensaje de notificación, seleccione Ir al recurso para ver la página Trabajo de Stream Analytics.

  2. Seleccione Entradas en la sección TOPOLOGÍA DE TRABAJO en el menú izquierdo.

  3. Seleccione Add stream input (Agregar entrada de flujo) y, luego, seleccione Event Hub (Centro de eventos).

    Adición del centro de eventos como entrada

  4. En la página de configuración de la entrada del centro de eventos, haga lo siguiente:

    1. Especifique un alias para la entrada.

    2. Seleccione la suscripción de Azure.

    3. Seleccione el espacio de nombres del centro de eventos que ha creado anteriormente.

    4. Seleccione probar para el centro de eventos.

    5. Seleccione Guardar.

      Configuración de entrada del centro de eventos

Configuración de la salida del trabajo

  1. Seleccione Salidas en la sección TOPOLOGÍA DE TRABAJO en el menú.
  2. Seleccione + Agregar en la barra de herramientas y seleccione Blob Storage
  3. Haga lo siguiente en la página de configuración de salida de Blob Storage:
    1. Especifique un alias para la salida.

    2. Selección la suscripciónde Azure.

    3. Seleccione su cuenta de Azure Storage.

    4. Escriba un nombre para el contenedor que almacena los datos de salida de la consulta de Stream Analytics.

    5. Seleccione Guardar.

      Configuración de salida de Blob Storage

Definición de una consulta

Ya tiene un trabajo de Stream Analytics configurado para leer un flujo de datos de entrada. El siguiente paso consiste en crear una transformación que analice los datos en tiempo real. Definirá la consulta de transformación mediante el lenguaje de consulta de Stream Analytics. En este tutorial, definirá una consulta que se pasa a través de los datos sin realizar ninguna transformación.

  1. Seleccione Consulta.

  2. En la ventana de consulta, reemplace [YourOutputAlias] por el alias de salida que creó anteriormente.

  3. Reemplace [YourInputAlias] por el alias de entrada que creó anteriormente.

  4. Seleccione Guardar en la barra de herramientas.

    Captura de pantalla muestra la ventana de consulta con valores para las variables de entrada y salida.

Ejecución del trabajo de Stream Analytics

  1. Seleccione Información general en el menú de la izquierda.

  2. Seleccione Inicio.

    Menú Inicio

  3. En la página Iniciar trabajo, seleccione Iniciar.

    Página Iniciar trabajo

  4. Espere hasta que el estado del trabajo cambie de Iniciando a En ejecución.

    Estado del trabajo: en ejecución

Probar el escenario

  1. Vuelva a ejecutar el productor de Kafka para enviar eventos al centro de eventos.

    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    
  2. Confirme que ve que los datos de salida se generan en Azure Blob Storage. Consulte un archivo JSON en el contenedor con 100 filas con un aspecto similar a las siguientes filas de ejemplo:

    {"eventData":"Test Data 0","EventProcessedUtcTime":"2018-08-30T03:27:23.1592910Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    {"eventData":"Test Data 1","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    {"eventData":"Test Data 2","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    

    El trabajo de Azure Stream Analytics recibió los datos de entrada del centro de eventos y los almacenó en Azure Blob Storage en este escenario.

Pasos siguientes

En este artículo se muestra cómo hacer streaming a instancias de Event Hubs sin cambiar los clientes del protocolo o ejecutar sus propios clústeres. Para más información sobre Event Hubs para Apache Kafka, consulte Guía del desarrollador de Apache Kafka para Azure Event Hubs.