ElasticSearch y Kibana. Elastic Stack

Las nuevas fuentes de datos que nos permiten crear información de valor son difícilmente manejables con las tecnologías tradicionales, especialmente las bases de datos relacionales. Existen en el mercado un sinfín de herramientas y tecnologías de almacenamiento para lo que conocemos como big data o macrodatos, así tenemos diversos modelos de bases de datos NoSQL, Hadoop y una gran variedad de proyectos en su ecosistema, y motores de búsqueda y analítica que también realizan funciones de almacenamiento.

En esta entrada hablaré de Elastic Satck, un completo ecosistema de componentes para búsquedas completas y analítica. Los componentes principales del stack son:

  • ElasticSearch
  • Kibana
  • Logstash
  • Beats
  • X-Pack

ElasticSarch es el núcleo de Elastic Stack y proporciona capacidades para el almacenamiento, búsqueda y analítica. Kibana es una gran herramienta de visualización e interfaz de usuario de Elastic. Logstash y Beats funcionan como plataformas de envío de datos a Elastic y X-Pack añade características de seguridad, monitorización, alertas, reporting, etc…

Podemos acudir a la documentación de Elastic para obtener una definición completa del producto:

Elasticsearch es un motor de búsqueda y análisis de texto completo de código abierto y altamente escalable. Nos permite almacenar, buscar y analizar grandes volúmenes de datos rápidamente y casi en tiempo real. Generalmente se utiliza como el motor/tecnología subyacente que impulsa las aplicaciones que tienen características y requisitos de búsqueda complejos.

La tecnología detrás de ElasticSearch es Apache Lucene, una API de código abierto desarrollada íntegramente en Java para la búsqueda y recuperación de información. Esta característica es lo que la hace diferente de otras soluciones NoSQL o sistemas relacionales de bases de datos.

¿Qué beneficios obtenemos del uso de ElasticSearch?

  • Obtenemos almacenamiento sin esquema y orientado a documento. Podemos almacenar cualquier documento JSON.
  • Proporciona completas funciones para las búsquedas, especialmente en texto completo debido a sus capacidades en el procesamiento de textos. De esta forma podemos buscar a través de todos los términos en la totalidad de documentos disponibles en la base de datos.
  • Capacidades de analítica con una amplia variedad de funciones de agregación.
  • Una rica librería cliente con soporte para muchos lenguajes de programación como Java, Python, PHP, etc.., además de una REST API que funciona sobre HTTP.
  • Facilidad de escalado. Proporciona escalabilidad horizontal, por lo que es fácil escalar de uno a cientos de nodos.
  • Procesamiento cercano al tiempo real que permite indexar miles a cientos de miles de documentos por segundo y hacerlos disponibles para búsquedas casi inmediatamente.
  • Tolerante a fallos. Al igual que otras tecnologías de procesamiento de big data, ElasticSearch proporciona replicación de los datos de un nodo a otro nodo del clúster en caso de fallo.

¿Qué casos de uso recomiendan la utilización de las tecnologías asociadas al Elastic Stack?

  • Analítica de ficheros log desde servidores web, servidores de aplicaciones, servidores de bases de datos, etc
  • Búsqueda de productos más relevantes
  • Búsquedas en la Web y websites similares a las búsquedas de Google a través de los contenidos de nuestro sitio
  • Analítica de métricas gracias a su completa API de agregación

Instalación de ElasticSearch en Windows

La instalación del Stack de Elastic es sencilla. Elastic recomienda la instalación de sus componentes en el siguiente orden:

  1. ElasticSearch
  2. Kibana
  3. Logstash
  4. Beats
  5. ElasticSearch Hadoop

De esta forma nos aseguramos que los componentes dependientes están instalados apropiadamente.

Empezaremos con la instalación de ElasticSearch.  En entornos Windows bastará con descargar le MSI Windows Installer de la siguiente dirección:

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.msi

Una vez descargada haremos doble clic en el archivo descargado y haremos una instalación típica.

En esta ventana dejaremos los directorios de instalación por defecto. En caso contrario puedes definir tus propias rutas de acceso a la aplicación y a los directorios de datos, configuración y logs. Pulsamos “Next”.

En la siguiente pantalla dejamos ElasticSearch instalado como un servicio. Dejaremos marcadas las demás opciones tal y como se muestra en la imagen. Pulsamos “Next”.

La siguiente pantalla es de configuración del clúster y nodos. En nuestro caso estamos realizando una instalación en local con un solo nodo por lo que dejaremos también los valores por defecto, incluyendo los roles asociados a este nodo y la memoria asignada al heap de la JVM. Pulsamos “Next”.

La siguiente pantalla es de selección de plugins. Pulsaremos “Next” sin seleccionar nada.

La siguiente pantalla nos permite configurar el tipo de licencia de X-Pack. De momento bastará con las características del paquete básico que es el seleccionado por defecto. Pulsamos en “Install”.

Después de unos pocos minutos el proceso de instalación habrá finalizado. Es importante tener en cuenta que la versión de instalación de todas las herramientas del stack de Elastic debe ser la misma, en este caso la 6.3.1. Una vez instalado podemos hacer clic en la opción que aparece en la imagen: “Open ElasticSearch in the browser” donde podremos ver un archivo JSON con la información de instalación en localhost:9200

Pulsamos “Exit” para salir de la instalación.

La siguiente herramienta del Stack de Elastic que debemos instalar es Kibana. En el siguiente artículo analizaremos algunas características de esta herramienta y la instalación paso a paso.

Curso: Big Data. Arquitectura y Desarrollo

En la actualidad, gran parte de los proyectos tecnológicos hacen uso, de una u otra forma, de herramientas big data. La ingente cantidad de datos que generamos a diario, la velocidad a la que los consumimos y la variedad de fuentes de las que obtenemos estos datos, hacen necesario incorporar a nuestros flujos de trabajo nuevas estrategias, nuevas herramientas de procesamiento y análisis que nos permitan optimizar los recursos, así como mejorar nuestros procesos de toma de decisiones.

Continuar leyendo «Curso: Big Data. Arquitectura y Desarrollo»