Que es Apache Flink?
Apache flink es un sistema que nos permite realizar analisis basado en Stream (o flujos). Al trabajar sobre flujos, la escalabilidad del mismo es alta y nos da la posiblidad de integrarlo directamente con Apache Kafka utilizando plugins.
Requisitos
Para poder utilizar apache flink se requieren los siguientes componentes:
- Java jdk 11
- Apache Flink 1.17
Instalación
Apache Flink puede ser utilizado de dos maneras distintas, como servidor o embebido en un servico.
Descomprimir
Para instalar como servidor se deben realizar los siguientes pasos:
$ tar xvfz flink-1.17.0-bin-scala_2.12.tgz
Esto nos descomprime el producto en la carpeta flink-1.17.0, nos ubicamos en la carpeta bin y ejecutamos lo siguiente:
$ ./start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host ourhost.local.
Starting taskexecutor daemon on host ourhost.local.
Una vez que inicio el servicio podremos acceder a la pantalla de administración, en donde se pueden agregar nuevos servicios, ver el estado de los servicios ya existentes o eliminarlos.
Para acceder a la consola de admnistración en nuestro navegador ponemos la siguiente dirección web.
http://localhost:8081
Ejecutano un ejemplo
Una vez instalada la consola podemos agregar un ejemplo para ver como se ejecuta el mismo y poder comprender la utilización de la consola administrativa.
En la pantalla vamos a la opción del menu y presionamos Submit a New Job y vamos a la carpeta example/streamng y seleccionamos el jar WordCount.jar (es un ejemplo contenido en apache flink), y veremos la siguiente pantalla:
Una vez cargado el ejemplo, presionamos el botón Submit
Ahora que es lo que podemos ver. Lo que podremos visualizar sera la siguiente pantalla.
Usando Kafka
Ahora veremos un ejemplo de como utilizar kafka con Flink, siguiendo la linea de contar las palabras. El ejemplo utiliza los siguientes componentes.
Streams:
- countIn: en este stream se ingresan las palabras a contar.
- countOut: en este stream se obtiene el resultado..
Enviamos el mensaje.
Y obtenendremos.