2 HDFS y MapReduce Sum Up

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes NO es una característica del acceso a archivos en HDFS?

  • Diseñado para archivos muy grandes.
  • Se utiliza principalmente acceso _batch_.
  • Acceso de tipo _write-once, read-many_.
  • Soporte para la modificación de archivos existentes. (correct)

¿Cuál es el tamaño de bloque predeterminado en HDFS?

  • 64 MB
  • 256 MB
  • 512 MB
  • 128 MB (correct)

¿Qué componente de HDFS es responsable de mantener los metadatos del sistema de archivos y la estructura de directorios?

  • DataNode
  • ResourceManager
  • NameNode (correct)
  • Secondary NameNode

Si el NameNode falla, ¿qué implicación tiene para el clúster HDFS?

<p>El clúster estará inaccesible hasta que el NameNode se restaure o se reemplace. (C)</p> Signup and view all the answers

¿Cuál es la función principal del Secondary NameNode en HDFS?

<p>Realizar copias de seguridad periódicas de los metadatos del NameNode. (B)</p> Signup and view all the answers

¿Cuál es el propósito del comando hdfs dfs -ls?

<p>Listar los archivos y directorios en una ruta especificada en HDFS. (A)</p> Signup and view all the answers

Si deseas copiar un archivo desde tu sistema de archivos local a HDFS, ¿qué comando usarías?

<p><code>hdfs dfs -copyFromLocal</code> (A)</p> Signup and view all the answers

¿Qué comando se utiliza para crear un nuevo directorio en HDFS?

<p><code>hdfs dfs -mkdir</code> (A)</p> Signup and view all the answers

¿Cuál es el principal beneficio de la replicación de bloques en HDFS?

<p>Aumento de la tolerancia a fallos. (D)</p> Signup and view all the answers

¿Qué implica el concepto de 'rack awareness' en HDFS?

<p>Optimizar el almacenamiento de datos basándose en la topología física del clúster. (A)</p> Signup and view all the answers

En el paradigma MapReduce, ¿cuál es la función del 'Mapper'?

<p>Transformar los datos de entrada en pares clave-valor. (C)</p> Signup and view all the answers

¿Cuál es la función del 'Reducer' en el paradigma MapReduce?

<p>Agregar y procesar los datos intermedios con la misma clave. (A)</p> Signup and view all the answers

¿Qué tipo de datos genera la función 'Mapper' en MapReduce como salida?

<p>Pares clave-valor. (C)</p> Signup and view all the answers

¿Cuál de las siguientes NO es una limitación de MapReduce?

<p>Soporte nativo para procesamiento en tiempo real. (D)</p> Signup and view all the answers

En MapReduce, ¿qué es el shuffle?

<p>El movimiento de datos entre los mappers y los reducers. (D)</p> Signup and view all the answers

¿Cuál es una ventaja de usar HDFS en comparación con un sistema de archivos tradicional?

<p>Mayor tolerancia a fallos y escalabilidad. (B)</p> Signup and view all the answers

¿Qué problema principal aborda MapReduce?

<p>El procesamiento paralelo de grandes conjuntos de datos. (C)</p> Signup and view all the answers

¿Cuál de los siguientes describe mejor el concepto de 'localidad de datos' en HDFS y MapReduce?

<p>Mover el cómputo a los nodos donde residen los datos. (C)</p> Signup and view all the answers

¿Qué comando en HDFS se utiliza para ver la parte final de un archivo?

<p><code>hdfs dfs -tail</code> (A)</p> Signup and view all the answers

¿Cuál es el propósito de los archivos de registro (logs) de edición compartidos entre el NameNode activo y el NameNode en stand by en una configuración de alta disponibilidad?

<p>Para mantener el NameNode en <em>stand by</em> sincronizado con las últimas operaciones. (C)</p> Signup and view all the answers

¿En qué situación se utilizaría una configuración de NameNodes federados?

<p>Para escalar el NameNode horizontalmente y gestionar más metadatos. (B)</p> Signup and view all the answers

