Podcast
Questions and Answers
¿Cuál de las siguientes NO es una caracterÃstica del acceso a archivos en HDFS?
¿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?
¿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?
¿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?
Si el NameNode falla, ¿qué implicación tiene para el clúster HDFS?
¿Cuál es la función principal del Secondary NameNode en HDFS?
¿Cuál es la función principal del Secondary NameNode en HDFS?
¿Cuál es el propósito del comando hdfs dfs -ls
?
¿Cuál es el propósito del comando hdfs dfs -ls
?
Si deseas copiar un archivo desde tu sistema de archivos local a HDFS, ¿qué comando usarÃas?
Si deseas copiar un archivo desde tu sistema de archivos local a HDFS, ¿qué comando usarÃas?
¿Qué comando se utiliza para crear un nuevo directorio en HDFS?
¿Qué comando se utiliza para crear un nuevo directorio en HDFS?
¿Cuál es el principal beneficio de la replicación de bloques en HDFS?
¿Cuál es el principal beneficio de la replicación de bloques en HDFS?
¿Qué implica el concepto de 'rack awareness' en HDFS?
¿Qué implica el concepto de 'rack awareness' en HDFS?
En el paradigma MapReduce, ¿cuál es la función del 'Mapper'?
En el paradigma MapReduce, ¿cuál es la función del 'Mapper'?
¿Cuál es la función del 'Reducer' en el paradigma MapReduce?
¿Cuál es la función del 'Reducer' en el paradigma MapReduce?
¿Qué tipo de datos genera la función 'Mapper' en MapReduce como salida?
¿Qué tipo de datos genera la función 'Mapper' en MapReduce como salida?
¿Cuál de las siguientes NO es una limitación de MapReduce?
¿Cuál de las siguientes NO es una limitación de MapReduce?
En MapReduce, ¿qué es el shuffle?
En MapReduce, ¿qué es el shuffle?
¿Cuál es una ventaja de usar HDFS en comparación con un sistema de archivos tradicional?
¿Cuál es una ventaja de usar HDFS en comparación con un sistema de archivos tradicional?
¿Qué problema principal aborda MapReduce?
¿Qué problema principal aborda MapReduce?
¿Cuál de los siguientes describe mejor el concepto de 'localidad de datos' en HDFS y MapReduce?
¿Cuál de los siguientes describe mejor el concepto de 'localidad de datos' en HDFS y MapReduce?
¿Qué comando en HDFS se utiliza para ver la parte final de un archivo?
¿Qué comando en HDFS se utiliza para ver la parte final de un archivo?
¿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?
¿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?
¿En qué situación se utilizarÃa una configuración de NameNodes federados?
¿En qué situación se utilizarÃa una configuración de NameNodes federados?
¿Quién gestiona la replicación de cada bloque en un pipeline durante el proceso de escritura en HDFS?
¿Quién gestiona la replicación de cada bloque en un pipeline durante el proceso de escritura en HDFS?
¿Por qué el NameNode no devuelve los bloques de datos durante el proceso de lectura?
¿Por qué el NameNode no devuelve los bloques de datos durante el proceso de lectura?
¿Qué tipo de problemas son adecuados para resolverse con MapReduce?
¿Qué tipo de problemas son adecuados para resolverse con MapReduce?
Flashcards
¿Qué es HDFS?
¿Qué es HDFS?
Sistema de archivos distribuido de Hadoop, base de las tecnologÃas distribuidas, proporciona almacenamiento persistente.
¿Qué es MapReduce?
¿Qué es MapReduce?
Procesamiento distribuido en paralelo de datos almacenados en HDFS.
¿Qué define a HDFS?
¿Qué define a HDFS?
Almacena archivos muy grandes con patrones streaming, pensado para clústeres de ordenadores convencionales.
¿Qué es 'commodity hardware'?
¿Qué es 'commodity hardware'?
Signup and view all the flashcards
¿Cómo almacena HDFS los archivos grandes?
¿Cómo almacena HDFS los archivos grandes?
Signup and view all the flashcards
¿Cuál es la replicación predeterminada en HDFS?
¿Cuál es la replicación predeterminada en HDFS?
Signup and view all the flashcards
¿Qué es 'rack-awareness' en HDFS?
¿Qué es 'rack-awareness' en HDFS?
Signup and view all the flashcards
¿Qué hace el 'namenode'?
¿Qué hace el 'namenode'?
Signup and view all the flashcards
¿Qué hacen los 'datanodes'?
¿Qué hacen los 'datanodes'?
Signup and view all the flashcards
¿Qué información recibe el 'namenode'?
¿Qué información recibe el 'namenode'?
Signup and view all the flashcards
¿Cómo se respaldan los datos del 'namenode'?
¿Cómo se respaldan los datos del 'namenode'?
Signup and view all the flashcards
¿Cómo funciona la 'alta disponibilidad' del 'namenode'?
¿Cómo funciona la 'alta disponibilidad' del 'namenode'?
Signup and view all the flashcards
¿Qué son 'namenodes federados'?
¿Qué son 'namenodes federados'?
Signup and view all the flashcards
¿Cómo inicia un cliente la lectura de un archivo en HDFS?
¿Cómo inicia un cliente la lectura de un archivo en HDFS?
Signup and view all the flashcards
¿Qué hace el 'namenode' en el proceso de lectura?
¿Qué hace el 'namenode' en el proceso de lectura?
Signup and view all the flashcards
¿Cómo obtiene el cliente los datos en la lectura?
¿Cómo obtiene el cliente los datos en la lectura?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -ls
?
¿Qué hace el comando hdfs dfs -ls
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -mkdir
?
¿Qué hace el comando hdfs dfs -mkdir
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -copyFromLocal
?
¿Qué hace el comando hdfs dfs -copyFromLocal
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -copyToLocal
?
¿Qué hace el comando hdfs dfs -copyToLocal
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -tail
?
¿Qué hace el comando hdfs dfs -tail
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -cat
?
¿Qué hace el comando hdfs dfs -cat
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -cp
?
¿Qué hace el comando hdfs dfs -cp
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -mv
?
¿Qué hace el comando hdfs dfs -mv
?
Signup and view all the flashcards
¿Qué hace el comando hdfs dfs -rm
?
¿Qué hace el comando hdfs dfs -rm
?
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.