Los que me siguen en twitter habran visto que las ultimas 2 semanas estuve por USA con un roadshow de Bigdata y Hadoop que organizamos con Globant, me parecio interesante escribir algo sobre el tema, asi que aca va algo, obviamente es muy por arriba, mis disculpas a los que ya saben y busquen algo mas profundo.
Empecemos con una definicion del problema/oportunidad:
La cantidad de datos que se estan acumulando dia a dia crece de una forma impresionante, cada vez tenemos mas y mas gente subiendo datos a internet y redes privadas, y para colmo muchos de esos datos son imagenes y videos.
Solo para tener una idea, youtube dice estar subiendo 24 horas de video cada ………………….. segundo
Adicionalmente esos datos son no-estructurados, los suben individuos, con poca informacion adicional. Segun McKinsey estos datos no-estructurados estan creciendo a una tasa de 72% anual.
A esto hay que sumarle los datos que estan siendo generados por infinidad de sensores y automatismos, lo que en la jerga se esta llamando el: «internet of things», en resumen, nos estamos inundadndo en datos….. help!!!!
Atras de todos estos datos se esconde mucha informacion, util para tomar decisiones, personalizar la experiencia del usuario, mejorar la atencion, etc. (Oportunidad!!!!)
El problema es que las tecnologias no estan prontas para lidiar con esa cantidad de datos, y aunque lo estuvieran, mover tantos datos a traves de la red no es practico, y ahi es donde viene el «eureka» (inicialmente de la gente de Google): «Y si mantenemos esos datos distribuidos por el mundo en servidores baratos y en vez de mover los datos distribuimos los programas para que actuen localmente?».
Esa es la filosofia atras de MapReduce o de Hadoop (la version opensource iniciada por Yahoo):
1. En vez de tener pocos servidores grandes, utilicemos cientos/miles (o millones) de pequenos servidores distribuidos por el mundo
2. En vez de hacer backups, mantengamos n replicas distribuidas en x servidores
3. En vez de procesar los datos desde un lugar central, distribuyamos los programas hacia esos servidores, y que corran en paralelo (Map) y consolidemos los resultados (Reduce).
A modo de ejemplo, digamos que quiero contar cuantas veces aparece cada palabra en un conjunto de documentos:
– Subo los docs al cluster (digamos 50 servidores en Amazon)
– Escribo un programita java (map) que cuenta palabras en un doc, y saca duplets (palabra, numero de apariciones)
– Mando el programa a ejecutarse en los 50 servidores
– hago otro programa que consolide resultados (reduce)
Como pueden ver, si tengo muchos datos y quiero bajar el tiempo de procesamiento a la mitad, lo unico que tengo que hacer es duplicar el numero de servidores, algo que no es tan simple con otras arquitecturas.
El tema no es dificil, pero exige pensar y diseñar los programas de software pensando de otra forma, en terminos de Map y Reduce, o en español simple como paralelizar los tasks para que sea facil de escalar.
Aca va un link a un articulo de techcrunch sobre el tema
Pablo,
Muy buena la introducción al tema. Los modelos de datos relacionales tradicionales no se adaptan a los nuevos volúmenes de datos no estructurados, parece ser que la estrategia «Big Data» de Google pretende resolver el problema.
Sería interesante si pudieras contar mas experiencias en Globant.
Saludos
Federico
Si, en realidad pensaba hablar mas del tema, existe el teorema de CAP http://en.wikipedia.org/wiki/CAP_theorem, que dice que un sistema no puede satisfacer al mismo tiempo las necesidades de Consistencia, Availability y Partition Tolerance.
Los sistemas de Base de datos tradicionales atacan bien la C y la A, y eso esta perfecto para sistemas de tipo transaccional, ahora si lo que quiero hacer es analytics, entonces puedo optar por la A y la P, aceptando que la C sea Eventually Consistent.
Es un tema muy interesante, en unas semanas vamos a hacer el workshop de Hadoop aca en UY, asi que mando el invite cuando sepa cuando
Muy buen tema, sugiero tambien este link
http://developer.yahoo.com/blogs/hadoop/posts/2011/05/eric14-talks-ibmbigdata/
Nosotros estamos empezando a mirar Hadoop con X10 con IBM
Puede tener algo q ver o no, pero te dejo el blog de unos amigos q escriben sobre procesamiento de datos, crawling, etc. http://blog.databigbang.com/
Luego, sobre este tema, a nivel software es muy interesante probar con herramientas del apache software foundation como:
http://activemq.apache.org/
http://camel.apache.org/
http://cxf.apache.org/
Con esos pedazos de software tenes una libertad para probar todo y de todo 😉
Saludos, recientemente estoy entrando en este mundo de MapReduce y necesito de su colaboracion, estoy en seminario de graduacion y mi tema es SandBox, el alcance que me pusieron fue, que un usuario pueda subir videos, mp3 o documentos, existe alguna metodologia especifica o alguna herramienta que me ayude con este requerimiento?
De antemano muchas gracias y disculpen si este blog no es el correcto para este tipo de preguntas.
Gracias