Hace algo menos de 3 años publicamos el post «7 Herramientas Big Data para tu empresa«, donde destacábamos qué herramientas habían demostrado mayor efectividad para llevar a cabo los proyectos de Big Data. Estas tecnologías cambian a gran velocidad, y muchas de las apuestas punteras de hace algunos años han quedado desmarcadas en favor de otras más actuales y efectivas.
En este post vamos a mostraros una nueva selección de herramientas open source que pueden usarse para construir soluciones Big Data y de Inteligencia Artificial, cubriendo todos los pasos de la misma: almacenamiento, procesamiento, análisis y visualización.
Hadoop
Podríamos decir que Apache Hadoop ha conformado los cimientos del mundo Big Data. Inspirada en el funcionamiento del sistema de almacenamiento de Google (Google File System) e impulsada principalmente por Yahoo, Hadoop es la herramienta estándar para almacenar grandes volúmenes de datos de forma distribuida y redundante en un cluster de máquinas.
Hadoop originalmente diseñada como un framework completo, incluyendo también capacidades de procesado a través del paradigma MapReduce, pero a día de hoy se emplea principalmente como almacenamiento: las tareas de procesado se relegan a herramientas más flexibles a través de YARN. YARN es un sistema de gestión de recursos del cluster. Desde este punto de vista, podemos entender Hadoop como el «sistema operativo» de un cluster Big Data, permitiendo así desplegar sobre él aplicaciones de procesado más avanzadas.
Otra de las ventajas de Hadoop es que, al haberse convertido en un estándar de facto, está disponible en prácticamente todos los proveedores de servicios Cloud, que facilitan su configuración y despliegue. Igualmente, a través de estas plataformas cloud resulta sencillo redimensionar el cluster según las necesidades de cada momento, resultando así muy eficiente en costes hardware.
Elasticsearch
Elasticsearch continúa destacando como una de las bases de datos NoSQL más populares. Inicialmente concebida como una herramienta para realizar búsquedas complejas en grandes volúmenes de documentos en texto, hoy día Elasticsearch también se emplea frecuentemente para trabajar con datos en otros formatos, como información estructurada o geolocalizaciones.
Su principal ventaja es la capacidad de responder a consultas en tiempo real, incluso si requieren de filtros complejos o búsquedas aproximadas en texto. Para soportar esta funcionalidad, Elasticsearch se despliega sobre un cluster de máquinas que reparten los datos con redundancia y comparten el trabajo de las consultas. Con la infraestrutura apropiada, Elasticsearch es capaz de responder consultas en milisegundos, habilitando así aplicaciones de análisis en tiempo real.
Elasticsearch cuenta además con todo un entorno de aplicaciones relacionadas y plugins, que facilitan tareas como el procesamiento de ficheros de logs (a través de Logstash) o la lectura de mensajes de colas Kafka, entre muchas otras fuentes de datos.
En el Instituto de Ingeniería del Conocimiento (IIC) utilizamos esta herramienta en varias de nuestras soluciones de Procesamiento del Lenguaje Natural (PLN) y del entorno digital.
Apache Spark
Apache Spark se puede considerar la evolución del paradigma MapReduce nativo de Hadoop, permitiendo ejecutar tareas de procesamiento de datos hasta 100 veces más rápido que su predecesor, gracias a un uso efectivo de la memoria RAM de las máquinas del cluster.
Las tareas de procesado en Spark pueden programarse empleando los lenguajes más habituales en el sector, como son Scala, Java, Python o R. Además, las funcionalidades de las que se provee Spark son lo suficientemente flexibles como para poder realizar tareas de cruce, filtrado y ordenación con facilidad. Y yendo un paso más allá, Spark incluye funcionalidades específicas para cargar información desde bases de datos o Hadoop, realizar tratamiento de datos en tiempo real o incluso aplicar modelos sencillos de aprendizaje automático.
Apache Kafka
Si Hadoop es el cimiento de las soluciones Big Data, podríamos decir que Apache Kafka es el pegamento. Kafka es un sistema de colas de mensajes redundante y distribuido, que permite implementar de manera fiable las comunicaciones entre los diferentes módulos o componentes de una solución Big Data.
El uso habitual de Kafka es conectar los diferentes elementos de la solución: un módulo que captura datos de una red social y debe transmitirlos a una base de datos para su almacenamiento, o un modelo de aprendizaje automático que debe hacer predicciones y enviarlas a través de un servicio de mensajería. Kafka mantiene un historial de todos los mensajes, de modo que, si cualquier parte de la solución sufre un fallo, el sistema puede reiniciarse sin que se haya perdido ningún mensaje.
Kafka se ha convertido en un elemento integral de cualquier sistema que deba procesar datos en tiempo real sin pérdidas, y con este fin lo empleamos en varias de nuestras soluciones en el IIC.
Jupyter
Todo buen científico debe llevar un cuaderno o registro de sus experimentos, anotando cuidadosamente los datos empleados, las condiciones del experimento, y los resultados. Jupyter Notebook es la herramienta más empleada por los científicos de datos para este fin.
Jupyter se presenta como un «cuaderno» o listado de celdas de código que pueden ejecutarse una a una para ir comprobando los resultados de cada paso del experimento. De esta manera facilitan el trabajo exploratorio de análisis de los datos, así como de entrenamiento de modelos de aprendizaje automático.
Los notebooks de Jupyter pueden escribirse en diversos lenguajes de programación orientados a trabajo científico, como R o Julia, aunque el más popular es Python. De este modo facilitan la utilización de todas las librerías de tratamiento de datos y aprendizaje automático que ofrecen estos lenguajes. También se usan frecuentemente como material educativo para aprender a trabajar en proyectos de Inteligencia Artificial, y se comparten frecuentemente en Kaggle, la web por excelencia en competiciones de ciencia de datos.
Keras
Deep Learning es la rama de la Inteligencia Artificial que más éxitos ha recogido en los últimos años, y una librería que destaca en facilidad de uso para implementar este tipo de modelos es Keras. Basada en Tensorflow, el framework de Deep Learning liberado por Google en 2015, Keras permite crear modelos de redes neuronales profundas con facilidad a través del lenguaje de programación Python.
La principal ventaja de los modelos de Deep Learning frente a otros modelos predictivos es su capacidad innata de tratar con datos multimedia, como son imágenes o texto. Aunque tradicionalmente implementar estos sistemas requería de formación muy especializada y largos tiempos de desarrollo, hoy día las librerías de Deep Learning como Keras han bajado la barrera de acceso enormemente.
Además, los modelos implementados en Keras son compatibles con diferentes arquitecturas de cálculo, como pueden ser CPUs o GPUs, así como con otros frameworks diferentes de TensorFlow, como CNTK de Microsoft.
Kibana
Kibana es otro de los componentes de la familia Elasticsearch, que destaca especialmente por estar centrado en la visualización de la información almacenada en una base de datos de esta clase. Con Kibana es extremadamente sencillo construir un dashboard personalizado sobre las tablas Elasticsearch que nos interese representar gráficamente, facilitando así las tareas de análisis y presentación de resultados.
Usando Kibana pueden construirse muchas de las visualizaciones que uno esperaría encontrar en un sistema de Business Intelligence, como gráficas de series temporales, redes de relaciones en un grafo o mapas geográficos. Se trata del complemento perfecto para una solución Big Data que ya integra Elasticsearch como almacenamiento de datos.
Shiny
El lenguaje de programación R es, junto a Python, uno de los más utilizados por los científicos de datos para realizar análisis y construir modelos predictivos, pero si por algo destaca especialmente es por sus capacidades para crear visualizaciones. Un ejemplo de ello especialmente meritorio es Shiny. Con este paquete es posible crear pequeñas aplicaciones web o dashboards interactivos, que muestren gráficas de nuestros datos o permitan lanzar procesos de cálculo.
Shiny resulta una herramienta especialmente útil para el prototipado de soluciones, permitiendo construir un demostrador de una aplicación de manera sencilla antes de embarcarse en el proyecto de desarrollo que supondría construir una aplicación web completa.
A medida que más sectores de negocio se ven inmersos en una transformación digital, son más los datos que se registran electrónicamente y, por tanto, susceptibles de analizarse y procesarse automáticamente.
A la par de esta tendencia, las tecnologías de Big Data e Inteligencia Artificial también han evolucionado, permitiendo más capacidad de procesado, pero sobre todo una mayor agilidad a la hora de construir soluciones adaptadas a cada caso de uso concreto. En el Instituto de Ingeniería del Conocimiento (IIC), nos mantenemos a la última en la aplicación de estas tecnologías, proporcionando así un valor diferencial a nuestros clientes.