Introducción a Hadoop

1,451 views
1,258 views

Published on

Introducción a Hadoop v1 y v2. Descripción general de sus componentes HDFS y YARN.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,451
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
96
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introducción a Hadoop

  1. 1. Introducción a Hadoop Tomás Fernández Pena Máster en Computación de Altas Prestaciones Universidade de Santiago de Compostela Computación en Sistemas Distribuidos Material bajo licencia Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) citius.usc.es
  2. 2. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  3. 3. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  4. 4. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Hadoop Implementación open-source de MapReduce Procesamiento de enormes cantidades de datos en grandes clusters de hardware barato (commodity clusters) Escala: petabytes de datos en miles de nodos Introducción a Hadoop, CSD 1/36
  5. 5. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Características de Hadoop Incluye Almacenamiento: HDFS Procesamiento: MapReduce (Hadoop v1), YARN (Hadoop v2) Ventajas Bajo coste: clusters baratos o cloud Facilidad de uso Tolerancia a fallos Introducción a Hadoop, CSD 2/36
  6. 6. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Características de Hadoop Incluye Almacenamiento: HDFS Procesamiento: MapReduce (Hadoop v1), YARN (Hadoop v2) Ventajas Bajo coste: clusters baratos o cloud Facilidad de uso Tolerancia a fallos Introducción a Hadoop, CSD 2/36
  7. 7. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  8. 8. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Instalación Instalación relativamente simple: aplicación Java Paquete fuente: hadoop.apache.org/releases.html Sistemas preconfigurados proporcionados por empresas como Cloudera (www.cloudera.com), MapR (www.mapr.com) o Hortonworks (hortonworks.com), o más específicas como la distribución de Intel o IBM InfoSphere BigInsight Modos de funcionamiento: Standalone: todo en un nodo, para pruebas Pseudodistribuido: funciona como una instalación completa, pero en un solo nodo Totalmente distribuido Introducción a Hadoop, CSD 3/36
  9. 9. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Instalación Instalación relativamente simple: aplicación Java Paquete fuente: hadoop.apache.org/releases.html Sistemas preconfigurados proporcionados por empresas como Cloudera (www.cloudera.com), MapR (www.mapr.com) o Hortonworks (hortonworks.com), o más específicas como la distribución de Intel o IBM InfoSphere BigInsight Modos de funcionamiento: Standalone: todo en un nodo, para pruebas Pseudodistribuido: funciona como una instalación completa, pero en un solo nodo Totalmente distribuido Introducción a Hadoop, CSD 3/36
  10. 10. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Arquitectura Hadoop v1 Introducción a Hadoop, CSD 4/36
  11. 11. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Procesos Cuatro procesos (dæmons) principales: En el master: namenode y jobtracker En los workers: datanode y tasktracker namenode y datanodes: sistema HDFS jobtracker y tasktrackers: trabajos MapReduce Introducción a Hadoop, CSD 5/36
  12. 12. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Hadoop v2 Este esquema se ha modificado en Hadoop 2.0 con YARN (Yet Another Resource Negociator) (HSFS se mantiene) separa las dos funcionalidades del Jobtracker (gestión de recursos y job-scheduling/monitorización) en demonios separados Resource manager (RM): planificador general Node managers (NM): monitorización, uno por nodo Application masters (AM): gestión de aplicaciones, uno por aplicación permite que diferentes tipos de aplicaciones (no solo MapReduce) se ejecuten en el cluster Introducción a Hadoop, CSD 6/36
  13. 13. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Arquitectura Hadoop v2 Introducción a Hadoop, CSD 7/36
  14. 14. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Modelo Hadoop v1 HDFS Almacenamiento distribuido MapReduce Procesamiento distribuidoHBase Basededatos no-relacional Pig Scripts Hive Query Otrosproyectos Oozie,HCatalog,Sqoop, ZooKeeper,Mahout,... Introducción a Hadoop, CSD 8/36
  15. 15. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Modelo Hadoop v2 HDFS Almacenamiento distribuido MapReduce Procesamiento distribuidoHBase Basededatos no-relacional Pig Scripts Hive Query Otrosproyectos Oozie,HCatalog,Sqoop, ZooKeeper,Mahout,... YARN Planificador y negociador de recursos Otrosproyectos YARN Introducción a Hadoop, CSD 9/36
  16. 16. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount El libro Introducción a Hadoop, CSD 10/36
  17. 17. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  18. 18. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount HDFS: Hadoop Distributed File System Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS, KFS, S3,. . . ) Se recomienda HDFS: Hadoop Distributed File System HDFS: Ventajas Diseñado para almacenar ficheros muy grandes en commodity hardware Elevado ancho de banda Fiabilidad mediante replicacion HDFS: Inconvenientes Elevada latencia Poco eficiente con muchos ficheros pequeños Modificaciones siempre al final de los ficheros No permite múltiples escritores (modelo single-writer, multiple-readers Introducción a Hadoop, CSD 11/36
  19. 19. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount HDFS: Hadoop Distributed File System Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS, KFS, S3,. . . ) Se recomienda HDFS: Hadoop Distributed File System HDFS: Ventajas Diseñado para almacenar ficheros muy grandes en commodity hardware Elevado ancho de banda Fiabilidad mediante replicacion HDFS: Inconvenientes Elevada latencia Poco eficiente con muchos ficheros pequeños Modificaciones siempre al final de los ficheros No permite múltiples escritores (modelo single-writer, multiple-readers Introducción a Hadoop, CSD 11/36
  20. 20. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount HDFS: Hadoop Distributed File System Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS, KFS, S3,. . . ) Se recomienda HDFS: Hadoop Distributed File System HDFS: Ventajas Diseñado para almacenar ficheros muy grandes en commodity hardware Elevado ancho de banda Fiabilidad mediante replicacion HDFS: Inconvenientes Elevada latencia Poco eficiente con muchos ficheros pequeños Modificaciones siempre al final de los ficheros No permite múltiples escritores (modelo single-writer, multiple-readers Introducción a Hadoop, CSD 11/36
  21. 21. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Conceptos de HDFS Namenode Mantiene la información (metadatos) de los ficheros y bloques que residen en el HDFS Datanodes Mantienen los datos especificados en el fichero $HADOOP_INSTALL/hadoop/conf/slaves Bloques Por defecto 128 MB (64 MB en v1) bloques pequeños aumentan el paralelismo (un bloque por Map) bloques más grandes reducen la carga del Namenode Introducción a Hadoop, CSD 12/36
  22. 22. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Conceptos de HDFS (cont.) Secondary namenodes Mantienen checkpoints del Namenode debería ejecutarse en un sistema diferente del Namenode especificados en el fichero $HADOOP_INSTALL/hadoop/conf/masters Introducción a Hadoop, CSD 13/36
  23. 23. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Lectura de datos en HDFS Cliente HDFS Distributed FileSystem 1: open Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode Introducción a Hadoop, CSD 14/36
  24. 24. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Lectura de datos en HDFS Cliente HDFS Distributed FileSystem FSData InputStream 1: open Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: obtiene la localización de los bloques Introducción a Hadoop, CSD 14/36
  25. 25. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Lectura de datos en HDFS Cliente HDFS Distributed FileSystem FSData InputStream 1: open 3: read Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: obtiene la localización de los bloques Introducción a Hadoop, CSD 14/36
  26. 26. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Lectura de datos en HDFS Cliente HDFS Distributed FileSystem FSData InputStream 1: open 3: read Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: obtiene la localización de los bloques 4: read Introducción a Hadoop, CSD 14/36
  27. 27. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Lectura de datos en HDFS Cliente HDFS Distributed FileSystem FSData InputStream 1: open 3: read Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: obtiene la localización de los bloques 4: read 5: read Introducción a Hadoop, CSD 14/36
  28. 28. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Lectura de datos en HDFS Cliente HDFS Distributed FileSystem FSData InputStream 1: open 3: read 6: close Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: obtiene la localización de los bloques 4: read 5: read Introducción a Hadoop, CSD 14/36
  29. 29. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem 1: create Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  30. 30. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem FSData OutputStream 1: create Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: create Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  31. 31. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem FSData OutputStream 1: create 3: write Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: create Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  32. 32. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem FSData OutputStream 1: create 3: write Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: create 4: write packet 4 4 Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  33. 33. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem FSData OutputStream 1: create 3: write Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: create 4: write packet 5: ack packet 5 5 4 4 Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  34. 34. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem FSData OutputStream 1: create 3: write 6: close Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: create 4: write packet 5: ack packet 5 5 4 4 Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  35. 35. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Escritura de datos en HDFS Cliente HDFS Distributed FileSystem FSData OutputStream 1: create 3: write 6: close Nodo cliente JVM cliente Namenode Namenode Datanode Datanode Datanode Datanode Datanode Datanode 2: create 4: write packet 5: ack packet 7: complete 5 5 4 4 Pipeline de Datanodes Introducción a Hadoop, CSD 15/36
  36. 36. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Localización de las replicas Política por defecto: 1ª réplica: en el nodo del cliente o en un nodo al azar 2ª réplica: en un rack diferente de la primera (elegido al azar) 3ª réplica: en el mismo rack que la 2ª, pero en otro nodo Otras réplicas: al azar (se intenta evitar colocar demasiadas réplicas en el mismo rack) DataCenter rack 1 rack 2 nodo Desde la versión 0.21: políticas “enchufables” Introducción a Hadoop, CSD 16/36
  37. 37. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Localización de las replicas Política por defecto: 1ª réplica: en el nodo del cliente o en un nodo al azar 2ª réplica: en un rack diferente de la primera (elegido al azar) 3ª réplica: en el mismo rack que la 2ª, pero en otro nodo Otras réplicas: al azar (se intenta evitar colocar demasiadas réplicas en el mismo rack) DataCenter rack 1 rack 2 nodo Desde la versión 0.21: políticas “enchufables” Introducción a Hadoop, CSD 16/36
  38. 38. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Modelo de coherencia Para aumentar el rendimiento, HDFS no es POSIX compliant en la escritura de ficheros Después de crear un fichero, este es visible es el espacio de nombres del filesystem, pero, no se garantiza que sus datos sean visibles Forzar la visibilidad Cerrar el stream de salida con close() Utilizar el método sync() en Hadoop v1, o hflush() en v2, de la clase FSDataOutputStream Introducción a Hadoop, CSD 17/36
  39. 39. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Propiedades configurables Múltiples propiedades configurables (fichero hdfs-site.xml) dfs.namenode.name.dir: lista (separada por comas) de directorios donde el namenode guarda sus metadatos (una copia en cada directorio), por defecto file://$hadoop.tmp.dir/dfs/name dfs.datanode.data.dir: lista (separada por comas) de directorios donde los datanodes guarda los bloques de datos (cada bloque en sólo uno de los directorios), por defecto file://$hadoop.tmp.dir/dfs/data dfs.namenode.checkpoint.dir: lista (separada por comas) de directorios donde el secondarynamenode guarda los checkpoints (una copia en cada directorio), por defecto file://$hadoop.tmp.dir/dfs/namesecondary dfs.blocksize: tamaño de bloque para nuevos ficheros (por defecto, 128MB) dfs.replication: nº de réplicas por bloque, por defecto 3 Introducción a Hadoop, CSD 18/36
  40. 40. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Interfaz con HDFS Varias interfaces: 1. Interfaz en línea de comandos: comando hadoop fs 2. Interfaz web 3. Interfaz Java Interfaz en línea de comandos: Permite cargar, descargar y acceder a los ficheros HDFS desde línea de comandos Ayuda: hdfs dfs -help Introducción a Hadoop, CSD 19/36
  41. 41. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Interfaz con HDFS Varias interfaces: 1. Interfaz en línea de comandos: comando hadoop fs 2. Interfaz web 3. Interfaz Java Interfaz en línea de comandos: Permite cargar, descargar y acceder a los ficheros HDFS desde línea de comandos Ayuda: hdfs dfs -help Introducción a Hadoop, CSD 19/36
  42. 42. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Problemas con el Namenode El Namenode es un single point of failure (SPOF) Si falla es imposible acceder a los datos Posibilidad de recuperación a partir de los checkpoints Conveniente guardar varias réplicas de los datos del namenode (RAID, indicar en dfs.name.dir directorios en diferentes máquinas, etc) Mejoras en la versión 2.0 HDFS High-Availability HDFS Federation Introducción a Hadoop, CSD 20/36
  43. 43. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount HDFS High-Availability Un par de Namenodes en configuración activo-standby si falla el Namenode activo, el otro ocupa su lugar Consideraciones Los Namenodes deben usar un almacenamiento compartido de alta disponibilidad Los Datanodes deben enviar informes de bloques a los dos Namenodes (el block mapping va en memoria, no en disco) Los Clientes deben manejar el fallo del Namenode de forma transparente Más información: hadoop.apache.org/docs/current/hadoop-project- dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html, hadoop.apache.org/docs/current/hadoop-project-dist/hadoop- hdfs/HDFSHighAvailabilityWithNFS.html Introducción a Hadoop, CSD 21/36
  44. 44. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount HDFS Federation El Namenode mantiene, en memoria, referencias a cada fichero y bloque en el filesystem problemas de escalabilidad HDF Federation, introducida en la versión 2.0 Permite usar varios Namenodes Cada uno gestiona una porción del espacio de nombres del filesystem Los Namenodes no se coordinan entre sí Cada Datanodes se registra con todos los Namenodes Más información: hadoop.apache.org/docs/current/hadoop-project- dist/hadoop-hdfs/Federation.html Introducción a Hadoop, CSD 22/36
  45. 45. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  46. 46. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Terminología MapReduce en Hadoop v1 Jobtracker Coordina todos los trabajos Envía tareas a los tasktrackers Mantiene información sobre el progreso de cada tarea Tasktrackers Realizan las tareas Envían informes de progreso al Jobtracker Splits Trozos en los que se divide la entrada a una tarea MapReduce Normalmente del tamaño de 1 bloque (64 MB) Introducción a Hadoop, CSD 23/36
  47. 47. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Elementos de control Hadoop v1 Fuente: A. Murthy, V. Vavilapalli, “Apache Hadoop YARN”, Addison-Wesley, marzo 2014Introducción a Hadoop, CSD 24/36
  48. 48. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  49. 49. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount YARN: the Data Operating System Un único Jobtracker es un cuello de botella en grandes clusters (más de 4000 nodos) YARN (Yet Another Resource Negociator): nueva arquitectura MapReduce Característica principal: separa las dos funcionalidades del Jobtracker (gestión de recursos y job-scheduling/monitorización) en demonios separados: resource manager, node managers y application masters MapReduce es una de los tipos de aplicación que pueden correr en YARN Más información: hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site wiki.apache.org/hadoop/PoweredByYarn Introducción a Hadoop, CSD 25/36
  50. 50. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount YARN Fuente: www.slideshare.net/Hadoop_Summit/apache-hadoop-yarn-present-and-future Introducción a Hadoop, CSD 26/36
  51. 51. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Demonios YARN (I) Resource manager arbitra los recursos entre las aplicaciones en el sistema demonio global, obtiene datos del estado del cluster de los node managers dos componentes: Scheduler: planifica aplicaciones en base a sus requerimientos de recusos (se basa en el concepto de Container de recursos) Applications Manager: acepta trabajos, negocia containers y gestiona fallos de los Application Masters Node managers uno por nodo monitorizan los recursos del cluster (containers) Introducción a Hadoop, CSD 27/36
  52. 52. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Demonios YARN (II) Application masters uno por aplicación gestiona el ciclo de vida de la aplicación solicita recursos (containers) al Resource manager y ejecuta la aplicación en esos containers trabaja con los Node managers para ejecutar y monitorizar las tareas permiten que diferentes tipos de aplicaciones (no solo MapReduce) se ejecuten en el cluster Introducción a Hadoop, CSD 28/36
  53. 53. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Elementos de control YARN Fuente: A. Murthy, V. Vavilapalli, “Apache Hadoop YARN”, Addison-Wesley, marzo 2014 Introducción a Hadoop, CSD 29/36
  54. 54. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Índice 1 Introducción a Hadoop 2 Instalación 3 Introducción a HDFS 4 MapReduce en Hadoop v1 5 MapReduce en YARN 6 Ejemplo MapReduce: WordCount Introducción a Hadoop, CSD
  55. 55. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Ejemplo MapReduce: WordCount El programa WordCount es el ejemplo canónico de MapReduce Veremos una implementación muy simple Definimos tres clases Java Una clase para la operación Map (WordCountMapper) Una clase para la operación Reduce (WordCountReducer) Una clase de control, para inicializar y lanzar el trabajo MapReduce (WordCountDriver) Introducción a Hadoop, CSD 30/36
  56. 56. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Ejemplo MapReduce: WordCount El programa WordCount es el ejemplo canónico de MapReduce Veremos una implementación muy simple Definimos tres clases Java Una clase para la operación Map (WordCountMapper) Una clase para la operación Reduce (WordCountReducer) Una clase de control, para inicializar y lanzar el trabajo MapReduce (WordCountDriver) Introducción a Hadoop, CSD 30/36
  57. 57. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Mapper public class WordCountMapper extends Mapper<LongWritable , Text , Text , IntWritable> { @Override public void map(LongWritable key, Text value , Context ctxt ) throws IOException , InterruptedException { Matcher matcher = pat .matcher(value . toString () ) ; while (matcher. find () ) { word. set (matcher. group () . toLowerCase () ) ; ctxt . write (word, one) ; } } private Text word = new Text () ; private final static IntWritable one = new IntWritable (1) ; private Pattern pat = Pattern . compile( " b[a−zA−Z u00C0−uFFFF]+b" ) ; } Introducción a Hadoop, CSD 31/36
  58. 58. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Reducer public class WordCountReducer extends Reducer<Text , IntWritable , Text , IntWritable> { @Override public void reduce(Text key, Iterable<IntWritable> values , Context ctxt ) throws IOException , InterruptedException { int sum = 0; for ( IntWritable value : values ) { sum += value . get () ; } ctxt . write (key, new IntWritable (sum) ) ; } } Introducción a Hadoop, CSD 32/36
  59. 59. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Driver (I) public class WordCountDriver extends Configured implements Tool { public int run( String [] arg0) throws Exception { i f (arg0 . length != 2) { System. err . printf ( "Usar : %s [ops] <entrada> <salida >n" , getClass () .getSimpleName() ) ; ToolRunner .printGenericCommandUsage(System. err ) ; return −1; } Configuration conf = getConf () ; Job job = Job . getInstance ( conf ) ; job .setJobName( "Word Count" ) ; job . setJarByClass ( getClass () ) ; FileInputFormat . addInputPath( job , new Path(arg0[0]) ) ; FileOutputFormat . setOutputPath( job , new Path(arg0[1]) ) ; Introducción a Hadoop, CSD 33/36
  60. 60. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Driver (II) job . setOutputKeyClass(Text . class ) ; job . setOutputValueClass ( IntWritable . class ) ; job .setNumReduceTasks(1) ; job . setMapperClass(WordCountMapper. class ) ; job . setCombinerClass(WordCountReducer. class ) ; job . setReducerClass(WordCountReducer. class ) ; return ( job . waitForCompletion( true ) ? 0 : −1); } public static void main( String [] args) throws Exception { int exitCode = ToolRunner . run(new WordCountDriver () , args) ; System. exit (exitCode) ; } } Introducción a Hadoop, CSD 34/36
  61. 61. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Compilación y ejecución Aspectos a tener en cuenta: 1. La nueva API (desde 0.20.0) se encuentra en org.apache.hadoop.mapreduce (la antigua en org.apache.hadoop.mapred) 2. Preferiblemente, crear un jar y ejecutarlo con: yarn jar fichero.jar [opciones] Para gestionar las aplicaciones, utilizad: - en general, la opción application del comando yarn (yarn application -help para ver las opciones) - para trabajos MapReduce, la opción job del comando mapred (mapred job -help para ver las opciones) Más información en - hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn- site/YarnCommands.html - hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop- mapreduce-client-core/MapredCommands.html Introducción a Hadoop, CSD 35/36
  62. 62. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Alternativas a Java Hadoop Streaming API que permite crear códigos map-reduce en otros lenguajes Utiliza streams Unix como interfaz entre Hadoop y el código Permite usar cualquier lenguaje que pueda leer de la entrada estándard y escribir en la salida estándard (Python, Ruby, etc.) Hadoop Pipes Interfaz C++ a Hadoop MapReduce Usa sockets como canal de comunicación entre el NodeManager y el proceso C++ que ejecuta el map o el reduce Introducción a Hadoop, CSD 36/36
  63. 63. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount Alternativas a Java Hadoop Streaming API que permite crear códigos map-reduce en otros lenguajes Utiliza streams Unix como interfaz entre Hadoop y el código Permite usar cualquier lenguaje que pueda leer de la entrada estándard y escribir en la salida estándard (Python, Ruby, etc.) Hadoop Pipes Interfaz C++ a Hadoop MapReduce Usa sockets como canal de comunicación entre el NodeManager y el proceso C++ que ejecuta el map o el reduce Introducción a Hadoop, CSD 36/36

×