02. Almacenamiento y procesamiento en Hadoop

 

Introducción

Los textos proporcionan una introducción detallada a los componentes fundamentales de Hadoop: HDFS para el almacenamiento distribuido y tolerante a fallos, y YARN como el sistema operativo que gestiona los recursos del clúster para la ejecución de aplicaciones. Se explica cómo HDFS almacena grandes volúmenes de datos dividiéndolos en bloques y replicándolos en múltiples nodos, destacando su arquitectura con el Namenode, Secondary Namenode y Datanodes, así como las operaciones básicas de lectura y escritura. Por otro lado, YARN se presenta como el administrador de recursos, coordinando la ejecución de aplicaciones a través de contenedores gestionados por el ResourceManager y los NodeManager. Finalmente, se introduce MapReduce como un paradigma de programación para el procesamiento paralelo de grandes conjuntos de datos, ilustrando su funcionamiento con las fases de map y reduce mediante un ejemplo práctico y mostrando cómo se implementa y ejecuta un trabajo.

Audio

 

Fundamentos de Hadoop: HDFS, YARN y MapReduce

Principio del formulario

Este documento proporciona un resumen detallado de los temas principales, ideas importantes y hechos relevantes extraídos de los excerpts del documento «BDA02_Almacenamiento y procesamiento en Hadoop.pdf». Se incluyen citas textuales cuando se considera pertinente para enfatizar puntos clave.

1. HDFS (Hadoop Distributed File System)

Esta sección se centra en la capa de almacenamiento de Hadoop, HDFS, abordando su propósito, características, arquitectura y funcionamiento.

Caso Práctico: Roberto, responsable de tecnología de una empresa de transportes, decide implementar Hadoop para modernizar operaciones y extraer valor de los datos de los vehículos para realizar análisis predictivos (mantenimiento, rutas, eficiencia de conducción, monitorización de flota, seguimiento de pedidos). Tras intentos fallidos con bases de datos tradicionales, opta por Hadoop, reconociendo la necesidad de entender su núcleo: HDFS para almacenamiento y YARN para procesamiento.

1.1. Introducción y Características:

HDFS es el sistema de archivos distribuido de Hadoop, diseñado para almacenar grandes volúmenes de datos de manera tolerante a fallos y escalable horizontalmente. Sus principales características son:

¿Qué almacena HDFS?

HDFS almacena ficheros organizados en una estructura jerárquica de directorios, similar a los sistemas de archivos tradicionales (Unix, Linux). Distingue entre mayúsculas y minúsculas en los nombres de los ficheros. Además de los datos, HDFS almacena metadatos asociados a cada fichero, como fecha, tamaño, propietario, grupo y permisos (lectura, escritura, ejecución para propietario, grupo y otros).

¿Cómo consigue tener tolerancia a fallos?

La tolerancia a fallos en HDFS se logra principalmente mediante la división de los ficheros en bloques de gran tamaño (128 MB por defecto) y la replicación de estos bloques en múltiples nodos.

El factor de replicación puede configurarse a nivel de fichero o directorio. Un factor de replicación mayor aumenta la tolerancia a fallos y puede mejorar el rendimiento de lectura, pero incrementa el espacio de almacenamiento utilizado y penaliza el rendimiento de escritura.

1.2. Arquitectura:

La arquitectura de HDFS se compone de tres tipos principales de nodos:

1.3. Funcionamiento (lectura y escritura):

Los datos en HDFS son inmutables, lo que significa que no se pueden modificar directamente. Cualquier cambio implica la creación de un nuevo bloque.

  1. El cliente contacta al Namenode para obtener la lista de bloques que componen el fichero y la ubicación de cada bloque en los Datanodes.
  2. El Namenode devuelve la lista de bloques y los Datanodes que los contienen, ordenados por proximidad al cliente.
  3. El cliente se comunica directamente con los Datanodes para solicitar y recibir los bloques.
  4. El Namenode no participa en la transferencia de datos, evitando convertirse en un cuello de botella.
  1. El cliente contacta al Namenode para solicitar la creación de un fichero, indicando nombre y ruta.
  2. El Namenode realiza verificaciones (permisos, existencia).
  3. El cliente comienza a dividir el fichero en bloques.
  4. Para cada bloque, el cliente contacta al Namenode para obtener la lista de Datanodes donde escribir el bloque.
  5. El Namenode devuelve la lista de Datanodes.
  6. El cliente escribe el bloque en el primer Datanode de la lista.
  7. El primer Datanode se encarga de replicar el bloque a los siguientes Datanodes en la cadena.
  8. Una vez que todas las réplicas se han escrito, se devuelve una confirmación al cliente, que puede proceder con el siguiente bloque.

Al igual que en la lectura, el Namenode solo gestiona la ubicación de los bloques, sin recibir los datos del fichero durante la escritura.

Un factor de replicación alto impacta en la capacidad de almacenamiento total del clúster, reduciéndola significativamente ya que cada dato se almacena múltiples veces. Se suelen aplicar reglas para determinar el factor de replicación óptimo según la criticidad y la frecuencia de acceso de los datos.

1.4. Uso:

HDFS soporta operaciones similares a los sistemas Unix a través de diferentes interfaces:

2. YARN (Yet Another Resource Negotiator)

Esta sección explora la capa de procesamiento de Hadoop, YARN, su rol como gestor de recursos y su arquitectura.

Caso Práctico: Roberto, tras comprender HDFS, se enfoca en la capacidad de procesamiento de Hadoop a través de YARN. Entiende que YARN será la base para ejecutar todas las aplicaciones de procesamiento y análisis de datos. Se compara con el sistema operativo de un ordenador personal, que gestiona la ejecución de aplicaciones utilizando los recursos del hardware (CPU, memoria, disco). En Hadoop, YARN actúa de manera similar, gestionando los recursos del clúster para las aplicaciones que procesan los datos almacenados en HDFS.

2.1. Introducción:

YARN es un gestor de recursos introducido en Hadoop 2 para independizar el procesamiento del almacenamiento, permitiendo que cualquier tipo de aplicación trabaje con los datos de HDFS y facilitando el trabajo de múltiples usuarios en la plataforma. Surgió como respuesta a las limitaciones de la versión anterior de Hadoop, donde MapReduce era el único motor de computación, lo que restringía los tipos de aplicaciones, era ineficiente para respuestas rápidas y tenía una gestión de concurrencia limitada.

YARN realiza las siguientes tareas:

A menudo se describe a YARN como el «Sistema Operativo de Hadoop» debido a su rol en la gestión y coordinación de la ejecución de las aplicaciones utilizando los recursos del clúster.

2.2. Arquitectura:

La arquitectura de YARN se basa en el concepto de contenedor, que es la unidad mínima de recursos de ejecución para las aplicaciones (memoria, cores, disco, red). Las tareas de las aplicaciones YARN se ejecutan dentro de contenedores, y un trabajo puede tener múltiples tareas, cada una en su propio contenedor. YARN asigna contenedores a las tareas cuando arrancan y los libera cuando terminan. El tamaño de los contenedores (memoria, cores) es configurable. La cantidad de aplicaciones que YARN puede ejecutar concurrentemente está limitada por la cantidad total de contenedores disponibles en el clúster.

YARN tiene una arquitectura maestro-esclavo similar a HDFS:

2.3. Funcionamiento:

Cuando un cliente quiere ejecutar una aplicación en YARN, invoca al ResourceManager. La secuencia de ejecución es:

  1. El cliente se comunica con el ResourceManager, enviando el código de la aplicación y los requisitos de recursos.
  2. El ResourceManager (a través del ApplicationsManager y el Scheduler) asigna un contenedor en un NodeManager para ejecutar el ApplicationMaster de la aplicación.
  3. El NodeManager crea el contenedor e inicia el ApplicationMaster.
  4. El ApplicationMaster se comunica con el ResourceManager para solicitar los contenedores necesarios para ejecutar las tareas de la aplicación.
  5. El ApplicationMaster se comunica con los contenedores donde se ejecutan las tareas para controlarlas y notifica el estado de la ejecución al ResourceManager.
  6. El NodeManager también envía información sobre el consumo de recursos y su estado al ResourceManager.

A diferencia de HDFS, los clientes de YARN solo interactúan con el ResourceManager y no necesitan conectividad directa con los nodos worker. El objetivo en Hadoop es que los nodos maestros realicen la menor cantidad de operaciones posible por tarea para facilitar la escalabilidad.

3. MapReduce

Esta sección introduce MapReduce, un modelo de programación y framework de ejecución para el procesamiento paralelo de grandes cantidades de datos en clústeres Hadoop.

Caso Práctico: Roberto comienza a aprender MapReduce como una de las herramientas fundamentales para construir las aplicaciones que su empresa necesita para analizar datos (estilos de conducción, predicción de averías, optimización de rutas). Aunque reconoce que su uso ha disminuido en los últimos años, entiende su importancia como parte del core de Hadoop y como base para otras herramientas.

3.1. Introducción:

Hadoop MapReduce es un framework para escribir aplicaciones que procesan grandes cantidades de datos en paralelo en clústeres de hardware commodity de manera confiable y tolerante a fallos.

Aunque MapReduce es conocido por ser más lento que otros frameworks modernos, su fiabilidad y tolerancia a fallos lo hacen adecuado para procesos pesados por lotes que no requieren tiempos de respuesta cortos.

Es importante entender MapReduce porque muchos frameworks Big Data que se ejecutan sobre Hadoop (como Hive) lo utilizan internamente, por lo que su comprensión es crucial para la depuración y resolución de problemas. Los trabajos de MapReduce se implementan desarrollando un método map y un método reduce utilizando las APIs que ofrece, principalmente en Java, aunque también se pueden usar otros lenguajes como C++, Python o shell scripting a través de Hadoop Streaming o Hadoop Pipes.

3.2. Funcionamiento:

Un trabajo de MapReduce se compone de cinco etapas:

  1. Envío del trabajo: El código de la aplicación se envía al clúster y se distribuye a los nodos.
  2. Fase map: El fichero de entrada se divide en fragmentos por el componente InputFormat. Por cada fragmento, se crea una tarea map que ejecuta la función map desarrollada por el usuario en paralelo en diferentes nodos. La función map procesa cada registro de su fragmento y emite pares clave-valor como resultado parcial.
  3. Fase shuffle: Los resultados parciales de las tareas map se transfieren a los nodos donde se ejecutarán las tareas reduce. Los datos con la misma clave se agrupan.
  4. Fase sort (order): Los datos agrupados por clave se ordenan dentro de cada partición que se enviará a una tarea reduce.
  5. Fase reduce: Las diferentes particiones de datos ordenados se envían a las tareas reduce. La función reduce desarrollada por el usuario procesa todos los valores asociados a una misma clave y produce un resultado final para esa clave.

El programador solo necesita implementar las funciones map y reduce, mientras que las fases de shuffle y sort son gestionadas automáticamente por MapReduce.

Ejemplo: Contar las veces que la cotización de cada empresa ha aumentado a partir de un fichero de cotizaciones.

La potencia de MapReduce reside en su capacidad para procesar grandes volúmenes de datos en paralelo sin necesidad de leerlos secuencialmente en un solo nodo. Sin embargo, requiere un diseño cuidadoso para descomponer los problemas en operaciones map y reduce. Algunos problemas pueden requerir la concatenación de múltiples trabajos MapReduce.

3.3. Uso:

Los trabajos de MapReduce se suelen desarrollar en Java utilizando las librerías de MapReduce. El ejemplo proporcionado en el documento ilustra la implementación de un Mapper (IncreaseQuotationFilterMapper) que filtra las líneas donde la cotización aumenta y emite [Nombre de la empresa, 1], y un Reducer (IntSumReducer) que suma los valores ‘1’ para cada empresa, produciendo el recuento total de incrementos.

El proceso general para ejecutar un trabajo MapReduce incluye:

  1. Desarrollar el código del Mapper y el Reducer.
  2. Empaquetar el código en un fichero .jar.
  3. Ejecutar el trabajo desde la línea de comandos utilizando el comando hadoop jar, especificando la clase principal, el fichero de entrada en HDFS y la ruta de salida en HDFS.

Tanto el Mapper como el Reducer se ejecutan en paralelo en diferentes nodos del clúster.

  1. Guía práctica de MapReduce

Se menciona un documento adjunto («guia_BDA02.zip») y un vídeo que desarrollan ejemplos prácticos de MapReduce, complementando los contenidos teóricos y siendo útiles para resolver la tarea práctica de la unidad.

Este briefing doc resume los conceptos fundamentales de HDFS, YARN y MapReduce presentados en las fuentes proporcionadas, destacando su rol en el ecosistema Hadoop y su importancia para el procesamiento y análisis de grandes volúmenes de datos.

Final del formulario

 

 

Guía de Estudio: Almacenamiento y Procesamiento en Hadoop

Quiz (Respuestas Cortas)

  1. Describe brevemente el propósito de HDFS y menciona dos de sus características principales.

HDFS (Hadoop Distributed File System) es el sistema de almacenamiento distribuido de Hadoop, diseñado para almacenar grandes volúmenes de datos de manera confiable y tolerante a fallos. Dos de sus características principales son su arquitectura distribuida y su optimización para archivos de gran tamaño y operaciones masivas de lectura/escritura.

  1. Explica la función del NameNode en la arquitectura de HDFS y por qué es un componente crítico.

El NameNode actúa como el nodo maestro en HDFS, manteniendo los metadatos de todo el sistema de archivos, incluyendo la estructura de directorios, información de los ficheros (tamaño, permisos, ubicación de los bloques) y coordinando las operaciones de lectura y escritura. Es crítico porque si falla, se pierde el acceso a todos los datos del sistema de archivos HDFS.

  1. ¿Cuál es la diferencia fundamental entre el NameNode y el Secondary NameNode en HDFS?

El NameNode es el nodo maestro activo que gestiona los metadatos y coordina las operaciones, mientras que el Secondary NameNode no es un nodo de respaldo activo. Su función principal es tomar puntos de control periódicos de los metadatos del NameNode (FsImage y EditLog) para reducir el tiempo de reinicio del NameNode en caso de fallo.

  1. ¿Cómo consigue HDFS la tolerancia a fallos en el almacenamiento de datos? Explica el concepto clave involucrado.

HDFS logra la tolerancia a fallos mediante la replicación de bloques de datos. Cada bloque de un fichero se copia múltiples veces (el factor de replicación por defecto es 3) y se almacena en diferentes DataNodes. Si un nodo falla, las copias de los bloques permanecen disponibles en otros nodos.

  1. Describe la función principal de YARN en el ecosistema de Hadoop. ¿A qué componente de un ordenador personal se podría comparar?

YARN (Yet Another Resource Negotiator) es el gestor de recursos de Hadoop, responsable de administrar y asignar los recursos del clúster (CPU, memoria, etc.) a las diferentes aplicaciones que se ejecutan en él. Se podría comparar con el sistema operativo de un ordenador personal, que gestiona los recursos para las aplicaciones.

  1. ¿Qué es un contenedor en el contexto de YARN y cuál es su importancia para la ejecución de aplicaciones?

Un contenedor en YARN es la unidad mínima de recursos de ejecución asignada a una tarea de una aplicación. Representa una cantidad específica de memoria, núcleos de procesamiento y otros recursos. Su importancia radica en que todas las tareas de las aplicaciones YARN se ejecutan dentro de contenedores, permitiendo una gestión eficiente y aislada de los recursos.

  1. Explica el rol del ResourceManager en YARN y menciona uno de sus componentes principales.

El ResourceManager en YARN es el servicio maestro que coordina, asigna y controla la ejecución de todas las aplicaciones en el clúster. Uno de sus componentes principales es el Scheduler, que es responsable de asignar los recursos (contenedores) a las aplicaciones en función de las políticas de prioridad y la disponibilidad de recursos.

  1. Describe brevemente el paradigma de programación MapReduce y menciona las dos funciones principales que los desarrolladores suelen implementar.

MapReduce es un modelo de programación y un framework de ejecución para el procesamiento paralelo de grandes conjuntos de datos en clústeres. Las dos funciones principales que los desarrolladores suelen implementar son la función map, que procesa los datos de entrada y emite pares clave-valor intermedios, y la función reduce, que combina los valores asociados a la misma clave para producir el resultado final.

  1. Explica por qué la fase de «shuffle» es importante en el flujo de ejecución de un trabajo MapReduce.

La fase de «shuffle» en MapReduce es crucial porque toma la salida de las tareas map (pares clave-valor), las ordena por clave y las agrupa por clave, enviando todos los valores asociados a la misma clave a la misma tarea reduce. Esto asegura que la función reduce pueda procesar todos los datos relevantes para cada clave de manera conjunta.

  1. Menciona dos razones por las cuales, a pesar de su antigüedad, es importante entender MapReduce en el contexto de las tecnologías Big Data.

Primero, MapReduce sentó las bases para muchos frameworks Big Data posteriores y comprender sus principios ayuda a entender cómo funcionan otras herramientas. Segundo, muchas herramientas de alto nivel que se ejecutan sobre Hadoop, como Hive, a menudo traducen sus operaciones a trabajos MapReduce en segundo plano, por lo que entender MapReduce facilita la depuración y resolución de problemas.

Preguntas de Ensayo

  1. Describe en detalle la arquitectura de HDFS, explicando la función de cada uno de sus componentes principales (NameNode, Secondary NameNode, DataNode) y cómo interactúan entre sí durante una operación de escritura de un archivo.
  2. Compara y contrasta la arquitectura de HDFS con la arquitectura de YARN, destacando los roles de los nodos maestros y trabajadores en cada sistema y cómo colaboran para el almacenamiento y procesamiento de datos.
  3. Explica el flujo de ejecución de una aplicación en YARN, desde la solicitud del cliente hasta la finalización de las tareas, detallando la interacción entre el ResourceManager, el ApplicationMaster y los NodeManagers.
  4. Describe el ciclo de vida de un trabajo MapReduce, detallando cada una de sus fases (envío, map, shuffle, sort, reduce) y explicando cómo el framework facilita el procesamiento paralelo y la tolerancia a fallos.
  5. Analiza las ventajas y desventajas del uso de MapReduce para el procesamiento de datos en la actualidad, considerando su modelo de programación, eficiencia en diferentes tipos de tareas y su relevancia en comparación con otros frameworks de procesamiento más recientes en el ecosistema de Hadoop.

Glosario de Términos Clave

 

 

 

 

 

Mapa Conceptual

 

 

Preguntas Frecuentes sobre Fundamentos de Hadoop: HDFS, YARN y MapReduce

  1. ¿Qué es Hadoop y cuáles son sus componentes principales?

Hadoop es una tecnología de Big Data diseñada para almacenar y procesar grandes volúmenes de datos de manera distribuida en clústeres de hardware común. Sus componentes principales son:

  1. ¿Qué es HDFS y cuáles son sus características fundamentales?

HDFS (Hadoop Distributed File System) es el sistema de archivos distribuido de Hadoop. Sus características fundamentales incluyen:

  1. ¿Cómo garantiza HDFS la tolerancia a fallos?

HDFS garantiza la tolerancia a fallos principalmente a través de la replicación de bloques. Cuando un fichero se escribe en HDFS, se divide en bloques, y cada bloque se replica un número configurable de veces (el factor de replicación por defecto es 3) en diferentes nodos del clúster. Si un nodo falla o un bloque se corrompe, HDFS puede acceder a las otras réplicas del bloque almacenadas en nodos diferentes, asegurando la disponibilidad de los datos. El NameNode es responsable de detectar fallos en los DataNodes y de iniciar la replicación de los bloques perdidos para mantener el factor de replicación deseado.

  1. ¿Cuáles son los componentes de la arquitectura de HDFS y cuál es la función de cada uno?

La arquitectura de HDFS consta de tres tipos principales de nodos:

  1. ¿Qué es YARN y cuál es su propósito en Hadoop?

YARN (Yet Another Resource Negotiator) es el sistema operativo de Hadoop para la gestión de recursos y la programación de trabajos. Su propósito principal es separar la gestión de recursos del procesamiento de datos, permitiendo que Hadoop soporte diferentes modelos de procesamiento además de MapReduce. YARN se encarga de:

  1. ¿Cuáles son los componentes de la arquitectura de YARN y cuál es la función de cada uno?

La arquitectura de YARN incluye los siguientes componentes principales:

  1. ¿Qué es MapReduce y cómo funciona el paradigma map y reduce?

MapReduce es un modelo de programación y un framework de procesamiento distribuido diseñado para procesar grandes volúmenes de datos en paralelo en clústeres Hadoop. El paradigma MapReduce consta de dos funciones principales:

Entre las fases map y reduce, MapReduce realiza automáticamente las fases de shuffle (transferencia de los resultados del map a los nodos reduce apropiados) y sort (ordenamiento de los pares clave-valor intermedios por clave dentro de cada partición reduce).

  1. ¿En qué situaciones es adecuado utilizar MapReduce y cuáles son sus principales limitaciones en comparación con otros frameworks de procesamiento en Hadoop?

MapReduce es adecuado para el procesamiento por lotes de grandes volúmenes de datos donde la latencia no es un requisito crítico. Es especialmente útil para tareas como el procesamiento de logs, la generación de informes, la indexación de datos y otras tareas de análisis masivo que se pueden dividir en operaciones map y reduce independientes y paralelas.

Sin embargo, MapReduce tiene limitaciones significativas en comparación con otros frameworks de procesamiento más recientes en Hadoop, como Spark o Flink. Sus principales limitaciones incluyen:

Debido a estas limitaciones, MapReduce se utiliza cada vez menos para nuevos desarrollos, siendo reemplazado en muchos casos por frameworks más flexibles y eficientes. Sin embargo, sigue siendo una parte fundamental del core de Hadoop y muchas herramientas de nivel superior aún lo utilizan internamente.

 

 

Evaluación

Preguntas:

Aquí tienes un cuestionario de 20 preguntas con cuatro posibles respuestas, basado en la información de las fuentes, seguido de una tabla con las respuestas correctas y una breve explicación:

  1. ¿Cuál es el componente de Hadoop responsable del almacenamiento distribuido? A. YARN
    B. MapReduce
    C. HDFS
    D. Namenode
  2. HDFS está diseñado principalmente para:
    A. Almacenar y procesar pequeñas cantidades de datos en tiempo real.
    B. Dar soporte a las operaciones transaccionales de las empresas.
    C. Almacenar ficheros de gran tamaño y realizar operaciones de lectura o escritura masivas.
    D. Almacenar datos relacionales estructurados.
  3. ¿Cuál es el tamaño de bloque por defecto en HDFS?
    A. 512 bytes
    B. 4 kilobytes
    C. 64 megabytes
    D. 128 megabytes
  4. ¿Cómo consigue HDFS la tolerancia a fallos principalmente?
    A. Mediante la paridad de datos.
    B. Utilizando hardware de servidores muy costoso y específico.
    C. Mediante la replicación de bloques en múltiples nodos.
    D. Comprimiendo los datos de forma intensiva.
  5. ¿Cuál es el factor de replicación por defecto en HDFS?
    A. 1
    B. 2
    C. 3
    D. Se puede configurar a nivel global solamente.
  6. ¿Qué componente de la arquitectura de HDFS almacena los metadatos del sistema de ficheros?
    A. Datanode
    B. Secondary Namenode
    C. Namenode
    D. ResourceManager
  7. ¿Cuál es la función principal del Secondary Namenode en HDFS?
    A. Actuar como un nodo de respaldo activo en caso de fallo del Namenode.
    B. Tomar puntos de control de los metadatos del sistema de ficheros del Namenode para reducir el tiempo de arranque.
    C. Almacenar los bloques de datos reales.
    D. Gestionar la ejecución de las aplicaciones de procesamiento.
  8. ¿Qué tarea realizan los Datanodes en HDFS?
    A. Mantienen la estructura de directorios y la información de los ficheros.
    B. Coordinan las lecturas y escrituras en el sistema.
    C. Almacenan y leen los bloques que componen los ficheros.
    D. Toman instantáneas de los metadatos del sistema de archivos.
  9. ¿Qué significa la característica «write-once, read many» de HDFS?
    A. Los ficheros se pueden escribir y modificar muchas veces, pero se leen una sola vez.
    B. Una vez que un archivo se escribe en HDFS, no se modificará, aunque se puede acceder a él muchas veces.
    C. Los ficheros solo se pueden escribir una vez y leerse una vez.
    D. Solo se permite una escritura y una lectura simultánea por fichero.
  10. ¿Cuál de los siguientes comandos de la línea de comandos de HDFS se utiliza para listar el contenido de un directorio?
    A. cat
    B. put
    C. ls
    D. mkdir
  11. ¿Cuál es el acrónimo de Yet Another Resource Negotiator en Hadoop?
    A. HDFS
    B. MapReduce
    C. YARN
    D. Namenode
  12. ¿Cuál es la función principal de YARN en Hadoop?
    A. Almacenar grandes cantidades de datos de forma distribuida.
    B. Ejecutar tareas de procesamiento masivo utilizando el paradigma MapReduce.
    C. Gestionar los recursos del clúster y programar la ejecución de aplicaciones.
    D. Proporcionar una interfaz SQL para consultar los datos almacenados en HDFS.
  13. ¿Cuál es la unidad mínima de recursos de ejecución para las aplicaciones en YARN?
    A. Datanode
    B. Contenedor
    C. Mapper
    D. Reducer
  14. ¿Qué componente de YARN actúa como el maestro y es responsable de asignar recursos y controlar la ejecución de las aplicaciones?
    A. NodeManager
    B. ApplicationMaster
    C. ResourceManager
    D. Secondary Namenode
  15. ¿Qué componente de YARN se ejecuta en cada nodo worker y monitoriza el estado de los contenedores y el consumo de recursos?
    A. ResourceManager
    B. ApplicationMaster
    C. NodeManager
    D. Namenode
  16. ¿Qué paradigma de programación fue el motor de procesamiento original en las primeras versiones de Hadoop?
    A. YARN
    B. MapReduce
    C. HDFS
    D. Spark
  17. ¿Cuáles son las dos funciones principales que los desarrolladores suelen implementar en un trabajo de MapReduce?
    A. Input y Output
    B. Map y Reduce
    C. Sort y Shuffle
    D. Read y Write
  18. ¿En qué fase de un trabajo de MapReduce se toman los resultados parciales de la fase map, se ordenan y se agrupan por clave?
    A. Fase map
    B. Fase reduce
    C. Fase shuffle y sort
    D. Fase de envío del trabajo
  19. ¿Qué componente de MapReduce es responsable de dividir el fichero de entrada en fragmentos para que los datos puedan ser procesados en paralelo?
    A. Mapper
    B. Reducer
    C. InputFormat
    D. OutputFormat
  20. ¿Qué tipo de operaciones son las más adecuadas para MapReduce según las fuentes?
    A. Operaciones transaccionales en tiempo real.
    B. Consultas interactivas de baja latencia.
    C. Procesamiento de grandes cantidades de datos en paralelo, donde la latencia no es el factor más crítico.
    D. Modificación frecuente de pequeños registros de datos.

Tabla Respuestas

Pregunta Respuesta Correcta Explicación Breve
1 C HDFS (Hadoop Distributed File System) es el sistema de almacenamiento distribuido de Hadoop.
2 C HDFS está optimizado para almacenar ficheros de gran tamaño y para hacer operaciones de lectura o escritura masivas. Su objetivo es la analítica masiva, no el soporte a operaciones de empresas.
3 D El tamaño de bloque por defecto en HDFS es de 128 megabytes.
4 C La tolerancia a fallos en HDFS se consigue, entre otras cosas, mediante la replicación (copia) de cada bloque en más de un nodo.
5 C El factor de replicación por defecto en HDFS es 3, lo que significa que cada bloque tiene 3 copias almacenadas en 3 nodos diferentes.
6 C El Namenode actúa de maestro, manteniendo la metainformación de todo el sistema de ficheros, como la estructura de directorios, información de los ficheros, factor de replicación y ubicación de los bloques.
7 B La función principal del Secondary Namenode es tomar puntos de control de los metadatos del sistema de ficheros del Namenode para reducir el tiempo de arranque del Namenode. No es un nodo de respaldo activo.
8 C Los Datanodes son los servicios que se encuentran en los nodos worker, y su labor principal es almacenar o leer los bloques que componen los ficheros que están almacenados en HDFS.
9 B «Write-once, read many» significa que un archivo una vez escrito en HDFS no se modificará, aunque se puede acceder a él muchas veces. HDFS solo permite añadir contenido a los ficheros.
10 C El comando ls en la línea de comandos de HDFS, similar al comando Unix ls, se usa para listar directorios, es decir, para mostrar su contenido.
11 C YARN es el acrónimo de Yet Another Resource Negotiator, lo que indica que es un gestor de recursos.
12 C La función principal de YARN es poder independizar el almacenamiento del procesamiento, abrir Hadoop a cualquier tipo de aplicación y gestionar los recursos del clúster.
13 B En YARN, el contenedor es la unidad mínima de recursos de ejecución para las aplicaciones, representando una cantidad específica de memoria, núcleos de procesamiento y otros recursos.
14 C El servicio ResourceManager en YARN actúa como el maestro, coordinando, asignando y controlando la ejecución de todas las tareas.
15 C El servicio NodeManager se ejecuta en cada nodo worker y monitoriza y proporciona información sobre el consumo de recursos (CPU/memoria) por parte de los contenedores al ResourceManager.
16 B En las primeras versiones de Hadoop, MapReduce era el único motor de computación.
17 B En MapReduce, los desarrolladores escriben trabajos que consisten principalmente en una función map y una función reduce.
18 C Las fases de shuffle y sort se ejecutan automáticamente después de la fase map, tomando los resultados parciales, ordenándolos por clave y agrupándolos.
19 C El componente InputFormat es responsable de dividir el fichero de entrada en fragmentos para que los datos puedan ser procesados en paralelo por las tareas map.
20 C MapReduce está diseñado para procesar grandes cantidades de datos en paralelo en clústeres de hardware commodity de manera confiable y tolerante a fallos. Es menos eficiente para operaciones que requieren respuestas rápidas.

 

Recursos