¿Quién gestiona la replicación de cada bloque en un pipeline durante el proceso de escritura en HDFS?

<p>DataNodes (B)</p> Signup and view all the answers

¿Por qué el NameNode no devuelve los bloques de datos durante el proceso de lectura?

<p>Para evitar convertirse en un cuello de botella. (B)</p> Signup and view all the answers

¿Qué tipo de problemas son adecuados para resolverse con MapReduce?

<p>Problemas que pueden dividirse en tareas independientes y procesarse en paralelo. (B)</p> Signup and view all the answers

Flashcards

¿Qué es HDFS?

Sistema de archivos distribuido de Hadoop, base de las tecnologías distribuidas, proporciona almacenamiento persistente.

¿Qué es MapReduce?

Procesamiento distribuido en paralelo de datos almacenados en HDFS.

¿Qué define a HDFS?

Almacena archivos muy grandes con patrones streaming, pensado para clústeres de ordenadores convencionales.

¿Qué es 'commodity hardware'?

Hardware estándar, económico y reemplazable.

Signup and view all the flashcards

¿Cómo almacena HDFS los archivos grandes?

Se parte en bloques, almacenándose en diferentes máquinas.

Signup and view all the flashcards

¿Cuál es la replicación predeterminada en HDFS?

Factor de replicación por defecto de HDFS para bloques de datos(3).

Signup and view all the flashcards

¿Qué es 'rack-awareness' en HDFS?

Disposición física del clúster, indica la cercanía entre nodos.

Signup and view all the flashcards

¿Qué hace el 'namenode'?

Mantiene la estructura de directorios y los metadatos de los archivos.

Signup and view all the flashcards

¿Qué hacen los 'datanodes'?

Almacenan datos a petición del namenode.

Signup and view all the flashcards

¿Qué información recibe el 'namenode'?

Recibe heartbeat y lista de bloques desde los datanodes.

Signup and view all the flashcards

¿Cómo se respaldan los datos del 'namenode'?

Copia los metadatos a nodos externos (NFS) y nodo secundario.

Signup and view all the flashcards

¿Cómo funciona la 'alta disponibilidad' del 'namenode'?

Dos namenodes: activo y en 'stand by', comparten el 'log' de edición.

Signup and view all the flashcards

¿Qué son 'namenodes federados'?

Varios namenodes gestionan diferentes directorios sin solapamiento.

Signup and view all the flashcards

¿Cómo inicia un cliente la lectura de un archivo en HDFS?

Solicita un fichero al 'namenode' mediante RPC.

Signup and view all the flashcards

¿Qué hace el 'namenode' en el proceso de lectura?

Consulta los bloques del fichero y su localización.

Signup and view all the flashcards

¿Cómo obtiene el cliente los datos en la lectura?

Contacta a los nodos para obtener bloques; transparente a la app.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -ls?

Lista el contenido de un directorio en HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -mkdir?

Crea un nuevo directorio en HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -copyFromLocal?

Copia un archivo local a HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -copyToLocal?

Copia un archivo de HDFS al sistema de archivos local.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -tail?

Muestra la parte final de un archivo en HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -cat?

Muestra todo el contenido de un archivo en HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -cp?

Copia un fichero en HDFS a otro destino en HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -mv?

Renombra o mueve un archivo en HDFS.

Signup and view all the flashcards

¿Qué hace el comando hdfs dfs -rm?

Borra un archivo o directorio en HDFS.

Signup and view all the flashcards

Study Notes

Introducción a HDFS y MapReduce

  • Hadoop Distributed File System (HDFS) es la primera tecnología distribuida a estudiar.
  • HDFS ha cambiado relativamente poco con los años y sigue siendo la base de casi todas las demás.
  • HDFS proporciona la capa de almacenamiento persistente (en discos duros) de los datos.
  • El paradigma de la programación distribuida MapReduce se usará para procesar en paralelo los datos almacenados en HDFS.
  • Los objetivos son conocer las características de HDFS, entender su arquitectura y operaciones, familiarizarse con comandos habituales y comprender MapReduce.

