Hadoop, Cloud y Spring

4,247 views
4,047 views

Published on

Mis slides para la presentación en Spring I/O Madrid 2011 sobre Hadoop, Cloud y Spring

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

No Downloads
Views
Total views
4,247
On SlideShare
0
From Embeds
0
Number of Embeds
166
Actions
Shares
0
Downloads
130
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Hadoop, Cloud y Spring

  1. 1. Hadoop, Cloud y Spring Miguel Ángel Pastor Olivar
  2. 2. Contenidos <ul><li>¿Qué es Hadoop? Motivaciones
  3. 3. Arquitectura básica de Hadoop
  4. 4. Una visión general de Map/Reduce
  5. 5. Ejemplos de aplicación
  6. 6. Hadoop y cloud: combinación perfecta
  7. 7. Incorporando Spring
  8. 8. Proyectos relacionados </li></ul>
  9. 9. ¿Qué es Hadoop ?
  10. 10. Un poco de historia <ul><li>Subproyecto de Nutch (liderado por Doug Cutting)
  11. 11. Google papers: GFS y Map/Reduce framework (2004)
  12. 12. Adoptan los papers anteriores en Nutch
  13. 13. Yahoo! contrata a Doug Cutting (Enero 2006)
  14. 14. Apache top level project (2008) </li><ul><ul><li>Clúster linux +10000 núcleos </li></ul></ul></ul>
  15. 15. Ámbito y retos <ul><li>Infraestructura procesamiento batch distribuido </li><ul><ul><li>Accesible
  16. 16. Robusto
  17. 17. Escalable
  18. 18. Simple </li></ul></ul><li>En la actualidad volúmenes de petabytes </li></ul>
  19. 19. Ámbito y retos <ul><li>Problemática programación distribuida: fallos de red, congestión, fallo de un proceso, sincronización, . . .
  20. 20. ¿Por qué distribuido? Ley de Moore </li></ul>
  21. 21. Enfoque Hadoop <ul><li>Modelo de programación simplificado
  22. 22. Distribución de datos
  23. 23. “ Movimiento ” de los programas </li></ul>Proceso de Mapping Proceso de Reduce Proceso de Mapping Proceso de Mapping Proceso de Reduce Proceso de Reduce
  24. 24. Otros enfoques: RDBMS RDBMS MapReduce Tamaño Datos Gigabytes Petabytes Acceso Batch e interactivo Batch Actualizaciones (R/W)* W1/R* Estructura Estático Dinámico Integridad Alto Bajo Escalado Scale-up Scale-out Programación Declarativa Funcional
  25. 25. Otros enfoques: Grid <ul><li>Manejo grandes volúmenes datos
  26. 26. Sistema de archivos compartido ( SAN )
  27. 27. Intensivo en computación
  28. 28. Messaging Passing Interface (MPI) : bajo nivel </li></ul>
  29. 29. Otros enfoques: Volunteer <ul><li>[email_address]
  30. 30. Donación de tiempo de CPU inactivo
  31. 31. Intensivo en CPU
  32. 32. Modelo de transmisión de datos </li></ul>
  33. 33. Componentes de Hadoop
  34. 34. HDFS <ul><li>Sistema de archivos distribuido (maestro/esclavo)
  35. 35. Diseñado para: </li><ul><ul><li>Archivos muy grandes (petabytes)
  36. 36. Una escritura y múltiples lecturas
  37. 37. Hardware barato </li></ul></ul><li>No diseñado para: </li><ul><ul><li>Bajas latencias en accesos a datos (milisegundos)
  38. 38. Muchos archivos pequeños
  39. 39. Múltiples escritores ni en posiciones arbitrarias </li></ul></ul></ul>
  40. 40. Arquitectura HDFS <ul><li>NameNode </li><ul><ul><li>Maestro del clúster
  41. 41. Gestión sistema de archivos y metadatos </li></ul></ul><li>DataNode </li><ul><ul><li>Almacenan la información
  42. 42. Reportan al NameNode </li></ul></ul><li>SecondaryNameNode </li><ul><ul><li>Snapshots del namenode principal (periódicos) </li></ul></ul></ul>
  43. 43. HDFS: comandos básicos <ul><li>Crear un directorio: hadoop dfs -mkdir path
  44. 44. Añadir archivo: hadoop dfs -put file HdfsPath
  45. 45. Eliminar: hadoop dfs -rmr HdfsPath
  46. 46. Recuperar un archivo: hadoop dfs -get HdfsPath </li></ul>
  47. 47. Otros sistemas de archivos Filesystem URI Implementación Local file fs.LocalFileSystem HDFS hdfs hdfs.DistributedFileSystem HFTP hftp hdfs.HftpFileSystem HSFTP hsftp hdfs.HsftpFileSystem HAR har fs.HarFileSystem KFS kfs fs.kfs.KosmosFileSystem FTP ftp fs.ftp.FTPFileSystem S3 (nativo) s3n fs.s3native.NativeS3FileSystem S3 (bloques) s3 fs.s3.S3FileSystem
  48. 48. Map/Reduce
  49. 49. Conceptos básicos <ul><li>Modelo de programación no convencional
  50. 50. Dos fases: map y reduce </li><ul><ul><li>Pares clave-valor como entradas y salidas (tipos indicados por el desarrollador)
  51. 51. Debemos especificar función de map y reduce </li></ul></ul><li>Inmutabilidad </li></ul>
  52. 52. Flujo de información Datos locales (previamente cargados) Datos intermedios de los mappers (ordenados) Intercambio (aleatorio) de valores Generación de la salida Proceso de Mapping Proceso de Reduce Proceso de Mapping Proceso de Mapping Proceso de Reduce Proceso de Reduce
  53. 53. Funciones combiner <ul><li>Limitaciones ancho de banda del clúster
  54. 54. Minimizar el flujo de transferencia de información
  55. 55. Utilización de funciones combiner </li><ul><ul><li>Se ejecutan sobre la salida del mapper
  56. 56. Deben ser idempotentes
  57. 57. fun(x,y) = fun(fun(x),fun(y)) </li></ul></ul></ul>
  58. 58. Nuestro primer programa: Contando palabras
  59. 59. Map/Reduce en ejecución
  60. 60. JobTracker <ul><li>Maestro de los nodos de computación
  61. 61. Coordinador entre nosotros y Hadoop
  62. 62. Determina el plan de ejecución </li><ul><ul><li>Archivos a procesar
  63. 63. Asignación de tareas a nodos
  64. 64. Monitorización </li></ul></ul><li>Un demonio por clúster </li></ul>
  65. 65. TaskTracker <ul><li>Gestionan la ejecución en los nodos esclavo
  66. 66. Uno por cada esclavo </li><ul><ul><li>Puede crear múltiples máquinas virtuales </li></ul></ul><li>Comunicación con el JobTracker </li><ul><ul><li>Gestión de los errores
  67. 67. Reasignación de tareas fallidas </li></ul></ul></ul>
  68. 68. Mecanismo de ejecución Sistema de archivos compartido Programa Map/Reduce JobClient JobTracker TaskTracker Child Tareas Map o Reduce 1 2 4 3 6 5 7 9 8
  69. 69. Hadoop streaming <ul><li>API escritura funciones en otros lenguajes </li><ul><ul><li>Lectura/escritura de la salida estándar </li></ul></ul><li>Encaja perfectamente en procesado de textos
  70. 70. Ejemplo </li></ul>HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar -input myInputDirs -output myOutputDir -mapper /bin/cat -reducer /bin/wc
  71. 71. Hadoop y cloud: una combinación perfecta
  72. 72. Amazon Web Services (AWS) <ul><li>Clúster hadoop sobre la infraestructura Amazon
  73. 73. Espacio de almacenamiento S3
  74. 74. Nodos de ejecución EC2
  75. 75. Aprovisionamiento dinámico en función de nuestras necesidades </li></ul>
  76. 76. Proceso de trabajo <ul><li>Subir datos al espacio de almacenamiento S3
  77. 77. Subir programa a ejecutar
  78. 78. Configuración del cluster </li><ul><ul><li>Selección de programa a ejecutar
  79. 79. Configuración del número y tipo de nodos </li></ul></ul><li>Ejecución
  80. 80. Análisis de resultados </li></ul>
  81. 81. Un ejemplo práctico
  82. 82. Subida de datos(I)
  83. 83. Subida de datos(II)
  84. 84. Configuración proceso (I)
  85. 85. Configuración proceso (II)
  86. 86. Configuración proceso (III)
  87. 87. Configuración proceso (IV)
  88. 88. Configuración proceso (V)
  89. 89. Configuración proceso (VI)
  90. 90. Configuración proceso (VII)
  91. 91. Usos de Hadoop
  92. 92. Análisis de redes sociales (I) <ul><li>Registros de llamadas telefónicas </li><ul><ul><li>Llamante Llamado C-origen C-destino Fecha Duración </li></ul></ul><li>Intervalos temporales tres meses (aprox) </li><ul><ul><li>Aproximadamente 7000 millones de registros </li></ul></ul><li>Procesamiento batch preparación de datos </li><ul><ul><li>Originirariamente escritos en C++ multihilo </li></ul></ul><li>Modelos estádisticos construcción redes sociales (SAS) </li></ul>
  93. 93. Análisis de redes sociales (II) <ul><li>Cluster hadoop propio </li><ul><ul><li>~ 2 Terabytes de espacio
  94. 94. 16 nodos
  95. 95. Nivel de replicación: 2 (proceso no crítico) </li></ul></ul><li>Uso interno </li><ul><ul><li>Imposibilidad implantación en corporaciones grandes </li></ul></ul></ul>
  96. 96. Real Time Bidding (RTB) <ul><li>Subasta en tiempo real para espacios publicitarios
  97. 97. Construcción de modelos matemáticos que optimicen los mecanismos de puja
  98. 98. Información disponible </li><ul><ul><li>Logs de navegación
  99. 99. Ventanas temporales: dos-tres semanas </li></ul></ul><li>Resultados: entrada a plataforma de bidding </li></ul>
  100. 100. Real Time Bidding (RTB) <ul><li>Cluster Hadoop (pruebas)
  101. 101. Sistema de archivos: S3 (Amazon) </li><ul><ul><li>[30,40] Gigabytes diarios </li></ul></ul><li>Uso de servicios Elastic Map Reduce (Amazon) </li><ul><ul><li>Habitualmente 16 unidades de computación </li></ul></ul><li>Procesamiento batch </li><ul><ul><li>Entrada para modelos estadísticos (SAS) </li></ul></ul></ul>
  102. 102. Más usos <ul><li>Last.fm </li><ul><ul><li>Análisis de logs, generación de gráficos, ... </li></ul></ul><li>Facebook </li><ul><ul><li>http://wiki.apache.org/hadoop/PoweredBy#F </li></ul></ul><li>Hadoop + Hive </li><ul><ul><li>Warehousing </li></ul></ul><li>Nutch
  103. 103. Rackspace </li><ul><ul><li>Procesamiento de logs </li></ul></ul></ul>
  104. 104. Más usos <ul><li>New York Times </li><ul><ul><li>Procesamiento de imágenes </li></ul></ul><li>China mobile </li><ul><ul><li>Data mining </li></ul></ul><li>Stumble Upon </li><ul><ul><li>Recomendaciones de los mejores web sites </li></ul></ul><li>Proyecto ES2 de IBM </li><ul><ul><li>Análisis portales empresariales </li></ul></ul></ul>
  105. 105. Incorporando Spring
  106. 106. Conceptos generales <ul><li>Extensión Spring para la escritura de programas Hadoop
  107. 107. Está en fase inicial de desarrollo </li><ul><ul><li>Inyección de dependencias </li></ul></ul><li>Map/Reduce como POJOs </li><ul><ul><li>Uso de anotaciones
  108. 108. Namespace </li></ul></ul></ul>
  109. 109. Contando palabras (de nuevo); esta vez con Spring
  110. 110. Referencias y temática relacionada
  111. 111. Temas relacionados <ul><li>Hive </li><ul><ul><li>“SQL” sobre Hadoop </li></ul></ul><li>Pig </li><ul><ul><li>Lenguaje de procesado de datos de alto nivel </li></ul></ul><li>Zookeeper </li><ul><ul><li>Servicio de coordinación de procesos distribuidos </li></ul></ul><li>Hbase </li><ul><ul><li>Base de datos distribuida orientada a columnas
  112. 112. Construida sobre HDFS </li></ul></ul></ul>
  113. 113. Referencias <ul><li>Documentación oficial </li><ul><li>http://hadoop.apache.org/common/docs </li></ul><li>Tutorial de Yahoo </li><ul><li>http://developer.yahoo.com/hadoop/tutorial/index.html </li></ul><li>Hadoop The Definitive Guide, O' Really | Yahoo Press
  114. 114. Pro Hadoop, Appress, Jason Venner
  115. 115. Hadoop in Action </li></ul>
  116. 116. Un poco de SPAM
  117. 117. Escalabilidad en español <ul><li>Grupo google
  118. 118. Temática relacionada con la escalabilidad de sistemas software </li><ul><ul><li>No ligado a ninguna tecnología particular </li></ul></ul><li>Objetivo: crear una comunidad sólida </li></ul>
  119. 119. Q&A

×