Elasticsearch en cluster

Una prueba de concepto de la réplica de elasticsearch. Con un Logstash cargando datos, tres elasticsearch y un Kibana, todo manejado con docker compose y Kitematic.

El objetivo es comprobar cómo funciona el cluster de elasticsearch en el caso de que se vayan cayendo diferentes servidores o nodos. Se puede ver como el cluster de elasticsearch va respondiendo.

 

Apache Camel cookbook

Hoy toca el segundo libro sobre apache camel. Sí efectivamente el libro que no me gustó como ya os comenté en la anterior entrada sobre el libro de Apache camel.

Así que tampoco me voy a extender mucho en esta entrada el mejor libro es el de Apache camel in action.

 

Camel in Action

En esta ocasión os traigo la revisión / opinión de un libro sobre una herramienta de integración de aplicaciones. La herramienta se llama Camel y el libro es Camel in Action, de la editorial Manning.

Es una herramienta que implementa los conocidos patrones de integraciones de aplicaciones. Es bastante interesante porque te evita el lidiar con toda la infraestructura en este tipo de trabajos.

Al final en el proyecto no lo usamos pero me quedó una gran impresión de sus capacidades. Y el libro está realmente bien explicado, pese a estar en inglés.

 

Reseña libro Clean Code

Hoy os traigo una revisión de un libro sobre programación. No tanto sobre un lenguaje sino sobre la programación en general, buenas prácticas. El libro se llama Clean Code.

Creo que es un libro que todo programador debiera de leer.

Os dejo el vídeo

Espero que os guste

Añadidos a la biblioteca

He actualizado los libros de cabecera con varios ejemplares de la editorial Manning.

Me gusta especialmente la serie In Action. Todos los libros que tengo de esta serie son introductorios pero bastante completos. Escrito de una forma bastante clara, incluso para alguien que su idioma materno no es el Inglés.

Empecé con el libro de Camel in Action  que no he llegado a terminar, pero me sirvió para tener una visión bastante interesante de la herramienta y sus posibilidades.

De este primer libro y la grata impresión que me dejó han ido derivando una serie de compras más.

Cuando te dedicas a temas de tecnología y más si están en el candelero uno de los problemas es que los libros suelen estar un poco desfasados, ya que lleva su tiempo escribirlos. Pero esta editorial tiene un programa que se llama MEAP que es el acrónimo de Manning Early Access Program, que te permite disponer de los libros que están escribiendo, lógicamente sólo los capítulos que tienen escritos. Hay erratas y dibujos hechos a boli pero puedes acceder al contenido existente.

Tengo los libros de Docker in Action y Elasticsearch in Action que me han parecido fantásticos. El libro de Docker In Practice me ha decepcionado un poco, en vez de ser un manual al uso son más bien recetas, de situaciones y cómo resolverlas. Teniendo su equivalente in Action, me parece que no aporta mucho.

Ahora mismo estoy leyendo Unified Log Processing que me está resultando muy interesante, aunque no está más que la mitad de los capítulos. Pero lo que he leído me ha resultado de mucha ayuda.

El siguiente que tengo en la recámara es el de Big Data, que ni he empezado.

Una de las cosas buenas de comprar a la editorial directamente es que suelen hacer descuentos asiduamente, con lo que fácilmente te ahorras un 40%. Esto no sería posible en España, porque está prohibido aplicar un descuento de más del 10%. Lástima por los comerciantes españoles…

MongoWeather: Infraestructura en la nube con RedHat OpenShift

Hoy traigo un videotutorial sobre la infraestructura para la prueba de concepto de tratamiento de datos meteorológicos con MongoDB.

Normalmente las pruebas las suelo realizar sobre máquinas virtuales, para no saturar la máquina física. Pero el otro día hablando con los chicos de RedHat que están en el trabajo me propusieron otra opción. Esta opción consiste en utilizar la nube que tiene RedHat. Al final viene a ser la misma solución salvo que en vez de tener una máquina virtual en mi máquina la tengo en la nube, con lo cual, es accesible para el resto del mundo y ya no necesito sobrecargar mi máquina.

En muy poco tiempo, unos 15 minutos, disponemos de una máquina perfectamente configurada y disponible en Internet que incluye un servidor de aplicaciones, una base de datos mongoDB y una herramienta de administración de esa base de datos en este caso rockMongo.

Todo por supuesto completamente gratis es una máquina pequeñita de un giga y 500 megas de RAM pero para la prueba de concepto es suficiente.

Espero que os guste.

Nuestro rol como clientes y proveedores y sus paradojas

En la vida de cada uno de nosotros en la mayor parte de las situaciones somos consumidores de productos o servicios. Compramos cosas, como ropa, electrónica, etc, o bien contratamos servicios, como por ejemplo la línea telefónica.

Y normalmente somos exigentes con las compañías que nos prestan estos servicios. Es lo normal, pagamos por un producto y servicio y queremos que nos lo presten correctamente. A nadie le gusta quedarse sin cobertura en el teléfono, o que no le funcione el terminal, o que el medico no le diagnostique bien, o un largo etcetera.

A veces lo que nos ocurre como trabajadores es que no nos damos cuenta que en ese momento nosotros somos los prestadores del servicio. Y lógicamente nuestros clientes van a tener un nivel de exigencia similar al que nosotros tendríamos si fuésemos los clientes. Y se nos suele olvidar.

¿Que pensaríamos si estamos reformando la cocina de nuestra casa y el albañil cuando llega la fecha de entrega nos dice que va a tardar más? Lógicamente lo más probable es que no nos parezca bien, no vamos a disponer de nuestra cocina, con el trastorno que nos supone, y encima nos va a costar más, porque obviamente el albañil no va trabajar gratis.

Pero me he encontrado con casos en este sector de la informática en los que gente del equipo se permite plantear que se le pida más tiempo al cliente. Y lo más curioso es que luego cuando las cosas van mal y el cliente te echa se extrañan.

Pero ¿alguien mantendría o volvería a contratar al albañil que obviamente está siendo incapaz de llevar la reforma de la cocina a cabo?.

MongoWeather: Carga de la información

El siguiente paso para poder procesar los datos de la estación meteorológica con mongoDB, después de tener instalada la infraestructura, es proceder a cargar los datos.

El programa de la estación meteorológica permite exportar los datos en formato CSV, es decir separado por comas. Y este formato es soportado por la utilidad de importación de mongoDB.

Con lo que tan solo con un comando debiera de ser suficiente:

mongoimport -d weather -c weather –type csv –file ./EasyWeather.csv –headerline

Con esto le decimos que importe los datos en la base de datos weather y la coleccion es también weather. Así mismo le decimos que el formato es csv, que la primera línea tiene el nombre de los campos y cual es el fichero que queremos importar.

Con esta información nos importará los datos, pero…

Vemos que hay ciertos datos que no los ha importado correctamente.
Podríamos modificarlos en origen con algún conjuro (sed -e ‘s/ /g’ o similar) de Linux, pero vamos a darle una solución con mongoDB.
Esta solución se basa en un cursor, que recorre todos los registros y los va modificando para convertir los String en fechas.
El script es este (está también disponible en la página de GitHub):
Con este cursor creamos un string con el formato adecuado y con el creamos el objeto Date para que mongoDB lo gestione como lo que es.
Seguimos teniendo otro problema, y es que cuando no existen datos la exportación del programa de la estación meteorológica pone un texto “—“. Pero como es una substitución simple, podemos hacerlo con una update más sencilla

MongoWeather: Instalación

El primer paso para poder almacenar y tratar los datos de la estación meteorológica con mongoDB es… tener instalado el mongoDB.

Yo he utilizado para tener el servidor un CentOS versión 7. En la página de mongoDB hay instrucciones para realizar la instalación.

Solo añadir que por defecto no escucha más que en el interface localhost, es decir 127.0.0.1 Para permitir que se pueda llamar desde otra máquina hay que cambiar una linea en el fichero de configuración /etc/mongod.conf

Con esto solo tendremos que reiniciar el servidor y comprobar que se arranca correctamente.

Como cliente estoy usando roboMongo pero eso si desde una máquina windows porque con el CentOS no me dejaba instalarlo por problemas de dependencias.

En este caso ya hay ciertos datos cargados, pero eso en la próxima entrada

MongoWeather

Hace unas entradas comenté que estaba realizando una prueba de concepto de BigData en la que lo que pretendía era probar las posibilidades del MapReduce.

Inicialmente lo empecé a implementar utilizando la herramienta Infinispan/JBoss Data Grid pero me he encontrado con bastantes dificultades, no tanto por el soporte de MapReduce, sino por la carencia de herramientas auxiliares que facilitaran el trabajo.

Es por ello que he decidido utilizar otra herramienta que me permite realizar el mismo tipo de pruebas pero sin requerir de tanto trabajo auxiliar.

Esta herramienta es MongoDB. Tiene una serie de ventajas sobre Infinispan para mis propositos:
– Me permite cargar los datos en la base de datos sin tener que realizar ningún tipo de desarrollo, utilizando la herramienta mongoimport.
– Me permite realizar los scripts en javascript de forma nativa, sin tener que realizar ningún tipo de desarrollo a medida

De esa forma me permite concentrarme en la parte de mapReduce que es la que más me interesa. De momento he conseguido con mucha menos dedicación de tiempo implementar lo que con Infinispan me ha costado bastante más.

El, de momento, poco código está aqui.