Ad verba per numeros

Última hora
Monday, February 4, 2008, 01:09 AM
Hadoop [1] es una plataforma que permite desarrollar software para el proceso de cantidades enormes de datos mediante la utilización de clusters de ordenadores. En esencia se trata de una implementación libre de la infraestructura desarrollada por Google como el Google File System [2] y MapReduce [3]. Sobre Hadoop se están desarrollando diversas herramientas que deberían facilitar aún más el desarrollo de aplicaciones, por ejemplo, Pig [4] y Hbase [5]. Una forma relativamente "sencilla" de iniciarse en este área es mediante la denominada Hadoop Appliance [6], una máquina virtual que permite a sus usuarios conectarse a un pool de recursos sobre el cual lanzar sus propios trabajos.

En estos momentos estoy dirigiendo una serie de trabajos fin de carrera cuyo punto en común es la necesidad de extraer información semiestructurada de ficheros enormes (p.ej. logs de consultas, volcados de la Wikipedia o colecciones de textos periodísticos escritos en chino). En todos estos casos se siguen estrategias de desarrollo ad hoc que complican en exceso el desarrollo de los proyectos y, además, hacen que la aplicación final sea difícil de escalar.

Para resolver este inconveniente, estoy buscando a varias personas que deseen participar en uno o más trabajos fin de carrera que perseguirían las siguientes metas:

  • Estudiar y documentar Hadoop, Hadoop File System, MapReduce, Pig, Hbase y cuantas herramientas relacionadas nos permitan desarrollar aplicaciones caracterizadas por el procesamiento intensivo de conjuntos de datos enormes.
  • Estudiar y documentar el modo de utilizar la Hadoop Appliance para permitir a un alumno en solitario explotar el potencial de Hadoop para el desarrollo de su trabajo fin de carrera.
  • Estudiar y documentar el modo de utilizar la infraestructura hardware de la EUITIO cuando no está siendo utilizada para ejecutar la Hadoop Appliance.
  • Estudiar y documentar el modo en que cualquier nabateo [7] puede "donar" tiempo de su CPU ejecutando la Hadoop Appliance.
  • Estudiar trabajos fin de carrera para convertirlos en tutoriales sobre programación en la plataforma Hadoop.
Los objetivos son amplios por lo que es más que probable que puedan ofrecerse varios trabajos fin de carrera y/o trabajos a desarrollar en equipo. Si estás o estáis interesados en participar en este proyecto escribidme a [email protected].

[1] http://hadoop.apache.org/
[2] http://labs.google.com/papers/gfs.html
[3] http://labs.google.com/papers/mapreduce.html
[4] http://research.yahoo.com/node/90
[5] http://wiki.apache.org/hadoop/Hbase
[6] http://www.grid-appliance.org/index.php ... ;Itemid=85
[7] http://euitio178.ccu.uniovi.es/wiki/index.php/Nabateos

Actualización (04/02/2008): Ditman ha preguntado en el foro de la EUITIO por las diferencias (o ventajas) de Hadoop sobre BOINC. Puesto que me parece un tema relevante para los que puedan estar interesados en el proyecto edito la entrada y añado una versión retocada de lo que ya comenté en el foro.
BOINC es, en pocas palabras, una infraestructura que permite a cualquier usuario ceder tiempo de CPU para realizar cómputos para diversos proyectos (p.ej. SETI@Home seguramente os sonará). Desde mi punto de vista existen una serie de diferencias (que no necesariamente ventajas/inconvenientes) respecto a Hadoop que son importantes para los objetivos del proyecto fin de carrera que aquí se ofrece:

  1. Con BOINC es muy sencillo para los "donantes" ceder tiempo de CPU. En Hadoop simplemente no existe este concepto.
  2. Es relativamente complicado para alguien organizar un proyecto BOINC, como organización no sería inmediato; para un proyectante sería simplemente inabordable :(
  3. Puede emplearse BOINC como una plataforma de Grid computing pero no creo que resultase distinto (más fácil ni difícil) que hacerlo con Hadoop.
  4. Aparentemente mediante la Hadoop Virtual Appliance (HVA) es posible para un único individuo conectarse a un conjunto de recursos y comenzar a ejecutar sus trabajos. Uno de los objetivos de este proyecto sería estudiar este aspecto.
  5. En principio, la idea de la virtualización puede permitirnos configurar la HVA para obtener "sabores" interesantes para la EUITIO y posibles proyectantes: una versión stand alone, una versión para que se ejecute en laboratorios de tal modo que se puedan crear clusters sobre la marcha, otra versión para que los voluntarios simplemente la encendiesen y cediesen esa máquina virtual al cluster de la EUITIO, etc.
  6. En BOINC se programa en C++, en Hadoop se puede programar en Java y Python (sí, ya sé que se puede hacer que aplicaciones Java se ejecuten en BOINC pero no es lo mismo...) El hecho de que sea Java puede resultar en una barrera de aprendizaje menos acusada para los posibles proyectantes.
  7. Hadoop y MapReduce tienen hoy por hoy un aura de "cool" que, en mi opinión, BOINC no tiene y ese factor puede resultar motivante para el desarrollo de un proyecto.
  8. En BOINC uno depende de los voluntarios, si tu proyecto no les interesa no cederán su tiempo de CPU y estarás igual que al principio. En Hadoop sabes cuántas máquinas hay en el cluster y, aparentemente, cada vez que una HVA se conecta pasa a formar parte del cluster y a ceder su espacio y tiempo de CPU.
Como se puede ver no se trata de argumentos a favor/en contra de una plataforma sino razones para haber elegido Hadoop como objeto del/los proyecto/s que ofrezco.

Back Next