Creación de un canal de procesamiento de big data — Capítulo 4

Juan Irabedra
.
September 1, 2022
Creación de un canal de procesamiento de big data — Capítulo 4

Primeros pasos hacia la creación de una canalización de procesamiento de macrodatos en tiempo real con Apache Kafka y Apache Flink con Scala: Cassandra con Docker

En el artículo anterior nos centramos en empezar con Apache Flink. Para ejecutar nuestra aplicación también necesitamos ejecutar alguna instancia de Cassandra. Configuraremos un clúster local de Cassandra con Docker y aprenderemos a consultar los mensajes que envió Flink. También mostraremos nuestro pipeline en acción.

Recuerde que la canalización tiene el siguiente aspecto:

Configuración de un servidor Cassandra local con Docker

Antes de poner en marcha nuestra aplicación Flink, deberíamos tener una tabla de Cassandra para almacenar nuestros valores. ¡Flink ofrece muchos conectores! ¡Puedes echarles un vistazo aquí. En este ejemplo, elegimos mostrar a la Apache Cassandra en acción.

Hay muchas maneras de hospedar a Cassandra: un servidor local, un servidor local en contenedores, gestionado en Espacios de claves de AWS y así sucesivamente. Una de las formas más sencillas es hacer que se ejecute en un contenedor Docker. Si no tienes Docker, descubre cómo obtenerlo en el documentación oficial.

Abre una nueva pestaña de terminal y ejecuta:

no-line-numbers|textdocker run -p 9042:9042 –rm –name cassandra -d cassandra:3.11

Tu instancia de Cassandra ahora se ejecuta en el puerto 9042.

La forma más fácil de comunicarse con su servidor de Cassandra es a través de cqlsh. CQL son las siglas de Cassandra Query Language (recuerde que Cassandra no es SQL). SH son las siglas de shell. Puede descargar esta herramienta aquí.

Una vez instalado, los siguientes comandos se conectarán a su servidor Cassandra, crearán un espacio de claves y una tabla con una sola columna: payload.

no-line-numbers|bashcqlsh

no-line-numbers|sqlCREATE KEYSPACE cassandraSink WITH REPLICATION = { ‘class’ : ‘SimpleStrategy’, ‘replication_factor’ : ‘1’ };

UTILICE Cassandra Sink;

no-line-numbers|sqlCREATE TABLE IF NOT EXISTS messages (payload text PRIMARY KEY);

Puede obtener todos los registros que se encuentran en la tabla consultando:

no-line-numbers|sqlSELECT * FROM messages;

Creación y envío del tarro

Ahora que nuestro código está configurado, es hora de que el complemento de ensamblaje sbt brille. Ahora ejecutaremos el proyecto Scala con la dependencia Apache Flink que construimos en artículo anterior. Abre una consola en la carpeta raíz de tu proyecto de Scala (donde colocamos nuestro archivo build.sbt). Ejecuta el comando sbt assembly.

¡Felicidades! Tu archivo jar debería estar en camino. Pronto podrás encontrarlo en la carpeta /target/scala-2.12.

Abre una nueva pestaña de terminal en tu directorio fuente de Flink. Para que nuestra aplicación Flink funcione:

no-line-numbers|bash./bin/flink run [path to your .jar file]

Y eso es todo. Tu aplicación Flink ya debería estar ejecutándose.

Demostración

Ahora publicaremos un valor en nuestra API SpringBoot. Suponiendo que la API ahora se ejecuta localmente:

no-line-numbers|bashcurl -X POST -H “Content-Type: application/json” -d ‘{“topic”: “flink-input”, “key” : “someKey”, “value” : “hello, Flink!”}’ “http://localhost:8080/api/messages/”

Hagamos una consulta sobre nuestro tema de Kafka. Abre una pestaña de terminal en tu directorio fuente de Kafka.

no-line-numbers|bashbin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic flink-input –from-beginning

Podemos ver:

no-line-numbers|bashjuanirabedra@MontevideosMBP5 kafka_2.13-3.1.0 % bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic flick-input --from-beginninghello, Flink!

