Hadoop barcamp 2011

1,153 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,153
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
50
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hadoop barcamp 2011

  1. 1. Hadoop y Mapreduce (y otras yerbas) Cómo analizar petabytes de datos y no morir en el intentodomingo 6 de noviembre de 2011
  2. 2. Quién soy yo? • Ezequiel Golub • Desarrollador en Smowtion • Antes en wixi.com • Hace 3 meses implementamos Hadoop y estamos contentos!domingo 6 de noviembre de 2011
  3. 3. Primero lo primerodomingo 6 de noviembre de 2011
  4. 4. Qué es Hadoop? • Framework para aplicaciones distribuidas en miles de nodos • Ahora familia de productos, pero en su core son 2: • HDFS • Map/Reduce • Proyecto de apache.orgdomingo 6 de noviembre de 2011
  5. 5. Historia • Inspirado por los papers de Google Mapreduce y bigtable del 2004 • Creado por Doug Cutting para ser usado por Nutch, un buscador de codigo libre • BTW, Doug Cutting invento Lucene • Hadoop era el elefante de juguete de su hijodomingo 6 de noviembre de 2011
  6. 6. Limitaciones de RDBMS • Datasets de petabytes • no escalan horizontalmente • Escalar horizontalmente = chau ACID • Particionar y shardear es dificil. • Rendimiento de lecturas o escrituras: Elegí una. • Usar hardware especializado = $$$!!domingo 6 de noviembre de 2011
  7. 7. Por qué Hadoop? • Escalabilidad horizontal • Confiabilidad • Apoyo de comunidad • Map/Reduce • Orientado a procesos batch para datos “grandes” • AWSdomingo 6 de noviembre de 2011
  8. 8. Qué no es Hadoop? • Una base de datos relacional • Un sistema de almacenamiento de datos estructurado • Online (Con excepciones!)domingo 6 de noviembre de 2011
  9. 9. Quienes lo usan?domingo 6 de noviembre de 2011
  10. 10. Cuándo usar Hadoop? • Demasiados datos para que entren en algun tipo de datastore comodamente • Datos desestructurados • Y necesitas analizarlos! • Y necesitas alta disponibilidad! • Suficientes datos para que analizarlos en una sola maquina sea dificildomingo 6 de noviembre de 2011
  11. 11. Donde se usa? • Log File & Web Analytics • Ad Targeting • Scientific Applications • Financial Analysis • Search • Natural Language Processing • Image processing • Data warehousingdomingo 6 de noviembre de 2011
  12. 12. Componentesdomingo 6 de noviembre de 2011
  13. 13. HDFS • Sistema de archivos distribuido, redundante y con alta disponibilidad. • Soporta archivos muy grandes. • Pensado para commodity hardware • Acceso streaming de baja latencia y alta transferencia.domingo 6 de noviembre de 2011
  14. 14. HDFS • Integridad y compresión soportadas nativamente • N copias de cada bloque del archivo distribuidas • 1 namenode para N datanodes • Location aware • Interfaz tipo linux (mv, cp, rm, ls, etc)domingo 6 de noviembre de 2011
  15. 15. Ventajas • Tolerancia a los fallos • Autoregenerativo • Escalable • Confiabilidad • Soportedomingo 6 de noviembre de 2011
  16. 16. HDFS • Mantiene metadata • Ubicación de bloques Backupnode Namenode • No tiene los datos! • SPOF Datanode Datanode Datanode • Contiene los datos • No tiene metadata • Sirve los datos a los clientesdomingo 6 de noviembre de 2011
  17. 17. Leer Ubicación de los Cliente bloques, metada Namenode Backupnode HDFS Transferencia de datos Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  18. 18. Escribir {node1,node2, Cliente node3} foo.bar HDFS Namenode Backupnode Transferencia de datos Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  19. 19. Escribir {node1,node2, Cliente node4} foo.bar HDFS Namenode Backupnode Transferencia de datos Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  20. 20. Escribir {node2,node3, Cliente node4} foo.bar HDFS Namenode Backupnode Transferencia de datos Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  21. 21. Escribir {node1,node3, Cliente node4} foo.bar HDFS Namenode Backupnode Transferencia de datos Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  22. 22. Fault tolerance Namenode Backupnode El namenode detecta un datanode caido Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  23. 23. Fault tolerance Namenode Backupnode El namenode releva los bloques perdidos y los recupera de los nodos sanos, manteniendo el nivel de replicacion Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  24. 24. Fault tolerance Namenode Backupnode El namenode releva los bloques perdidos y los recupera de los nodos sanos, manteniendo el nivel de replicacion Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  25. 25. Fault tolerance Namenode Backupnode El namenode releva los bloques perdidos y los recupera de los nodos sanos, manteniendo el nivel de replicacion Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  26. 26. Escalamiento horizontal dinamico y rebalanceo Namenode Backupnode Se agrega un nuevo datanode al cluster Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  27. 27. Escalamiento horizontal dinamico y rebalanceo Namenode Backupnode El namenode rebalancea el nuevo cluster, removiendo las copias extras que no se necesitan Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  28. 28. Escalamiento horizontal dinamico y rebalanceo Namenode Backupnode El namenode rebalancea el nuevo cluster, removiendo las copias extras que no se necesitan Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  29. 29. Escalamiento horizontal dinamico y rebalanceo Namenode Backupnode El namenode rebalancea el nuevo cluster, removiendo las copias extras que no se necesitan Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  30. 30. Escalamiento horizontal dinamico y rebalanceo Namenode Backupnode El namenode rebalancea el nuevo cluster, removiendo las copias extras que no se necesitan Datanode Datanode Datanode Datanodedomingo 6 de noviembre de 2011
  31. 31. Map/Reduce • Paradigma de programación distribuida • Basada en un paper de Google (http://bit.ly/ gXZbsk) • Modelada a partir de las ideas de programación funcional • Distribuible en N nodos • map() -> reduce() • La etapa de reduce se inicia cuando todos los mappers terminan.domingo 6 de noviembre de 2011
  32. 32. Map/Reduce • Dos pasos secuenciales • Map: Toma todas las lineas de un input, y por cada una, las procesa y devuelve un par de key valor • Reduce: Recibe secuencialmente un key valor, los procesa y emite un resultado (ej: otro k-v)domingo 6 de noviembre de 2011
  33. 33. wc.py M/R: WC en Python import hadoopy ** usando el modulo Hadoopy para usar python def mapper(key, value): con Hadoop! for word in value.split(): yield word, 1 def reducer(key, values): accum = 0 for count in values: accum += int(count) yield key, accum if __name__ == "__main__": hadoopy.run(mapper, reducer, doc=__doc__) Probandolo localmente! $ echo "a b a a b c" | python wc.py map | sort | python wc.py reduce a 3 b 2 c 1domingo 6 de noviembre de 2011
  34. 34. Ejemplo: wordcount {‘foo’:12, <arch1.part1> mapper ‘bar’:13, ‘baz’:19} {‘foo’:[12,33,1,55]} count() Reducer sum() {‘foo’:33, <arch1.part2> mapper ‘bar’:23, ‘baz’:42} {‘bar’:[13,23,0,43]} count() Ordenar {‘foo’:101, Muchos y Reducer ‘bar’:79, archivos agrupar ‘baz’:218} por key sum() {‘foo’:1, <arch2.parte1> mapper ‘bar’:0, ‘baz’:99} {‘baz’:[19,42,99,65]} count() Reducer sum() {‘foo’:55, <arch2.parte2> mapper ‘bar’:43, ‘baz’:65} count()domingo 6 de noviembre de 2011
  35. 35. M/R en Hadoop • Las tareas de M/R son entregadas como un “job” • Los “jobs” se asignan a una cola especifica de trabajo • Los jobs son “rack-aware”: aprovecharse del “data locality” • Cada “job” es divido en N “tasks” • Streaming: No usar Java para M/R • Las tareas que fallen son reiniciadas automaticamente.domingo 6 de noviembre de 2011
  36. 36. Esquema conceptual Cliente M/R Cliente M/R Jobtracker Cliente M/R TaskTracker TaskTracker TaskTracker TaskTracker Datos temporales en HDFSdomingo 6 de noviembre de 2011
  37. 37. Fase inicial Envia jobs Cliente M/R Cliente M/R Jobtracker Cliente M/R Los maps() son asignados a los TaskTracker Cada mapper es (teniendo en cuenta la localidad de la data) ejecutado en una JVM TaskTracker TaskTracker TaskTracker TaskTracker mapper mapper mapper mapper Lee los archivos de input y graba los archivos intermedios Datos temporales en HDFSdomingo 6 de noviembre de 2011
  38. 38. Fase reduce Envia jobs Envia “jobs” Cliente M/R Cliente M/R Jobtracker Cliente M/R Comienza la fase de Reduce TaskTracker TaskTracker TaskTracker TaskTracker reducer reducer reducer reducer Lee los archivos temporales y graba los resultados Datos temporales en HDFSdomingo 6 de noviembre de 2011
  39. 39. M/R: Implementación • M/R es excelente para los problemas donde los ‘sub-problemas’ no son interdepientes • Nada se comparte entre mappers y reducers, ni siquiera si corren en el mismo nodo • X ej: La salida de un mapper no puede depender de la salida o comunicación con otro mapperdomingo 6 de noviembre de 2011
  40. 40. HBASE • Key/Value store montado sobre HDFS • Rapido (Finalmente!) • Soporta range scan de keys • Soporta nocion de tablas, pero usando column families para agrupar columnas • Soporta M/R sobre las tablasdomingo 6 de noviembre de 2011
  41. 41. HBASE no es • Un reemplazo de un RDBMS • Un reemplazo de un datawarehouse • No Joins, no query engine, no datatypes, no sql • No acid • No Schema • No es excelente para guardar datos pequeños • No es excelente para almacenar grandes datos binariosdomingo 6 de noviembre de 2011
  42. 42. HBASE es • Excelente para escrituras rapidas/streaming • Tolerante a fallos • Buena escalando horizontalmente de manera lineal • Eficiente manejando billones de filas y millones de columnas • Buena manteniendo la historia de una fila • Autobalance • Excelente para data no normalizada • Un complemento excelente entre la RDBMS y el Datawarehouse (Hadoop)domingo 6 de noviembre de 2011
  43. 43. HBASE • Escrito en Java • Almacenamiento orientado a columnas = schemas flexibles • Se puede alterar el schema simplemente agregando el nombre de la columna. • No hay migraciones de schema! • Cada columna tiene un timestamp asociado • La misma columna con el timestamp más reciente ganadomingo 6 de noviembre de 2011
  44. 44. Hive • Simula datos estructurados usando archivos en HDFS • HiveQL: Query language similar a SQL • Traduce HiveQL a Map/Reduce • O sea: No es realtime, no reemplaza RDBMS • Auto-particionadodomingo 6 de noviembre de 2011
  45. 45. Ejemplo de Hive hive> select key, count(1) from kv1 where key > 100 group by key; vs. $ cat > /tmp/reducer.sh uniq -c | awk {print $2"t"$1}‘ $ cat > /tmp/map.sh awk -F 001 {if($1 > 100) print $1}‘ $ bin/hadoop jar contrib/hadoop-0.19.2-dev-streaming.jar - input /user/hive/warehouse/kv1 -mapper map.sh -file /tmp/ reducer.sh -file /tmp/map.sh -reducer reducer.sh -output /tmp/ largekey -numReduceTasks 1 $ bin/hadoop dfs –cat /tmp/largekey/part*domingo 6 de noviembre de 2011
  46. 46. Otros componentes Libreria para implementar machine learning sobre hadoop Zookeeper: Servicio que mantiene un K-V store consistente usando N nodos. Se usa para coordinar servicios distribuidos HUE: Hadoop User Experience. Una linda WEB-UI sobre Hadoop.domingo 6 de noviembre de 2011
  47. 47. En Smowtion? • 250.000.000 de hits x dia • Solucion con PHP + MySQL = • Lo reemplazamos por algo asi:domingo 6 de noviembre de 2011
  48. 48. Cómo seguir? • Cloudera.com • Cloudera.com • Hadoop.apache.org • IRC: #hadoop en freenode.org • http://developer.yahoo.com/hadoop/ tutorial/domingo 6 de noviembre de 2011
  49. 49. Gracias! • Twitter: @ezegolub • egolub@smowtion.com • http://www.linkedin.com/in/ezegolubdomingo 6 de noviembre de 2011
  50. 50. Trabajá en Smowtion • Estamos buscando perfiles tecnicos (Developers/SysAdmins) • Nos gustan los problemas dificiles • Nos gustan las tecnologias nuevas • Buen ambiente de trabajo y todo eso • jobs@smowtion.comdomingo 6 de noviembre de 2011

×