martes, 29 de marzo de 2011

Hadoop NG, o cómo liarla gorda.

Hace un tiempo vi en diferentes blogs de Yahoo! su propuesta para una reimplementación de una parte bastante importante de Hadoop. Una propuesta interesante, pero que creí bastante teórica. Bueno, pues la semana pasada pude ir a otra edición del grupo de usuarios de hadoop del reino unido, en el que Owen O'malley mismo presentó estas mismas ideas a la comunidad, podéis ver la página del evento así como las presentaciones en: 


Entrando un poco más en detalle. Esta propuesta (que está en fase de testing en Yahoo! por lo tanto, de teórico nada) se trata de sustituir el JobTracker de Hadoop (la parte que lanza los jobs a los diferentes nodos que forman el cluster de Hadoop) por dos nuevos elementos: 

  • Un Resource Manager / Scheduler: El cual cogerá los requerimientos del job en concreto y buscará un nodo capaz de poder realizarlo.
  • Un Node Manager en cada nodo: El cual monitorizará el nodo y informará al Resource Manager. Dentro de este nodo el Node Manager será capaz de crear un container, dentro del qual se ejecutará el mapper, el reducer, y lo que es más interesante: o lo que sea. Ya que este diseño pretende hacer de Hadoop un framework de programación distribuido general. 
podéis encontrar más información ( y mucho más detallada ) en: 

Mis primeras impresiones fueron bastante negativas. En primer lugar porque estamos sustituiendo un elemento QUE FUNCIONA de Hadoop por otro de mucho más complejo. Y en segudo lugar por la complejidad de este segundo elemento. No quisiera parecer conservador pero mis temores se fundamentan en la experiencia que tuve con otros middlewares de computación distribuida, en los que estabas más tiempo definiendo las características del job en un "formato simple de definición genérica de jobs" en XML que programando el job en sí mismo.

Otro aspecto es que como ya he dicho anteriormente este Node Manager permitiría no sólo crear containers con mappers o reducers, sino otro tipo de containers (implementados por la comunidad) en los que se podría lanzar otro tipo de procesos (intensivos de CPU, MPI, ...). Tampoco me hizo mucha gracia esto, y otra vez fue por culpa de alguna mala experiencia. Lo que me gustó de Hadoop desde el principio es que era un framework que sólo hacía una cosa, pero que la hacía muy bien. Cosa que no hacían otros, que intentaban hacer muchas cosas diferentes y no hacían nada bien.

Aproveché la ronda de cervezas del final de la reunión para ver más opiniones acerca de estos cambios, las conclusiones que saqué es que la gente es muy optimista, frases que oí mucho: 
  • La comunidad hadoop será capaz de hacerlo bien.
  • Asi podremos aprovechar el cluster para más cosas. 
Veremos qué tal la primera, espero que si :) en cuando a la segunda, es pura verdad. 

Estoy viendo muchos clústers dedicados 100% a hadoop/map reduce. Esto no es necesariamente malo, pero como no me canso de decir, Map Reduce es un modelo de programación y va muy bien para unas cosas y va muy mal para otras. El hecho de que sólo haya instalado Hadoop en un cluster hace que todo tenga que estar programado siguiendo una estrategia map/reduce o tengamos que instalar otro framework  (Condor/Globus/...) en las mismas máquinas. Por ejemplo he sido testigo de un intento (que acabó en nada) de implementar un Load Tester con Hadoop, cuando claramente map/reduce no es el modelo más apropiado (que se puede hacer ojo!, simplemente digo que hay cosas mejores). 

Si la comunidad Hadoop consigue hacerlo bien Hadoop se puede convertir en un framework de sistemas distribuidos _genérico_, cosa que facilitaría mucho la tarea de administradores de sistema, ya que sólo tendríamos que tener Hadoop instalado. Pero bueno, estamos hablando de largo plazo.

Asi que más o menos, cambié de opinión, aún me quedan dudas sobre la complejidad de estos nuevos componentes.

jueves, 17 de marzo de 2011

Open Data Manual

Me acabo de encontrar esto por los Internets:

http://opendatamanual.org/

Se trata de un documento que pretende, cito:
This report discusses legal, social and technical aspects of open data. The manual can be used by anyone but is especially designed for those seeking to open up data. It discusses the why, what and how of open data — why to go open, what open is, and the how to ‘open’ data
Muy interesante el contenido (aún no he tenido oportunidad de leerlo todo, pero bueno) y también el formato, dónde te permite hacer comentarios y discusiones en cada parágrafo.

sábado, 12 de marzo de 2011

Dev Fort

Aunque este post salga bastante de la temática del blog creo que es interesante.

Últimamente he estado dando vueltas al tema de la productividad. Que si metodologías ágiles, que si buen equipo informático, que si las herramientas idóneas. Sí muy bien, pero no sería mejor meterse con el equipo de desarrollo durante una semana en castillo en una isla sin Internet ?

Pues esto existe y se llama /dev/fort

La idea es muy sencilla, se trata de ponerse con el grupo de desarrollo (diseñadores/programadores) en un lugar aislado, sin ningún tipo de conexión a Internet y concentrarse en una sóla idea y a implementarla.

La idea de desarrollar sin conexión a la red puede ser un poco chocante al principio, esto significa que tienes que ir bien preparado, con librerías, documentaciones y programas de desarrollo en el portátil, pero es sin duda una muy buena idea. Si contara las horas de productividad que he perdido en Reddit/Wikipedia/Twitter... en fin.

Volviendo al /dev/fort, unos compañeros de trabajo participaron en la quinta edición y hicieron esto: http://spacelog.org , la parte curiosa es que compraron el dominio en el aeropuerto de vuelta a la civilización mientras subían todo el código a github.

En fin, no deja de ser una idea interesante y curiosa. A lo mejor convierto casa mis padres en un castillo por el próximo desafío Abredatos :)

miércoles, 9 de marzo de 2011

Experimento (Data Science y España)

LinkedIn te da una gráfica en la que se muestra el número de veces que tu perfil sale en las búsquedas. Yo tengo un perfil bastante acorde a "data science" y lógicamente, la localización es Londres.

El otro día decidí hacer un experimento y cambiar la localización a Barcelona.


Puede, el avispado lector, adivinar qué día cambié la localización?