Ahora, consultemos nuestra tabla de Cassandra:

Y eso es todo. Nuestra línea de procesamiento de macrodatos en tiempo real funciona según lo esperado. Lo ideal es que esta canalización esté alojada en la nube. Esta tarea se abordará en un artículo futuro.

Finalizando

La Apache Software Foundation está trabajando arduamente para proporcionarnos increíbles herramientas de big data de código abierto. Es muy fácil empezar con Apache Kafka y tiene una interesante curva de aprendizaje. Una de las cosas más destacables es que proporciona muchos conectores tanto para extraer como para empujar discos.

Apache Flink también proporciona un entorno personalizable para desarrollar aplicaciones de procesamiento de big data con muchos conectores. Los conectores para Java y Scala que utilizan la API DataSource más reciente están ampliamente disponibles. Además, Flink se convierte en una alternativa realmente poderosa para el procesamiento de transmisiones sin límites.

Esta canalización podría usarse para alimentar datos a muchas otras aplicaciones. Una vez que los datos se almacenan en Apache Cassandra, cualquier otra aplicación podría usarlos para tomar decisiones (por ejemplo, un modelo de aprendizaje automático).

Es importante tener en cuenta la solidez de este oleoducto. Apache Kafka, Apache Flink y Apache Cassandra se basan en arquitecturas distribuidas. Son resilientes y, gracias a Flink, ofrecen una exactamente una vez política de procesamiento, que garantiza tanto la eficiencia como la coherencia.

Todas estas tres tecnologías se pueden migrar fácilmente desde in situ configura para totalmente gestionado en la nube configuraciones. Podemos decir que la escalabilidad es otro aspecto interesante de este proceso.

Siguiendo con esta última idea, consideramos que mostrar una configuración en la nube para este pipeline podría ser un desafío interesante y podría ser una gran idea para próximos artículos. ¡Estén atentos para obtener más información sobre las mejores prácticas y tecnologías para aprovechar al máximo sus datos!

¿Te perdiste alguno de nuestros artículos anteriores sobre este oleoducto? Échales un vistazo aquí:

Primeros pasos hacia la creación de una canalización de procesamiento de macrodatos en tiempo real con Apache Kafka y Apache Flink con Scala: Cassandra con Docker

En el artículo anterior nos centramos en empezar con Apache Flink. Para ejecutar nuestra aplicación también necesitamos ejecutar alguna instancia de Cassandra. Configuraremos un clúster local de Cassandra con Docker y aprenderemos a consultar los mensajes que envió Flink. También mostraremos nuestro pipeline en acción.

Recuerde que la canalización tiene el siguiente aspecto:

Configuración de un servidor Cassandra local con Docker

Antes de poner en marcha nuestra aplicación Flink, deberíamos tener una tabla de Cassandra para almacenar nuestros valores. ¡Flink ofrece muchos conectores! ¡Puedes echarles un vistazo aquí. En este ejemplo, elegimos mostrar a la Apache Cassandra en acción.

Hay muchas maneras de hospedar a Cassandra: un servidor local, un servidor local en contenedores, gestionado en Espacios de claves de AWS y así sucesivamente. Una de las formas más sencillas es hacer que se ejecute en un contenedor Docker. Si no tienes Docker, descubre cómo obtenerlo en el documentación oficial.

Abre una nueva pestaña de terminal y ejecuta:

no-line-numbers|textdocker run -p 9042:9042 –rm –name cassandra -d cassandra:3.11

Tu instancia de Cassandra ahora se ejecuta en el puerto 9042.

La forma más fácil de comunicarse con su servidor de Cassandra es a través de cqlsh. CQL son las siglas de Cassandra Query Language (recuerde que Cassandra no es SQL). SH son las siglas de shell. Puede descargar esta herramienta aquí.

Una vez instalado, los siguientes comandos se conectarán a su servidor Cassandra, crearán un espacio de claves y una tabla con una sola columna: payload.

no-line-numbers|bashcqlsh