Introducción a HDFS

  • El artículo sobre Google File System (GFS) publicado en 2003 fue el germen de HDFS.
  • HDFS forma una parte fundamental del ecosistema Hadoop.
  • HDFS se ha utilizado sin apenas cambios desde su introducción.
  • Se verán las características propias de HDFS y sus componentes desde el punto de vista de la arquitectura.
  • Se analizarán sus peculiaridades como sistema de archivos distribuido frente a sistemas de archivos tradicionales no distribuidos.
  • Se explica el funcionamiento interno de HDFS.
  • Se describen los comandos más habituales utilizados para manejar HDFS.
  • HDFS es un sistema de archivos distribuido destinado a almacenar archivos muy grandes con patrones de acceso en streaming, pensado para clústeres de ordenadores convencionales.

Sistema de Archivos Distribuido

  • Los archivos se almacenan en una red de máquinas
  • Se utilizan máquinas commodity (hardware convencional, que puede fallar), diferente a los sistemas tradicionales con mainframes.
  • Es escalable, se pueden añadir más nodos para aumentar la capacidad.
  • Necesita mecanismos software de recuperación frente a fallo de un nodo.
  • Permite guardar archivos mayores que la capacidad del disco de una máquina individual, con archivos que pueden ocupar cientos de GB, varios TB e incluso PB.
  • Usa archivos con patrón de acceso write-once, read-many, con archivos creados y luego leídos.
  • No se modifican ni se borran con frecuencia.
  • No se prioriza el tiempo de acceso, sino que se usa y procesa el archivo por completo en modo batch.
  • No soporta modificación de archivos existentes, solo lectura, escritura y borrado.
  • No funciona bien para aplicaciones que requieran baja latencia, con muchos archivos pequeños o archivos que se modifiquen con frecuencia.
  • HDFS usa software escrito en Java que se instala encima del sistema de archivos de cada nodo del clúster.
  • Proporciona una abstracción de un sistema de archivos, usando el sistema de archivos nativo del sistema operativo (ext4 en Linux).
  • Permite almacenar archivos de manera distribuida y manejarlos como un único sistema de archivos.
  • En un nodo que forma parte de un clúster HDFS, se usan tanto el sistema de archivos local como el HDFS.
  • Se pueden copiar datos al software de HDFS desde el sistema de archivos o generarlos directamente en HDFS.

Arquitectura de HDFS

  • Los comandos HDFS para manejar archivos son similares a los de Linux, facilitando el uso a usuarios acostumbrados a este sistema operativo.
  • La ejecución de un comando en el sistema de archivos local y en HDFS (con hdfs dfs) realiza acciones diferentes.

Bloques de HDFS

  • Un bloque físico (o sector) de disco es la cantidad de información que se puede leer o escribir en una sola operación de disco (512 bytes).
  • En sistemas de archivos como ext4 (Linux) o NTFS (Windows), un bloque del sistema de archivos es el mínimo conjunto de sectores reservables (generalmente 4 KB).
  • En sistemas de archivos convencionales, los archivos menores que el tamaño de bloque ocupan un bloque completo, desperdiciando espacio.
  • HDFS tiene un tamaño de bloque configurable (128 MB por defecto).
  • Archivos menores a un bloque de HDFS no desperdician espacio.
  • HDFS no comparte un bloque entre archivos.
  • Un archivo se parte en bloques, que pueden almacenarse en máquinas diferentes.
  • Esto permite almacenar archivos mayores que el disco de una sola máquina.
  • Cada bloque requiere metadatos (en namenode) para mantenerlo localizado, generando demasiados metadatos con bloques pequeños.
  • Bloques muy grandes limitan el paralelismo de frameworks como Spark.
  • Los bloques de datos suelen replicarse (factor k) para alta disponibilidad y máximo paralelismo.
  • HDFS tiene un factor de replicación de 3 por defecto, configurable con el comando hadoop dfs -setrep -w 3 /user/hdfs/file.txt.

Rack-Awereness en HDFS

  • En la configuración de HDFS, se puede especificar la topología del clúster e indicar qué nodos comparten un mismo rack.
  • HDFS determina en qué nodo del clúster colocar cada bloque para minimizar pérdidas si falla un rack.
  • La norma general es no colocar más de una réplica de un bloque en el mismo nodo, ni más de dos réplicas en el mismo rack.
  • Es posible establecer políticas más complejas para asignar bloques de datos a nodos concretos.
  • La topología influye en la elección de los datanodes que servirán datos al leer un fichero, según la cercanía física al cliente.

Datanodes y Namenode

  • Cada nodo puede usarse como datanode o namenode.
  • El namenode almacena la estructura de directorios y metadatos.
  • Los datanodes almacenan bloques de datos y los devuelven a petición del namenode.
  • El namenode recibe periódicamente de los datanodes un heartbeat (cada tres segundos por defecto) y un listado de bloques presentes (cada seis horas por defecto).
  • El namenode es un punto único de fallo (SPOF).
  • El namenode posee la estructura de directorios del sistema de archivos y conoce qué bloques forman cada archivo.
  • Existen mecanismos de respaldo del namenode y alta disponibilidad.
  • Más adelante explicamos cómo escalar el namenode.
  • Se hace una copia preventiva frente a fallos del namenode
    • Copia de los archivos persistentes de los metadatos a otros nodos o a un sistema de ficheros externos como NFS.
    • En otra máquina física diferente un proceso va fusionando los cambios que indica el log de edición respecto a la imagen del namenode,
  • Hay Alta Disponibilidad del Namenode utilizando un par de namenodes, denominados activo y en stand by.
  • Existe una estrategia de Escalando con Namenodes federados donde varios namenodes funcionan a la vez se encargan de directorios distintos del sistema de archivos, sin solapamiento.

Proceso de Lectura en HDFS

  • El cliente solicita un fichero al namenode mediante RPC.
  • El namenode consulta en la tabla de metadatos los bloques del fichero y su localización.
  • El namenode devuelve al cliente una lista de bloques y los equipos en los que puede encontrar cada uno.
  • El cliente contacta con los nodos que almacenan los bloques para obtenerlos como un flujo continuo.
  • El objeto FSDataInputStream contacta ocasionalmente con el namenode para obtener la ubicación de los siguientes bloques.
  • El cliente compone el archivo.
  • El namenode no devuelve los bloques de datos.
  • El cliente se dirige a los datanodes que le ha indicado el namenode para solicitar los bloques.

Proceso de Escritura en HDFS

  • El cliente solicita al namenode, mediante RPC, realizar una escritura de un archivo sin bloques asociados.
  • El namenode realiza comprobaciones para verificar permisos.
  • El objeto FSDataOutputStream particiona el fichero en bloques y los encola.
  • El namenode proporciona una lista de datanodes en los que se escribirá cada bloque.
  • El cliente contacta con el primer datanode de la lista para pedirle que escriba el bloque, el cual se encargará de propagarlo al segundo datanode, etc.
  • El último datanode en escribir el bloque devuelve una confirmación (ack) hacia atrás, hasta el primer datanode.
  • Una vez que el cliente ha escrito todos los bloques, envía una confirmación al namenode.
  • Los datanodes forman un pipeline, el primer datanode escribe el bloque y lo reenvía al segundo, devolviendo una señal de confirmación (ack).
  • En caso de fallo, se establecen mecanismos para que el resto de datanodes no pierdan el paquete y aseguren la replicación.
  • Los datanodes gestionan la replicación de cada bloque, solo necesitando la intervención ocasional del namenode.

Comandos HDFS Frecuentes

  • Se puede usar hadoop dfs o hdfs dfs indistintamente.
  • Se ejecuta un programa cliente llamado hdfs desde cualquier nodo de HDFS.
  • No existe el concepto de «directorio actual», por lo que todos los comandos requieren rutas completas.
  • hdfs dfs -ls /ruta/directorio: muestra el contenido de un directorio de HDFS.
  • hdfs dfs -mkdir /ruta/nuevodirectorio: crea un nuevo directorio.
  • hdfs dfs -copyFromLocal ruta/local/fichero.txt /ruta/hdfs/: copia un fichero del sistema de archivos local a HDFS.
  • hdfs dfs -copyToLocal /ruta/hdfs/fichero.txt ruta/local: copia un fichero de HDFS al sistema de archivos local.
  • hdfs dfs -tail /ruta/hdfs/fichero.txt: muestra la parte final del archivo en HDFS.
  • hdfs dfs -cat /ruta/hdfs/fichero.txt: muestra todo el contenido del archivo en HDFS (usar con cuidado en archivos grandes).
  • hdfs dfs -cp /ruta/hdfs/origen/fichero.txt /ruta/hdfs/destino/copiado.txt: copia un fichero en HDFS.
  • hdfs dfs -mv /ruta/original.txt /ruta/nuevo.txt: renombra o mueve un fichero en HDFS.
  • hdfs dfs -rm /ruta/fichero.txt: borra un fichero en HDFS.
  • hdfs dfs -chmod /ruta/hdfs/fichero.txt: cambia los permisos de un archivo en HDFS.
  • hdfs dfs -chown usuario /ruta/fichero.txt: cambia el dueño de un archivo en HDFS.

Programación Distribuida y MapReduce

  • Dean y Ghemawat publicaron un artículo (2008) para procesar ficheros almacenados y particionados en bloques en un sistema de ficheros distribuido (GFS).
  • MapReduce es un paradigma de programación que aborda los problemas de forma que puedan ser implementados y ejecutados sobre un clúster de ordenadores, liberando una biblioteca de programación en Java.
  • MapReduce es un modelo abstracto de programación general e implementación del modelo en bibliotecas para procesamiento paralelo y distribuido de grandes datasets, inspirado en la técnica «divide y vencerás».
  • El modelo y la implementación abstraen al programador de detalles de hardware, redes y comunicación entre nodos, centrándose en el desarrollo de software.
  • Parte de archivos grandes almacenados (por bloques) en HDFS.
  • Se aprovechan las CPU de los datanodes del clúster para procesar en paralelo los bloques de un archivo.
  • El cómputo se lleva donde están los datos (a los datanodes).
  • En MapReduce, el usuario escribe dos funciones.
    • Mapper: función escrita por el usuario e invocada por el framework en paralelo sobre cada bloque de datos de entrada (generalmente un bloque de HDFS), generando resultados intermedios en forma de (clave, valor) escritos en el disco local.
    • Reducer: se aplica en paralelo para cada grupo creado por el Mapper.
  • Suponiendo que se quiere resolver un problema que consiste, dado un texto, saber cuántas veces aparece en él cada palabra, se requieren funciones Mapper y Reducer.
  • Mapper devuelve la clave y el valor siendo este último siempre 1.
  • La función reduce que el usuario ha de implementar es también invocada automáticamente siendo la out_key palabra y el Valor 1
  • MapReduce presenta inconvenientes importantes
    • El resultado de la fase map (tuplas) se escribe en el disco duro de cada nodo, como resultado intermedio
    • Hay tráfico de red obligatoriamente (shuffle).
    • Estos problemas se acentúan cuando el algoritmo es iterativo (machine learning).
    • Enfocar un problema en operaciones map y reduce no siempre es fácil y la solución resultante puede ser difícil de mantener.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

HDFS and MapReduce Quiz
10 questions

HDFS and MapReduce Quiz

MeticulousSerendipity avatar
MeticulousSerendipity
Understanding Hadoop: MapReduce and HDFS
10 questions
Introduction à Apache Hadoop
41 questions
Use Quizgecko on...
Browser
Browser