Hadoop: el elefante omnipresente

Hadoop es un nombre que vas a ver por muchos sitios en los próximos tiempos, al hilo del fenómeno Big data. Su logo es ese elefante amarillo, el juguete favorito del hijo de su creador original, Doug Cutting, cuando comenzó su desarrollo.

Hadoop es una infraestructura digital de desarrollo creada en código abierto bajo licencia Apache, un proyecto construido y utilizado por una gran variedad de programadores utilizando Java. Doug Cutting inició su desarrollo cuando estaba en Yahoo! inspirándose en tecnologías liberadas por Google, concretamente MapReduce y Google File System (GFS), con el fin de utilizarla como base para un motor de búsqueda distribuido. Tras dedicarse a tiempo completo a su desarrollo y convertir a Yahoo! en el principal contribuidor del proyecto, Cutting abandonó Yahoo! para unirse a Cloudera, una compañía cuya oferta de productos gira íntegramente en torno a Hadoop.

¿Cuál es la importancia de Hadoop? Básicamente, que permite desarrollar tareas muy intensivas de computación masiva, dividiéndolas en pequeñas piezas y distribuyéndolas en un conjunto todo lo grande que se quiera de máquinas: análisis de petabytes de datos, en entornos distribuidos formados por muchas máquinas sencillas: una propuesta de valor muy razonable en los tiempos hiperconectados que vivimos, y que utilizan hasta la saciedad empresas como Google, Yahoo!, Tuenti, Twitter, eBay o Facebook. Pero no son las únicas: el uso de Hadoop se está popularizando a gran velocidad en todo tipo de empresas.

Además, es un caso interesante, porque su licencia libre está haciendo que sea adoptado por un gran número de competidores, incluyendo a los «sospechosos habituales» de los grandes sistemas (Oracle, Dell, NetApp, EMC, etc.), lo que está llevando a una aceleración tanto de su difusión como de sus prestaciones. Si estás en el mundo de la tecnología corporativa o preparando tu desarrollo profesional dentro del mismo, Hadoop es una de las áreas que, en función de su potencial, deberías definitivamente considerar: más tarde o más temprano, te encontrarás con el elefante.

ACTUALIZACIÓN: Si antes lo decimos… según Slashdot, Hadoop se revela como una muy prometedora bolsa de empleo.

13 comentarios

  • #001
    Gorki - 8 noviembre 2011 - 21:31

    Con esto de la jubilación, mis conocimientos sobre lo último en programación se van volviendo más y más obsoletos. Esto que explicas de Hadoop ¿tiene que ver con la computación distribuida en «cluster de procesadores» o con la programación en «grid» de ordenad’res en red, que cuando yo lo dejé, comenzaba a aplicarse como técnica de computación distribuida en competencia con las «mainframe»·o va por otra vía?

    Para los no técnicos:

    «cluster de procesadores» = PC’s trabajando en paralelo para resolver simultáneamente cálculos en bucle tipo For – Next, cadaprocesador calcula un ciclo diferente. Asi funcionan,(o fincionaba)m por ejemplo Google y la mayoría de los superordenadores que se fabrican hoy y así funcionan (en pobre), los procesadores con varios «cores».

    «Programación en Grid», instalar en cada ordenador de una red una «maquina virtual» que utilice el eventual sobrante de cálculo del ordenador, para ponerlo a disposición de un cálculo distribuido, coordinado a través de la red, como por ejemplo, la cesión para buscar vida extraterrestre en la emisiones de radio estelares, (Proyecto SETI)

  • #002
    bel - 8 noviembre 2011 - 21:59

    Gracias gorky. siempre confundo esos dos t’erminos. mesuenan a lo mismo.

  • #003
    onlinetelco - 8 noviembre 2011 - 23:29

    Siempre es interesante conocer la existencia de este tipo de aplicaciones, por lo que dice Enrique en el post, se está empleando en todo tipo de empresas…

  • #004
    Antonio Sanz - 9 noviembre 2011 - 08:33

    El tema de la computación de alto rendimiento (HPC o High Performance Computing) lleva ya años dando vueltas, y hay soluciones ya maduras y establecidas (tanto gestores de colas como Condor, Oracle Grid Engine, Torque en la parte de cluster como Globus o Glite en la parte de grid computing).

    Lo que realmente aporta Hadoop es una capacidad de gestionar GRANDES cantidades de datos. Los cluster tradicionales están orientados a tener que dar mucha potencia de cálculo gestionando relativamente poco espacio en disco … ¿pero qué pasa cuando tu base de datos tiene 100Tb?. ¿O 1Pb (lo que se rumorea que procesa Facebook al día en cuestión de análisis de logs)?. Que necesitas algo más potente –> Hadoop.

    El HDFS (Hadoop Distributed File System) es quizás el componente principal de Hadoop, ya que permite crear sistemas de ficheros empleando servidores «commodity» ofreciendo redundancia, capacidad y rendimiento (solo para ficheros muy grandes, ojo). Y lo mejor de todo es que estos servidores commodity son los que hacen la computación, permitiendo el paradigma de «llevar los datos a la computación», uno de los factores principales del rendimiento de Hadoop.

    El Map/Reduce, el otro componente, es un distribuidor de tareas que encaja perfectamente con HDFS y que permite de forma bastante sencilla el repartir trozos de tareas entre el cluster con una curva de aprendizaje relativamente sencilla (si lo que se va a analizar no son ficheros de texto cuesta más, pero es posible trabajar con vídeo o imágenes).

    Además de todo esto, se ha creado un verdadero ecosistema encima de Hadoop con cosas como HIVE (Datawarehousing), HBase (BD NoSQL), Pig (Framework) o Mahout (Machine Learning/Datamining) que hace que en algunos casos el desarrollador ni siquiera tenga que pegarse con «lo complicado» de Hadoop.

    Nosotros en mi Instituto de Investigación (I3A, http://i3a.unizar.es) tenemos desplegado un pequeño cluster de Hadoop (96cores y 2Tb de HDFS) y las pruebas realizadas nos están convenciendo, y mucho. No va a reemplazar a nuestro gestor de colas, pero va a dar la opción a los investigadores para que en función de cómo es su trabajo, elijan el sistema más eficiente.

    En definitiva, coincido con Enrique en que vamos a oir hablar de Hadoop en los próximos años … y mucho.

  • #005
    Gorki - 9 noviembre 2011 - 09:04

    Gracias 004 @Antonio SanzComo, como dice Enrique, una de las riquezas de este blog son sus comentaristas. No voy a decir que me he enteerado al 100% por que el tema tiene mas miga que el pan de borona, pero al menos me has encaminado en saber para que vale el dichoso Hadoop. Es lo que en mis tiempos, (mas o menos de la Edad del Bronce Digital) llamábamos Datamining,

    Si bien estuve involucrado en proyectos de calculo en cluster, para la facturación de llamadas telefónicas de móviles, nunca tuve la oportunidad de participar en nada relacionado con manejo de datos no estructurados en bases de datos gigantescas. En España quien nás investigaba en ese campo, era Meta4, en temas relacionados con los Recursos Humanos, buscando respuestas a preguntas del tipo ¿quien sabe de tal cliente? o ¿Cual es el idóneo para trabajar en el equipo de tal proyecto?.

  • #006
    antoni - 9 noviembre 2011 - 11:41

    #3 Antonio Sanz

    Gracias por la explicación… ahora me queda claro en que se distingue Hadoop y grid…

  • #007
    Antonio Sanz - 9 noviembre 2011 - 12:22

    @Gorki , a día de hoy la verdad es que es realmente fácil meterse en temas de programación distribuída / HPC / Grid / Datamining … Con todo el tema de cloud computing tú puedes alquilarte una cantidad ingente de servidores (la gente de CycleComputing montó en Amazon EC2 un cluster de 30.000 cores a un coste de unos 1000$/h) y gastar solo lo que usas.

    Es más, Amazon ya te ofrece un servicio de Hadoop integrado llamado «Elastic MapReduce» en el que lo tienes todo ya montado … más fácil, imposible.

    Yo creo que cada vez hay más herramientas que nos permiten hacer más cosas. Tan solo hay que saber qué herramienta hay que usar para cada tipo de problema (como el chiste del ingeniero jubilado que al reparar una máquina poniendo una X en la pieza que falla y en la factura dice «1€ por la tiza, y 9999€ por saber dónde ponerla).

    Tiempos muy interesantes para todos aquellos metidos en sistemas … ;-)

  • #008
    jean rodriguez - 9 noviembre 2011 - 14:50

    muchas gracias enrique por tu valioso aporte al conocimiento.

  • #009
    Dani Santi - 9 noviembre 2011 - 17:02

    Gracias por esta definición:
    «¿Cuál es la importancia de Hadoop? Básicamente, que permite desarrollar tareas muy intensivas de computación masiva, dividiéndolas en pequeñas piezas y distribuyéndolas en un conjunto todo lo grande que se quiera de máquinas»
    Me la guardo, porque será muy muy útil, cuando tenga que hablar con profesionales no técnicos, y algunos técnicos, y explicar de una manera sencilla estos términos tan complicados.

  • #010
    Santos - 9 noviembre 2011 - 17:38

    «¿Cuál es la importancia de Hadoop? Básicamente, que permite desarrollar tareas muy intensivas de computación masiva, dividiéndolas en pequeñas piezas y distribuyéndolas en un conjunto todo lo grande que se quiera…»

    Interesante tema y con muchas implicancias.

    http://www.revistasic.com/revista92/sf05_92.htm
    http://www.cs.wisc.edu/condor/

  • #011
    Gorki - 9 noviembre 2011 - 19:36

    El problema de Meta4, más que encontrar los trozos referidos a un cliente, producto, o lo que fuer,a era que la máquina diera una respuesta coherente a partir de esos trozos. No era tanto encontrarlos, como qué hacer con aquel batiburrillo de datos no estructurados una vez que los habías extraídos.

    La teoría era muy bonita, como ahora las empresas utilizan muchos empleados no fijos, colaboradores externos, becarios, eventuales, personal de ATT’s etc. necesitamos que los conocimientos de la empresa adquiridos durante su trabajo en la compañía no se pierdan, sino que perduren cuando ellos se marchen. Así que recolectamos su conocimiento en todos los rastros que quedan de su trabajo, emails, notas internas, documentos que elabora, como partes de trabajo o las llamadas hechas desde la oficina (nada que ver con espiarlos, solo interesaba lo profesional, no lo particular), y ese conocimiento lo recuperamos cuando haga falta para informar a otro que más adelante haga su trabajo.

    La teoría es maravillosa y muy adecuada a los tiempos que corren, el software, caro pero posible. El problema es como dar coherencia a datos tan dispersos.

    Cuando yo perdi la vista a Meta4. no habían hecho progresos apreciable y los gastos en I+D eran elevadisimos ignoro si despues solucionaron los problemas que tenían planteados.

    A veces el problema no es informático sino conceptual, de comprensión de los datos.
    – Aquí tenemos los datos – ¡Bien!
    – Y ¿Qué se desprende de ellos? – Pues,…. ¡bueno!… no se decirte, pero aquí está la respuesta a todo.

    No solo pasa en esto, muchos CRM producen el mismo efecto, dan mucha información, puntual y muy precisa, pero solo te dice si la empresa va bien o mal, el jodido balance contable de toda la vida.

  • #012
    bb - 9 noviembre 2011 - 21:20

    La solución para analizar una enormidad de datos es una inteligencia artificial provista de una enorme potencia de cálculo, una super botnet mas lista que los humanos capaz de cruzar datos y extraer siempre conclusiones útiles.

    Creo recordar haber leído en alguna novela futurista (o quizás lo he soñado) un recuerdo de un pasado (futuro) en el que los gobiernos, comenzando por los mercados financieros, eran dirigidos por este tipo de macro inteligencias artificiales distribuidas y ubicadas en cientos de millones de ordenadores de los propios gobernados.

    Lo curioso: http://www.pruebayerror.net/2011/09/la-proxima-ola-de-botnets-podria-descender-de-los-cielos/

  • #013
    Carlos Fabuel - 16 octubre 2012 - 09:57

    Hadoop parece ser el futuro hecho realidad. Con tantas fuentes de datos necesitamos varias vidas para sacar lo primordial. Lo interesante será ver las mejoras en el acceso a los datos de las grandes organizaciones.

Dejar un Comentario

Los comentarios están cerrados