no-line-numbers|sqlCREATE KEYSPACE cassandraSink WITH REPLICATION = { ‘class’ : ‘SimpleStrategy’, ‘replication_factor’ : ‘1’ };

UTILICE Cassandra Sink;

no-line-numbers|sqlCREATE TABLE IF NOT EXISTS messages (payload text PRIMARY KEY);

Puede obtener todos los registros que se encuentran en la tabla consultando:

no-line-numbers|sqlSELECT * FROM messages;

Creación y envío del tarro

Ahora que nuestro código está configurado, es hora de que el complemento de ensamblaje sbt brille. Ahora ejecutaremos el proyecto Scala con la dependencia Apache Flink que construimos en artículo anterior. Abre una consola en la carpeta raíz de tu proyecto de Scala (donde colocamos nuestro archivo build.sbt). Ejecuta el comando sbt assembly.

¡Felicidades! Tu archivo jar debería estar en camino. Pronto podrás encontrarlo en la carpeta /target/scala-2.12.

Abre una nueva pestaña de terminal en tu directorio fuente de Flink. Para que nuestra aplicación Flink funcione:

no-line-numbers|bash./bin/flink run [path to your .jar file]

Y eso es todo. Tu aplicación Flink ya debería estar ejecutándose.

Demostración

Ahora publicaremos un valor en nuestra API SpringBoot. Suponiendo que la API ahora se ejecuta localmente:

no-line-numbers|bashcurl -X POST -H “Content-Type: application/json” -d ‘{“topic”: “flink-input”, “key” : “someKey”, “value” : “hello, Flink!”}’ “http://localhost:8080/api/messages/”

Hagamos una consulta sobre nuestro tema de Kafka. Abre una pestaña de terminal en tu directorio fuente de Kafka.

no-line-numbers|bashbin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic flink-input –from-beginning

Podemos ver:

no-line-numbers|bashjuanirabedra@MontevideosMBP5 kafka_2.13-3.1.0 % bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic flick-input --from-beginninghello, Flink!

Ahora, consultemos nuestra tabla de Cassandra:

Y eso es todo. Nuestra línea de procesamiento de macrodatos en tiempo real funciona según lo esperado. Lo ideal es que esta canalización esté alojada en la nube. Esta tarea se abordará en un artículo futuro.

Finalizando

La Apache Software Foundation está trabajando arduamente para proporcionarnos increíbles herramientas de big data de código abierto. Es muy fácil empezar con Apache Kafka y tiene una interesante curva de aprendizaje. Una de las cosas más destacables es que proporciona muchos conectores tanto para extraer como para empujar discos.

Apache Flink también proporciona un entorno personalizable para desarrollar aplicaciones de procesamiento de big data con muchos conectores. Los conectores para Java y Scala que utilizan la API DataSource más reciente están ampliamente disponibles. Además, Flink se convierte en una alternativa realmente poderosa para el procesamiento de transmisiones sin límites.

Esta canalización podría usarse para alimentar datos a muchas otras aplicaciones. Una vez que los datos se almacenan en Apache Cassandra, cualquier otra aplicación podría usarlos para tomar decisiones (por ejemplo, un modelo de aprendizaje automático).

Es importante tener en cuenta la solidez de este oleoducto. Apache Kafka, Apache Flink y Apache Cassandra se basan en arquitecturas distribuidas. Son resilientes y, gracias a Flink, ofrecen una exactamente una vez política de procesamiento, que garantiza tanto la eficiencia como la coherencia.

Todas estas tres tecnologías se pueden migrar fácilmente desde in situ configura para totalmente gestionado en la nube configuraciones. Podemos decir que la escalabilidad es otro aspecto interesante de este proceso.

Siguiendo con esta última idea, consideramos que mostrar una configuración en la nube para este pipeline podría ser un desafío interesante y podría ser una gran idea para próximos artículos. ¡Estén atentos para obtener más información sobre las mejores prácticas y tecnologías para aprovechar al máximo sus datos!

¿Te perdiste alguno de nuestros artículos anteriores sobre este oleoducto? Échales un vistazo aquí: