Mostrando entradas con la etiqueta Spark Streaming. Mostrar todas las entradas
Mostrando entradas con la etiqueta Spark Streaming. Mostrar todas las entradas

miércoles, 18 de noviembre de 2015

Integrando Kafka (producer) y Spark Streaming (consumer), Parte 1

Breve tutorial que tratará de mostrar como integrar estas dos potentes herramientas: Kafka y Spark Streaming. La idea es aclarar o ampliar en cierta forma la información contenida en la guía Spark Streaming + Kafka Integration Guide a través de un sencillo ejemplo.

En esta primera parte cubriré como procesar con Spark Streaming (consumer) la información proveniente de Kafka (producer).

Preparación del Entorno
Software necesario:


Descargar e instalar las diferentes herramientas anteriormente mencionadas. En mi caso he usado el directorio /usr/local como directorio base en el que desplegarlas:
Directorio /usr/local
Acordarse también de exportar las variables de entorno adecuadas:
Variables de entorno
Servidores Zookeeper & Kafka
Iniciar el servidor de Zookeeper:
  # zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties
Zookeeper Server Start
En otra shell diferente iniciar el servidor de Kafka:
  # kafka-server-start.sh $KAFKA_HOME/config/server.properties
Kakfa Server Start (1)
Kakfa Server Start (2)
Sin cerrar ninguna de las otras líneas de comandos, abrir dos nuevas más:

En la primera de ellas crearemos el topic 'demo':
  # kafka-topics.sh --zookeeper localhost:2181 --create --topic demo --partitions 1 --replication-factor 1

En esa misma terminal haremos a continuación uso del propio script de Kafka, kafka-console-producer.sh, para generar futuros mensajes:
  # kafka-console-producer.sh --broker-list localhost:9092 --topic demo
Start Producer
Spark Streaming Examples
Mientras que en la segunda terminal arrancaremos el proceso que deberá consumir los mensajes que vayamos generando:
  # $SPARK_HOME/bin/run-example org.apache.spark.examples.streaming.KafkaWordCount localhost:2181 groupTest demo 1
Start Consumer
Por último, ya sólo faltaría ir generando mensajes en la ventana del producer y ver como son procesados en la del consumer: