Friday, September 8, 2017

Sqoop - agilizando ingesta de datos entre una Base de Datos Relacional y Hadoop

Cuando se necesita pasar datos desde una base de datos relacional hacia otra, basta con hacer consultas sin preocuparse mucho de la persistencia. Cuando tenemos que operar una gigantesta base de datos relacional, pasando una copia a otra base de datos con el objetivo de analizar rápidamente lo recolectado, tenemos que considerar que esa operación puede tomar horas ¿Qué sucede si la ingesta se realiza diariamente?

Apache Sqoop


Apache Sqoop se creó para realizar transferencias de datos en forma masiva entre base de datos relacionales o un mainframe y Apache Hadoop. Durante el año 2009 nació como un módulo para Hadoop, se desacoplo de Hadoop y ya en el año 2010 se convirtió en un proyecto de Apache. En marzo de 2012 se convirtió en un proyecto de prioridad  para Apache Software Foundation (AFS).

¿Qué hace?


La forma en que Sqoop replica la data puede parecer muy simple. Sqoop importa los datos en paralelo usando múltiples mappers donde cada uno colecta una parte de la tabla. Luego esos datos son almacenados en el HDFS y los disponibiliza para ser procesados. La opción de enviar los datos procesados a una base de datos relacional también es soportada.

Ventajas


  • Integración con el ecosistema Hadoop
  • Las estructuras que forma Sqoop al importar la data se integra fácilmente con sistemas Hadoop como Hive y HBase. Los datos importados quedan en diferentes archivos dentro de Hadoop, facilitando el uso de los datos.
  • Los comandos son simples, además de configurables. En caso se necesite hacer algo especial, por ejemplo, un nuevo driver para una base de datos o aplicar un nuevo criterio para separar las consultas sql, entonces se pueden utilizar clases Java.
  • Sqoop permite obtener solamente una parte de la data como lo que ha sido agregado después de la última ingesta.

Desventajas


  • Es importante considerar que bases de datos muy grandes requieren de una gran cantidad de consultas. Muchos mappers en paralelo pueden sobrecargar a la base de datos.
  • Cuando se trabaja con múltiples mappers, es necesario asegurar que tienen la misma carga de trabajo. Es común que la consulta sql que usa un mapper colecte más datos que los otros. Eso se puede solucionar usando una key representativa y que se encuentre bien distribuida dentro de la tabla. Por ejemplo, no es lo mismo trabajar con una base de datos que tiene id’s incrementales que con otra que usa un String como key.
  • No es capaz de actualizar los datos existentes. Sin embargo, ese tipo de trabajo se encuentra afuera de la esencia de Hadoop, escribir una vez y leer muchas veces la data.
  • Si el proceso de exportar datos hacia una base de datos relacional falla durante su ejecución, no hay posibilidades de rollback. Sqoop hace commit después de una cierta cantidad de datos insertados.


Sqoop es una herramienta open source que permite a los usuarios extraer datos desde una fuente estructurada hacia Hadoop, agilizando esas tareas y soportando a las bases de datos relacionales más utilizadas.

Friday, September 1, 2017

Poder y conocimiento

¿Cómo sería el mundo si los doctores y enfermeros no tuvieran la preparación para sanarnos? ¿Qué pasaría si los autos comienzan a fallar y nadie supiera cómo arreglarlos? ¿O si la luz y agua tuvieran problemas en su distribución y no existiera alguna persona o equipo con el conocimiento para llegar a una solución?

El poder del conocimiento


En el trabajo dependemos de esas personas que conocen los detalles de cómo funcionan los productos, también de quienes conocen cómo utilizar una tecnología y los efectos de implementarlas en diferentes contextos. Esas personas son imprescindibles y mantenerlas se convierte en prioridad, es normal que hagan el trabajo de todo un equipo.


Las decisiones son tomadas por los más experimentados, ellos tienen un mayor contexto y las organizaciones dependen de este tipo de personas, nosotros también.


Los gobiernos y empresas tienen poder porque tienen las herramientas para producir e influenciar a la comunidad en general. Pueden movilizar trabajadores y empresas para que provean servicios que busquen beneficiar a todos, o al menos ese debería ser el motivo.


La sociedad del conocimiento


Las sociedades, entendiéndose como a un país, dependen del conocimiento para funcionar. Los ciudadanos son los que lo poseen y lo usan para generar riqueza y servicios de calidad para todos.

Para que los servicios sean accesibles se tiene que tener algo más de conocimiento, el sentido de comunidad también es algo que se debe desarrollar y lamentablemente, eso es algo que falta también en las sociedades con mayores conocimientos. Los resultados son limitados cuando sólo una pequeña parte de la población tiene acceso.


Estudia, aprende y no pares de compartir conocimiento


¿Qué pasa cuando nos quedamos con un conocimiento y no lo disponibilizamos? La riqueza se distribuye mal, hay falta de satisfacción laboral y nuestra salud empeora.


Comparte todo el conocimiento que puedas, nivela hacia arriba a tus pares. Más allá de beneficiar a los demás, también lo haces tú trabajando con personas más capacitadas que facilitan incluso tu trabajo. Como resultado tendrás más horas para hacer lo que te guste, los servicios que tú utilizas serán de mejor calidad y también podrás optar a ese puesto de trabajo que siempre has querido porque en el actual ya eres reemplazable.