Diseño de Sistemas Distribuidos Sistemas de ficheros distribuidos y
Transcripción
Diseño de Sistemas Distribuidos Sistemas de ficheros distribuidos y
Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso 2013-2014 Sistemas de ficheros distribuidos y paralelos Félix García Carballeira Grupo de Arquitectura de Computadores [email protected] Gestión de datos en entornos distribuidos ! Arquitecturas de almacenamiento ! Sistemas de ficheros en red y distribuidos ! Sistemas de ficheros de discos compartidos " NAS file systems, clustered file system ! Sistemas de ficheros paralelos " PVFS, GPFS, Expand,… ! Sistema de ficheros distribuido de gran escala: Hadoop file system ! Almacenamiento en grid Diseño de Sistemas distribuidos Félix García Carballeira 2 Arquitectura típica de un sistema de almacenamiento Clientes Red de comunicación Servidor de E/S Diseño de Sistemas distribuidos Félix García Carballeira 3 Arquitectura típica de un sistema de almacenamiento Clientes Red de comunicación Servidor de E/S Red de almacenamiento Diseño de Sistemas distribuidos Félix García Carballeira 4 Arquitectura típica de un sistema de almacenamiento Clientes Red de comunicación Servidor de E/S Red de almacenamiento Diseño de Sistemas distribuidos Félix García Carballeira 5 Arquitectura de almacenamiento de un cluster Almacenamiento local Clientes / nodos de cómputo • Red de interconexión Servidores / nodos de E/S • Red de almacenamiento Almacenamiento Diseño de Sistemas distribuidos Félix García Carballeira 6 Arquitectura de E/S de un supercomputador (Blue gene) Diseño de Sistemas distribuidos Félix García Carballeira 7 Sistema de ficheros Un sistema de ficheros establece una correspondencia lógica entre los ficheros y directorios y los dispositivos ! Funciones: Organización, almacenamiento, recuperación, gestión de nombres, coutilización y protección de los ficheros (metadatos) Ofrece un mecanismo de abstracción que oculta todos los detalles relacionados con el almacenamiento y distribución de la información en los dispositivos, así como el funcionamiento de los mismos. ! " " Diseño de Sistemas distribuidos Félix García Carballeira 8 Sistema de fichero en red ! Sistema de ficheros que permite el acceso a los ficheros de un servidor utilizando un determinado protocolo Extensión de un sistema de ficheros local " Diseño de Sistemas distribuidos Félix García Carballeira 9 Sistema de ficheros en red Clientes Red de comunicación Servidor de E/S ! Ejemplos: NFS, CIFS, FTP, HTTP Diseño de Sistemas distribuidos Félix García Carballeira 10 Ejemplo: NFS /home /a /b NFS server /home /a /b LAN /home /a /b /home /a /b Export the file system Clients mount the remote file system Diseño de Sistemas distribuidos Félix García Carballeira 11 Arquitectura de NFS Application Local host Remote host File system API interface File system API interface Vnode layer Vnode layer NFS client NFS server NFS stub NFS stub Local file system Remote file system Communication network • © Cloud Computing: Theory and Practice • Dan C. Marinescu Diseño de Sistemas distribuidos Félix García Carballeira 12 Sistemas de ficheros distribuidos ! Sistema de ficheros en red que permite el acceso a ficheros distribuidos por varios servidores (no es un sistema de ficheros paralelo) ! Ejemplos: AFS, DFS, Coda, Sprite SNIA Diseño de Sistemas distribuidos Félix García Carballeira 13 Sistemas de ficheros distribuidos clientes servidores /lib /b in /bin /usr LAN / /lib / /usr / /usr/d 1 /d1 /usr/d 3 /d2 /d3/f1 /usr/d 3 /f1 Diseño de Sistemas distribuidos /d3 /d3/f2 /usr/d 3 /f2 Félix García Carballeira 14 Componentes de un SFD Programa de usuairo Programa de usuairo Programa de usuairo Interfaz del SFD Red Servicio de directorios Servicio de ficheros Diseño de Sistemas distribuidos Félix García Carballeira 15 Resolución de nombres ! Resolución iterativa ! Resolución transitiva ! Resolución recursiva Diseño de Sistemas distribuidos Félix García Carballeira 16 Ejemplo C /1/2/3/4/5/6 ? / SD1 /1/2 1 2 3 SD2 3/4 SD3 5/6 4 5 6 Diseño de Sistemas distribuidos Félix García Carballeira 17 Resolución iterativa ! El cliente envía el nombre al 1/2/3/4/5/6 C /3/4/5/6 /5/6 Diseño de Sistemas distribuidos SD1 /1/2 SD2 3/4 SD3 5/6 SD ! El SD realiza la traducción hasta que termina en un componente que pertenece a otro SD ! El SD envía el resultado al cliente, el cual si no ha terminado la traducción continúa con el SD correspondiente Félix García Carballeira 18 Resolución transitiva ! Los SD implicados contactan /1/2/3/4/5/6 C SD1 /1/2 • /3/4/5/6 SD2 6 • /5/6 SD3 Diseño de Sistemas distribuidos 3/4 entre si para llevar a cabo la traducción. El último SD devuelve la traducción al cliente ! Rompe el modelo cliente/ servidor (no adecuado para RPC) 5/6 Félix García Carballeira 19 Resolución recursiva ! El último SD implicado SD1 /1/2/3/4/5/6 /3/4/5/6 6 6 C SD2 3/4 6 /5/6 SD3 Diseño de Sistemas distribuidos /1/2 devuelve el resultado al anterior y así sucesivamente hasta que el primero responde al cliente 5/6 Félix García Carballeira 20 Métodos de acceso remotos ! Modelo carga/descarga Transferencias completas del fichero Localmente se almacenan en memoria o discos locales Normalmente utilizan semántica de sesión Eficiencia en las transferencias Llamada open con mucha latencia Múltiples copias de un fichero ! Modelo de servicios remotos El servidor debe proporcionar todas las operaciones sobre el fichero. Acceso por bloques Modelo cliente/servidor ! Empleo de cache en el cliente Combina los dos modelos anteriores. " " " " " " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 21 Caché de bloques ! El empleo de caché de bloques permite mejorar el rendimiento " Explota el principio de proximidad de referencias ! Proximidad temporal ! Proximidad espacial " Lecturas adelantadas ! Mejora el rendimiento de las operaciones de lectura, sobre todo si son secuenciales " Escrituras diferidas ! Mejora el rendimiento de las escrituras ! Otros tipos de caché " " Cache de nombres Cache de metadatos del sistema de ficheros Diseño de Sistemas distribuidos Félix García Carballeira 22 Ventajas de la lectura adelantada ! Lectura secuencial en ParFiSys de un fichero de 100 MB con diferentes tamaños de acceso y de lectura adelantada. Cliente con 4 MB de caché, 4 servidores (SP2) 14 0 KB 32 KB 12 64 KB 128 KB Throughput (MB/s) 10 256 KB 8 6 4 2 0 1 2 4 8 16 32 64 Access size (KB) Diseño de Sistemas distribuidos Félix García Carballeira 23 Localización de la caché en un SFD ! Caché en los servidores Reducen los accesos a disco ! Caché en los clientes Reducen el tráfico por la red Reducen la carga en los servidores Mejora la capacidad de crecimiento Dos posibles localizaciones ! En discos locales " " " " " " " " Más capacidad, Más lento No volátil, facilita la recuperación ! En memoria principal Menor capacidad Más rápido Memoria volátil " " " Diseño de Sistemas distribuidos Félix García Carballeira 24 Funcionamiento de una cache de bloques • Proceso de usuario • Cliente • Cache • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 25 Funcionamiento de una cache de bloques • Proceso de usuario read() • Cliente • Cache • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 26 Funcionamiento de una cache de bloques • Proceso de usuario read() • Cliente • Cache Buscar bloque. • Si no está, • reservar uno • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 27 Funcionamiento de una cache de bloques • Proceso de usuario read() • Cliente • Cache • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 28 Funcionamiento de una cache de bloques Proceso de usuario • Cliente read() • Cache read() • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 29 Funcionamiento de una cache de bloques • Proceso de usuario • Cliente read() • Cache read() • Servidor • Cache Buscar bloque. • Si no está, • reservar uno • Disco Diseño de Sistemas distribuidos Félix García Carballeira 30 Funcionamiento de una cache de bloques • Proceso de usuario • Cliente read() • Cache read() • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 31 Funcionamiento de una cache de bloques • Proceso de usuario • Cliente read() • Cache read() • Servidor • Cache • read() • Disco Diseño de Sistemas distribuidos Félix García Carballeira 32 Funcionamiento de una cache de bloques • Proceso de usuario • Cliente read() • Cache read() • Servidor • Cache • read() • Disco Diseño de Sistemas distribuidos Félix García Carballeira 33 Funcionamiento de una cache de bloques • Proceso de usuario • Cliente read() • Cache read() • Servidor • Cache • read() • Disco Diseño de Sistemas distribuidos Félix García Carballeira 34 Funcionamiento de una cache de bloques • Proceso de usuario datos read() • Cliente • Cache read() • Servidor • Cache • read() • Disco Diseño de Sistemas distribuidos Félix García Carballeira 35 Funcionamiento de una cache de bloques • Proceso de usuario read() • Cliente • Cache Futuro acceso • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 36 Funcionamiento de una cache de bloques • Proceso de usuario read() datos • Cliente • Cache • Servidor • Cache • Disco Diseño de Sistemas distribuidos Félix García Carballeira 37 Tamaño de la unidad de cache ! Mayor tamaño puede incrementar la tasa de aciertos y mejorar la utilización de la red pero Aumentan los problemas de coherencia ! Depende de las características de las aplicaciones ! En memoria cache grandes Es beneficioso emplear bloques grandes ! En memorias pequeñas El uso de bloques grandes es menos adecuado " " " Diseño de Sistemas distribuidos Félix García Carballeira 38 Políticas de actualización ! Escritura inmediata (write-through) Buena fiabilidad En escrituras se obtiene el mismo rendimiento que en el modelo de accesos remotos Las escrituras son más lentas ! Escritura diferida (write-back) Escrituras más rápidas. Se reduce el tráfico en la red Los datos pueden borrarse antes de ser enviados al servidor Alternativas ! Volcado (flush) periódico (Sprite) ! Write-on-close ! Write-before-full (ParFiSys) " " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 39 Motivación de write-before-full • Proceso de usuario • Cliente • Servidor • Disco Diseño de Sistemas distribuidos Félix García Carballeira 40 Motivación de write-before-full • Proceso de usuario • Cliente read() • Servidor • Disco Diseño de Sistemas distribuidos Félix García Carballeira 41 Motivación de write-before-full • Proceso de usuario read() • Cliente • Cache • Servidor • Bloque sucio Diseño de Sistemas distribuidos • Disco Félix García Carballeira 42 Motivación de write-before-full • Proceso de usuario read() • Cliente • Cache • Algoritmo de reemplazo • Servidor • Disco Diseño de Sistemas distribuidos Félix García Carballeira 43 Motivación de write-before-full • Proceso de usuario read() • Cliente • Cache • Servidor • Bloque a expulsar Diseño de Sistemas distribuidos • Disco Félix García Carballeira 44 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • Bloque limpio Diseño de Sistemas distribuidos • Servidor • Disco Félix García Carballeira 45 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • Servidor • Cache • Bloque sucio Diseño de Sistemas distribuidos • Disco Félix García Carballeira 46 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • Servidor • Cache • Algoritmo de reemplazo • Disco Diseño de Sistemas distribuidos Félix García Carballeira 47 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • Servidor • Cache • Bloque a expulsar Diseño de Sistemas distribuidos • Disco Félix García Carballeira 48 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • Servidor • Cache • Bloque limpio Diseño de Sistemas distribuidos • write() Félix García Carballeira • Disco 49 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • Servidor • Cache • Bloque solicitado Diseño de Sistemas distribuidos • write() • read() • Disco Félix García Carballeira 50 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • write() • read() • Servidor • Cache • Bloque solicitado Diseño de Sistemas distribuidos • write() • read() • Disco Félix García Carballeira 51 Motivación de write-before-full • Proceso de usuario • Cliente read() • Cache • datos • write() • read() • Servidor • Cache • write() Diseño de Sistemas distribuidos • read() • Disco Félix García Carballeira 52 Problema de coherencia ! El uso de caché en los clientes de un sistema de ficheros introduce el problema de la coherencia de cache: Múltiples copias. ! El problema surge cuando se coutiliza un fichero en escritura: Coutilización en escritura secuencial " " ! Típico en entornos y aplicaciones distribuidas. " Coutilización en escritura concurrente ! Típico en aplicaciones paralelas. Diseño de Sistemas distribuidos Félix García Carballeira 53 Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B Fichero Diseño de Sistemas distribuidos Félix García Carballeira 54 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B open Fichero Diseño de Sistemas distribuidos Félix García Carballeira 55 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias • Cache en el cliente A • Cache en el cliente B write Fichero Diseño de Sistemas distribuidos Félix García Carballeira 56 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B close Fichero Diseño de Sistemas distribuidos Félix García Carballeira 57 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B Fichero Diseño de Sistemas distribuidos Félix García Carballeira 58 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B open Fichero Diseño de Sistemas distribuidos Félix García Carballeira 59 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la no actualización de las copias Cache en el cliente A Cache en el cliente B read ⇒ INCONSISTENCIA Fichero Diseño de Sistemas distribuidos Félix García Carballeira 60 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B Fichero Diseño de Sistemas distribuidos Félix García Carballeira 61 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B open Fichero Diseño de Sistemas distribuidos Félix García Carballeira 62 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B read Fichero Diseño de Sistemas distribuidos Félix García Carballeira 63 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B • write Fichero Diseño de Sistemas distribuidos Félix García Carballeira 64 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B close Fichero Diseño de Sistemas distribuidos Félix García Carballeira 65 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B Fichero Diseño de Sistemas distribuidos Félix García Carballeira 66 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B open Fichero Diseño de Sistemas distribuidos Félix García Carballeira 67 • Problema de la coherencia de cache • Inconsistencia en escritura secuencial debido a la utilización de técnicas de escritura diferida Cache en el cliente A Cache en el cliente B read ⇒ INCONSISTENCIA Fichero Diseño de Sistemas distribuidos Félix García Carballeira 68 • Problema de la coherencia de cache • Inconsistencia debido a la coutilización en escritura concurrente Cache en el cliente A Cache en el cliente B Fichero Diseño de Sistemas distribuidos Félix García Carballeira 69 • Problema de la coherencia de cache • Inconsistencia debido a la colutilización en escritura concurrente Cache en el cliente A open Cache en el cliente B open Fichero Diseño de Sistemas distribuidos Félix García Carballeira 70 • Problema de la coherencia de cache • Inconsistencia debido a la colutilización en escritura concurrente Cache en el cliente A read Cache en el cliente B read Fichero Diseño de Sistemas distribuidos Félix García Carballeira 71 • Problema de la coherencia de cache • Inconsistencia debido a la colutilización en escritura concurrente Cache en el cliente A Cache en el cliente B write Fichero Diseño de Sistemas distribuidos Félix García Carballeira 72 • Problema de la coherencia de cache • Inconsistencia debido a la colutilización en escritura concurrente Cache en el cliente A Cache en el cliente B read ⇒ INCONSISTENCIA Fichero Diseño de Sistemas distribuidos Félix García Carballeira 73 Soluciones al problema de la coherencia ! No emplear caché en los clientes. Solución trivial que no permite explotar las ventajas del uso de cache en los clientes (reutilización, lectura adelantada y escritura diferida) ! No utilizar caché en los clientes para datos compartidos en escritura (Sprite). Accesos remotos sobre una única copia asegura semántica UNIX ! Mecanismos de caché sin replicación de datos Basado en esquemas cooperativos que definen un único espacio global formado por la unión de todas las cache del sistema. Los datos fluyen a través de las caches sin replicación ! Empleo de protocolos de coherencia de caché tokens " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 74 Protocolos de coherencia de cache ! Objetivos: Permitir el uso de cache en los clientes manteniendo coherente la información de acuerdo a la semántica de coutilización que define el sistema de ficheros ! Aspectos de diseño a considerar Granularidad del protocolo Mecanismo de validación Mecanismos de actualización Localización de las copias en las caches de los clientes " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 75 Granularidad ! Tamaño de la unidad sobre la que se mantiene coherencia ! Puede variar desde un único byte hasta el fichero completo ! Ejemplos: Sprite: fichero completo GPFS: byte ! Con semánticas UNIX, unidades grandes y acceso concurrentes: Posible falsa coutilización " " " Diseño de Sistemas distribuidos Félix García Carballeira 76 Falsa coutilización Proceso A Proceso B Unidad de coherencia Diseño de Sistemas distribuidos Félix García Carballeira 77 Validación de la caché ! Determinar si un dato almacenado en la cache es consistente ! Validación iniciada por el cliente. Contactar con el servidor para determinar el estado de la copia Frecuencia de validación " ! En cada acceso ! Al abrir el fichero ! Periódicamente " " Necesidad de almacenar información sobre la última actualización en caso de escritura diferida. Crece el tráfico de la red, consume CPU en el servidor y aumenta el tiempo de servicio de las peticiones Diseño de Sistemas distribuidos Félix García Carballeira 78 Validación de la caché ! Validación iniciada por el servidor " " " " El servidor almacena información sobre los datos accedidos por cada cliente y el modo de acceso Servidores con estado (implicaciones sobre la tolerancia a fallos) Si un dato es accedido por dos o más clientes, al menos uno en modo escritura, se notifica a los clientes para que invaliden o actualicen las caches Rompe el modelo cliente/servidor Diseño de Sistemas distribuidos Félix García Carballeira 79 Mecanismos de actualización ! Cuando hay una modificación sobre una copia y es necesario mantener una visión coherente hay que actualizar el resto de copias. ! Métodos: Actualización de las copias ! Excesivo tráfico en la red ! Inviable en sistemas de ficheros Invalidación de las copias. Se invalidan las copias y los futuros accesos se realizan sobre una copia consistente. ! Mensajes más cortos, menos tráfico en la red ! Mayor capacidad de crecimiento " " Diseño de Sistemas distribuidos Félix García Carballeira 80 Localización de las copias ! Es necesario conocer qué clientes almacenan copias de datos para realizar las acciones del protocolo ! Se utilizan esquemas basados en directorios. Cada entrada almacena la lista de clientes con copias en su cache. Directorio de mapa completo Directorio limitado Lista encadenada ! Directorios centralizados: un único gestor se encarga de la coherencia de todos los ficheros del sistema Posible cuello de botella ! Directorios distribuidos: existen varios gestores Mejor capacidad de crecimiento " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 81 Ejemplo ! En cliente operaciones: ! Open, read, write, close, " red " " " … Caché en clientes y servidores Semántica UNIX Cliente con caché writeback ¿Protocolo? /home1 /a /b Diseño de Sistemas distribuidos Félix García Carballeira 82 Ejemplo de protocolo de coherencia Sprite ! Si acceso concurrente conflictivo (1escritor + otro(s) cliente(s)) Se anula cache y se usa acceso remoto en nodos implicados ! En open el cliente siempre contacta con servidor especificando: Modo de acceso (R, W) Número de versión de la copia en cache del fichero (si la hay) ! En close no se vuelca el fichero ! Tratamiento del open en el servidor Si la copia del fichero en el servidor no está actualizada " " " " ! Solicita al último cliente que vuelque datos del fichero " Si no hay conflicto de acceso: ! Si la versión del cliente es más antigua, se le indica en mensaje de respuesta que la invalide Diseño de Sistemas distribuidos Félix García Carballeira 83 Ejemplo de protocolo de coherencia Sprite (cont.) ! Tratamiento del open en el servidor (cont.) " Si la petición produce un conflicto de acceso: ! Se le envía a los clientes con el fichero abierto una orden de invalidación y desactivación de la cache para ese fichero " Si era un escritor se le pide un volcado previo ! Se le envía en la respuesta al cliente una petición para invalidar y desactivar la cache para ese fichero " Si la petición se encuentra que ya hay conflicto ! Se le envía en la respuesta una petición de invalidar y desactivar la cache para ese fichero Diseño de Sistemas distribuidos Félix García Carballeira 84 Sistemas de ficheros de discos compartidos ! Sistema de almacenamiento compartido por múltiples clientes ! Separación entre la localización física y lógica ! Servidores de metadatos (MDS) ! Los clientes acceden directamente al almacenamiento sin pasar por servidores MDS clientes Red de almacenamiento Diseño de Sistemas distribuidos Félix García Carballeira 85 Mecanismo de acceso SNIA Diseño de Sistemas distribuidos Félix García Carballeira 86 Paralelismo en el acceso a los datos Diseño de Sistemas distribuidos Félix García Carballeira 87 Paralelismo en el acceso a los datos Dispositivos en paralelo Diseño de Sistemas distribuidos Félix García Carballeira 88 Paralelismo en el acceso a los datos Sistemas de ficheros paralelos Dispositivos en paralelo Diseño de Sistemas distribuidos Félix García Carballeira 89 Paralelismo en el acceso a los datos Computadores paralelos Sistemas de ficheros paralelos Dispositivos en paralelo Diseño de Sistemas distribuidos Félix García Carballeira 90 Paralelismo en el acceso a los datos Aplicaciones paralelas Computadores paralelos Sistemas de ficheros paralelos Dispositivos en paralelo Diseño de Sistemas distribuidos Félix García Carballeira 91 Paralelismo en el acceso a los datos Aplicaciones paralelas ! Explotar el paralelismo en múltiples niveles Computadores paralelos Sistemas de ficheros paralelos Dispositivos en paralelo Diseño de Sistemas distribuidos Félix García Carballeira 92 Paralelismo en el acceso a los datos Aplicaciones paralelas ! Explotar el paralelismo en múltiples niveles Computadores paralelos Sistemas de ficheros paralelos (SFP) Dispositivos en paralelo Diseño de Sistemas distribuidos Félix García Carballeira 93 Parallel devices: disk striping ! The data is broken down into blocks and each block is written to a separate disk drive ! RAID 0 ! Increase the performance " By spreading the I/O load across many channels and drives Diseño de Sistemas distribuidos 0 1 2 3 4 5 Félix García Carballeira 94 Parallel File Systems (PFS) ! Multiple I/O nodes Increase the bandwidth ! A file is distributed across the I/O nodes Parallel access ! To different files ! To the same file ! Parallel I/O interfaces MPI-IO ! Optimizations Collective I/O Access to non contiguous data " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 95 Acceso paralelo Acceso paralelo Diseño de Sistemas distribuidos Félix García Carballeira 96 Acceso paralelo Acceso paralelo Diseño de Sistemas distribuidos Félix García Carballeira 97 Acceso paralelo Aplicación paralela Acceso paralelo Diseño de Sistemas distribuidos Félix García Carballeira 98 Advantages of a PFS ! Usage of standard APIs (POSIX) and special APIs (MPI-IO) ! Parallel access to files (for reading and writing) from several client nodes. ! Increase the bandwidth by striping the files across multiples disks and I/O nodes. ! Load balancing between disks and I/O nodes. Maximize the bandwidth. ! Allows to store huge data sets. Diseño de Sistemas distribuidos Félix García Carballeira 99 Examples of PFS ! PVFS ! GPFS ! Expand Diseño de Sistemas distribuidos Félix García Carballeira 100 PVFS (Parallel Virtual File System) ! Parallel file system for Linux clusters Global name space Distributed File data Uses TCP on local file systems ! Mountable like NFS systems ! MPI-IO and optimizations for non-contiguous data access. ! www.pvfs.org " " " Diseño de Sistemas distribuidos Félix García Carballeira 101 PVFS Components ! Client (libpvfs) ! Servers: " " 1 x mgr: file manager, handles metadata for files n x iod: I/O servers, store and retrieve file data ! Kernel VFS module Diseño de Sistemas distribuidos Félix García Carballeira 102 PVFS 2 components PVFS2 Server CN0 Compute nodes CN1 … CNn N e t w o r k … Metadata Nodes PVFS2 Server … PVFS2 Server I/O Nodes … Diseño de Sistemas distribuidos Félix García Carballeira 103 Performance 30 NFS Bandwidth (MB/s) 25 PVFS 20 15 10 5 0 1 2 4 8 Num ber of clients Diseño de Sistemas distribuidos Félix García Carballeira 104 GPFS ! IBM’s shared disk, parallel file system for AIX, Linux clusters ! Used in many powerful supercomputers in the world ! Shared disk: all data and metadata on disk accessible from any node through disk I/ O interface (i.e., "any to any" connectivity) Parallel: data and metadata flows from all of the nodes to all of the disks in parallel Diseño de Sistemas distribuidos Félix García Carballeira 105 GPFS Characteristics ! Concurrent reads and writes, parallel data access - within a file and across files Byte-range locking Support fully parallel access both to file data and metadata Client caching enabled by distributed locking Large data blocks Prefetch, write-behind Access pattern optimizations " ! ! ! ! ! Diseño de Sistemas distribuidos Félix García Carballeira 106 GPFS Characteristics (Cont.) ! Scalability – in many respects Computing nodes File system nodes Disks Adapters High Availability Fault-tolerance via logging, replication, RAID support Survives node and disk failures Uniform access via shared disks - Single image file system High capacity multiple TB per file system, 100s of GB per file Standards compliant (POSIX) with minor exceptions and extensions " " " " ! " " ! ! ! Diseño de Sistemas distribuidos Félix García Carballeira 107 GPFS Architecture ! File system nodes Run user programs, read/write data to/from storage nodes Implement virtual file system interface Cooperate with manager nodes to perform metadata operations Manager nodes Global lock manager File system configuration: recovery, adding disks, … Disk space allocation manager Quota manager File metadata manager - maintains file metadata integrity Storage nodes Implement block I/O interface Shared access to file system and manager nodes Interact with manager nodes for recovery (e.g. fencing) Data and metadata striped across multiple disks multiple storage nodes " " " ! " " " " " ! " " " " Diseño de Sistemas distribuidos Félix García Carballeira 108 Large File Block Size ! Conventional file systems store data in small blocks to pack data more densely ! GPFS uses large blocks (256KB default) to optimize disk transfer speed 7 Throughput (MB/sec) 6 5 4 3 2 1 0 0 128 256 384 512 640 768 896 1024 I/O Transfer Size (Kbytes) Diseño de Sistemas distribuidos Félix García Carballeira 109 Parallel File Access From Multiple Nodes ! ! ! ! ! ! GPFS allows parallel applications on multiple nodes to access non-overlapping ranges of a single file with no conflict Global locking serializes access to overlapping ranges of a file Global locking based on "tokens" which convey access rights to an object (e.g. a file) or subset of an object (e.g. a byte range) Tokens can be held across file system operations, enabling coherent data caching in clients Cached data discarded or written to disk when token is revoked Performance optimizations: required/desired ranges, metanode, data shipping, special token modes for file size operations Diseño de Sistemas distribuidos Félix García Carballeira 110 Concurrency Control ! Token based distributed lock manager First lock request for an object requires a message to the token manager to obtain a token Subsequent lock requests can be granted locally Data can be cached as long as a token is held When a conflicting lock request is issued from another node the token is revoked ("token steal") Force on steal policy: modified data are written to disk when the token is revoked Whole file locking for less frequent operations (e.g., create, trunc, ...). Finer grain locking for read/write " " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 111 I/O in Parallel Programs ! Sequential I/O " All processes send data to rank 0, and 0 writes it to the file • lack of parallelism limits scalability, performance (single node bottleneck) Diseño de Sistemas distribuidos Félix García Carballeira 112 I/O in Parallel Programs ! Each process writes to a separate file Pros: parallelism, high performance ! Cons: lots of small files to manage difficult to read back data from different number of processes ! " " " Diseño de Sistemas distribuidos Félix García Carballeira 113 I/O in Parallel Programs ! Parallel I/O " Multiple processes of a parallel program accessing data (reading or writing) from a common file FILE P0 Diseño de Sistemas distribuidos P1 P(n-1) P2 Félix García Carballeira 114 Why Parallel I/O? ! Non-parallel I/O is simple but Poor performance (single process writes to one file) or Not interoperable with other tools (each process writes a separate file) ! Parallel I/O Provides high performance Can provide a single file that can be used with other tools (such as visualization programs) " " " " Diseño de Sistemas distribuidos Félix García Carballeira 115 I/O system layers Diseño de Sistemas distribuidos Félix García Carballeira 116 I/O system layers POSIX Diseño de Sistemas distribuidos Félix García Carballeira 117 Access patterns Diseño de Sistemas distribuidos Félix García Carballeira 118 Problems with traditional I/O interfaces With POSIX services: read(); lseek(); read(); lseek(); read(); . . It needs 23 calls non-contiguous data access . Diseño de Sistemas distribuidos Félix García Carballeira 119 I/O parallel interface: goals size With parallel interface we can define a view Create_view(fd, size, off); Read_view(fd, buf, size*12); It readed the two columns with only one call off Diseño de Sistemas distribuidos Félix García Carballeira 120 MPI-IO ! Parallel read/write ! non-contiguous data read/write ! non-blocking read/write ! collective read write ! portable data representation across platforms ! Derived data types Diseño de Sistemas distribuidos Félix García Carballeira 121 File view etype = MPI_INT filetype = two MPI_INTs followed by a gap of four MPI_INTs head of file displacement Diseño de Sistemas distribuidos FILE filetype filetype Félix García Carballeira and so on... 122 Example: writing a shared file #include<stdio.h> #include "mpi.h" int main(int argc, char **argv){ int i, rank, size, offset, nints, N=16; MPI_File fhw; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); int buf[N]; for ( i=0;i<N;i++){ buf[i] = i ; } Diseño de Sistemas distribuidos Félix García Carballeira 123 Example: writing a shared file (cont) offset = rank*(N/size)*sizeof(int); MPI_File_open(MPI_COMM_WORLD, "datafile3", MPI_MODE_CREATE|MPI_MODE_WRONLY, MPI_INFO_NULL, &fhw); printf("\nRank: %d, Offset: %d\n", rank, offset); MPI_File_set_view(fhw, offset, MPI_INT, MPI_INT, "native", MPI_INFO_NULL); MPI_File_write(fhw, buf, (N/size), MPI_INT, &status); MPI_File_close(&fhw); MPI_Finalize(); return 0; } Diseño de Sistemas distribuidos Félix García Carballeira 124 Distintos tipos de paralelismo Nodos De cómputo Paralelismo lógico Fichero lógico Diseño de Sistemas distribuidos Félix García Carballeira 125 Distintos tipos de paralelismo Nodos De cómputo Paralelismo lógico Fichero lógico Fichero físico Paralelismo físico discos Diseño de Sistemas distribuidos Félix García Carballeira 126 Problema: Muchos accesos a datos no contiguos Un único acceso Fichero lógico Fichero físico discos Diseño de Sistemas distribuidos Félix García Carballeira 127 Optimizaciones ! List I/O ! Data sieving ! Two-phase I/O ! Agregation Diseño de Sistemas distribuidos Félix García Carballeira 128 List I/O Node make a list List of (file offset, length): (0,2),(4,2),(8,2),(12,2), (16,2),(20,2),(24,2),(28,2) • I/O Node: serves the request Diseño de Sistemas distribuidos Félix García Carballeira 129 Data Sieving Data sieving is used to combine lots of small accesses into a single larger one Remote file systems (parallel or not) tend to have high latencies Reducing # of operations important ! Generally very effective, but not as good as having a PFS that supports noncontiguous access ! " " Diseño de Sistemas distribuidos Félix García Carballeira 130 Data Sieving Writes Using data sieving for writes is more complicated Must read the entire region first Then make our changes Then write the block back ! Requires locking in the file system Can result in false sharing (interleaved access) PFS supporting noncontiguous writes is preferred ! " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 131 Two-Phase Collective I/O Problems with independent, noncontiguous access Lots of small accesses Independent data sieving reads lots of extra data ! Idea: Reorganize access to match layout on disks Single processes use data sieving to get data for many Often reduces total I/O through sharing of common blocks ! Second ``phase'' moves data to final destinations ! " " " " Diseño de Sistemas distribuidos Félix García Carballeira 132 Agregation ! Aggregation refers to the more general application of this concept of moving data through intermediate nodes " " Different #s of nodes performing I/O Could also be applied to independent I/O ! Can also be used for remote I/O, where aggregator processes are on an entirely different system Diseño de Sistemas distribuidos Félix García Carballeira 133 Problems of traditional file systems Client Server Server ! Traditional PFS does not use standard servers ! Very difficult to use these systems in heterogeneous environments and clusters Diseño de Sistemas distribuidos Félix García Carballeira 134 Motivación de Expand ! Proporcionar un sistema de almacenamiento de altas prestaciones con servidores y protocolos estándar Fácil integración de sistemas heterogéneos Reutilización y agregación de recursos existentes Acceso paralelo a los datos " " " ! ¿Por qué? " " " Porque un servidor de datos estándar ya incluye prácticamente toda la funcionalidad necesaria Están disponible universalmente Independencia de la infraestructura de almacenamiento subyacente Diseño de Sistemas distribuidos Félix García Carballeira 135 Objetivo de Expand ! Ofrecer un nuevo enfoque a la construcción de SFP para Clusters y Grid, mediante el empleo de servidores de datos estándar ! Ventajas: " " " " " No requiere cambios en los servidores. Operaciones implementadas en los clientes Expand es independiente del sistema operativo utilizado en los clientes y servidores. Operaciones basadas en el protocolo del servidor Se simplifica la construcción del SFP. Se aprovechan los mecanismos de incremento de prestaciones de los servidores Permite utilizar servidores con diferentes arquitecturas y sistemas operativos Facilita la instalación y configuración Diseño de Sistemas distribuidos Félix García Carballeira 136 Arquitectura Nodo de cómputo Apps. POSIX MPI-IO .... Expand NFS GridFTP RNS-WS Local Acceso paralelo Nodo de cómputo .... Expand Protocolo del servidor Servidor Servidor Servidor estándar Servidor estándar Partición distribuida Diseño de Sistemas distribuidos Félix García Carballeira 137 Arquitectura Nodo de cómputo Apps. POSIX MPI-IO .... Expand NFS GridFTP RNS-WS Local Acceso paralelo Nodo de cómputo .... Expand Protocolo del servidor Servidor Servidor Servidor estándar Servidor estándar Partición distribuida Fichero 1 Fichero 2 Diseño de Sistemas distribuidos Félix García Carballeira 138 Estructura de los ficheros ! Fichero Expand: Subfichero de metadatos Varios subficheros de datos ! Datos distribuidos en diferentes servidores ! Proyección de los ficheros a los servidores con política flexible Fichero en Expand " " Diseño de Sistemas distribuidos Servidor Félix García Carballeira Servidor Servidor 139 Estructura de los ficheros ! Fichero Expand: Subfichero de metadatos Varios subficheros de datos ! Datos distribuidos en diferentes servidores ! Proyección de los ficheros a los servidores con política flexible Fichero en Expand " " Diseño de Sistemas distribuidos Servidor Félix García Carballeira Servidor Servidor 140 Estructura de los ficheros ! Fichero Expand: Fichero en Expand Subfichero de metadatos Varios subficheros de datos ! Datos distribuidos en diferentes servidores ! Proyección de los ficheros a los servidores con política flexible " " Servidor Servidor Servidor subficheros Diseño de Sistemas distribuidos Félix García Carballeira 141 Estructura de los ficheros ! Fichero Expand: Fichero en Expand Subfichero de metadatos Varios subficheros de datos ! Datos distribuidos en diferentes servidores ! Proyección de los ficheros a los servidores con política flexible 0 " 1 2 3 4 5 6 7 8 " subficheros Diseño de Sistemas distribuidos Servidor Servidor Servidor 0 1 2 3 4 5 6 7 8 Félix García Carballeira 142 Estructura de los ficheros ! Fichero Expand: Fichero en Expand Subfichero de metadatos Varios subficheros de datos ! Datos distribuidos en diferentes servidores ! Proyección de los ficheros a los servidores con política flexible 0 " 1 2 3 4 5 6 7 8 " subficheros Diseño de Sistemas distribuidos Servidor Servidor Servidor 0 1 2 3 4 5 6 7 8 Félix García Carballeira 143 Estructura de los directorios Visión lógica Visión física /Expand Dir1 Dir2 Servidor 1 Servidor 2 /export1 /export2 /export3 Dir3 Dir1 Dir2 Dir3 Dir4 Servidor 3 Proyección fichero A Diseño de Sistemas distribuidos Dir1 Dir2 Dir3 Dir4 Dir4 fichero A fichero A Félix García Carballeira Dir1 Dir2 Dir3 Dir4 fichero A 144 Gestión de metadatos ! Gestión distribuida de metadatos " " " Dos niveles Sin cerrojos Sin gestor de metadatos Fichero 0 2 3 5 6 7 8 bloque Servidor Servidor ! Metadatos distribuidos entre los servidores Nodo master Función hash(nombre) Equilibrio de carga 4 Servidor " metadatos " " 2 5 8 0 3 6 1 4 7 subficheros Diseño de Sistemas distribuidos Félix García Carballeira 145 Gestión de metadatos ! Gestión distribuida de metadatos " " " Dos niveles Sin cerrojos Sin gestor de metadatos Servidor Servidor Servidor ! Metadatos distribuidos entre los servidores Nodo master Función hash(nombre) Equilibrio de carga " metadatos " " Diseño de Sistemas distribuidos Félix García Carballeira 146 Acceso paralelo Bloques de datos Diseño de Sistemas distribuidos 0 1 2 3 4 5 6 7 8 Servidor Servidor Servidor 2 5 8 0 3 6 1 4 7 Félix García Carballeira subfichero 147 Acceso paralelo read(fd, buffer, count) buffer Bloques de datos Diseño de Sistemas distribuidos 0 1 2 3 4 5 6 7 8 Servidor Servidor Servidor 2 5 8 0 3 6 1 4 7 Félix García Carballeira subfichero 148 Acceso paralelo read(fd, buffer, count) buffer Bloques de datos 0 1 2 3 4 Expand 5 6 7 8 Threads Threads Diseño de Sistemas distribuidos Servidor Servidor Servidor 2 5 8 0 3 6 1 4 7 Félix García Carballeira subfichero 149 Acceso paralelo read(fd, buffer, count) buffer Bloques de datos 0 1 2 3 4 Expand 5 6 7 8 Threads Threads Acceso paralelo Diseño de Sistemas distribuidos filehandle2 filehandle1 filehandle3 Servidor Servidor Servidor 2 5 8 0 3 6 1 4 7 Félix García Carballeira subfichero 150 Acceso paralelo read(fd, buffer, count) buffer Bloques de datos 0 1 2 3 4 Expand 5 6 7 8 Threads Threads Acceso paralelo Diseño de Sistemas distribuidos filehandle2 filehandle1 filehandle3 Servidor Servidor Servidor 2 5 8 0 3 6 1 4 7 Félix García Carballeira subfichero 151 Acceso paralelo read(fd, buffer, count) buffer Bloques de datos 0 1 2 3 4 Expand 5 6 7 8 Threads Threads Diseño de Sistemas distribuidos filehandle2 filehandle1 Acceso paralelo filehandle3 Servidor Servidor Servidor 2 5 8 0 3 6 1 4 7 Félix García Carballeira subfichero 152 Interfaz MPI-IO utilizando ROMIO MPI-IO ADIO UNIX NFS PVFS Servidor Expand IBM PIOFS SGI XFS Servidor Partición distribuida Diseño de Sistemas distribuidos Félix García Carballeira 153 Reconfiguración dinámica de particiones Servidor 1 Servidor 2 Servidor 3 Metadatos 2 5 8 0 3 6 1 4 7 Hash (fichero) = servidor 2 Diseño de Sistemas distribuidos Félix García Carballeira 154 Reconfiguración dinámica de particiones Servidor 1 Servidor 2 Servidor 3 Servidor 4 Metadatos 2 5 8 Diseño de Sistemas distribuidos 0 3 6 1 4 7 Félix García Carballeira 155 Reconfiguración dinámica de particiones Servidor 1 Servidor 2 Servidor 3 Metadatos 2 5 8 0 3 6 1 4 7 Servidor 4 ? Hash (fichero) = servidor 3 Diseño de Sistemas distribuidos Félix García Carballeira 156 Reconfiguración dinámica de particiones Servidor 1 Servidor 2 Servidor 3 Servidor 4 Metadatos 2 5 8 0 3 6 1 4 7 Hash (fichero) = servidor 3 Diseño de Sistemas distribuidos Félix García Carballeira 157 Reconfiguración dinámica de particiones Servidor 1 Servidor 2 Servidor 3 Servidor 4 Metadatos 2 5 8 0 3 6 1 4 7 Instantánea ! Diferida ! Hash (fichero) = servidor 3 Diseño de Sistemas distribuidos Félix García Carballeira 158 Reconfiguración dinámica de particiones Servidor 1 Servidor 2 Servidor 3 Servidor 4 Metadatos 2 5 8 12 16 Diseño de Sistemas distribuidos 0 3 6 9 13 1 4 7 10 14 Félix García Carballeira 11 15 159 Versiones para Clusters Versión para Linux con NFS Versión en Java con NFS C App C App Java App. Java App. Expand Expand jExpand jExpand RPC RPC Java RPC Java RPC JVM JVM Acceso paralelo Acceso paralelo Protocolo NFS Servidor NFS Servidor NFS Protocolo NFS Partición distribuida Diseño de Sistemas distribuidos Servidor NFS Servidor NFS Partición distribuida Félix García Carballeira 160 Evaluación ! Objetivo: " Analizar el comportamiento de Expand frente a sistemas reales ! PVFS ! GPFS ! Servicios Globus para Grid ! Entornos: " " Cluster Grid Diseño de Sistemas distribuidos Félix García Carballeira 161 Entorno de pruebas Cluster Gigabit Ethernet ! 8 biprocesadores Pentium IV, 3.2 GHz ! 2 GB memoria por nodo ! Sistemas de ficheros evaluados: " " " Expand PVFS GPFS Diseño de Sistemas distribuidos Félix García Carballeira 162 Alto rendimiento Acceso paralelo a un fichero ! Programa paralelo (IOR) que escribe y lee un fichero de forma entrelazada (500 MB) con diferentes tamaños de acceso ! Interfaz MPI-IO Proceso 0 fichero 0 1 Proceso 1 2 3 4 Proceso 2 5 6 7 8 tamaño de acceso Diseño de Sistemas distribuidos Félix García Carballeira 163 Alto rendimiento Acceso paralelo a un fichero. Resultados 8 procesos (escritura) ancho de banda [MB/s] 120 100 80 60 40 XPN PVFS GPFS 20 1M B 51 2K B 25 6K B 12 8K B 64 KB 32 KB 16 KB 8K B 4K B 2K B 1K B 51 2 25 6 0 tamaño de acceso Diseño de Sistemas distribuidos Félix García Carballeira 164 Alto rendimiento Acceso paralelo a un fichero. Resultados 8 procesos (lectura) ancho de banda [MB/s] 140 120 100 80 60 XPN PVFS GPFS 40 20 1M B 51 2K B 25 6K B 12 8K B 64 KB 32 KB 16 KB 8K B 4K B 2K B 1K B 51 2 25 6 0 tamaño de acceso Diseño de Sistemas distribuidos Félix García Carballeira 165 Alta productividad Aplicación de procesamiento de imágenes ! Aplicación paralela que procesa un conjunto de 256 imágenes Cada proceso de la aplicación procesa un subconjunto de imágenes de forma independiente No hay acceso paralelo a un fichero ! Cada imagen tiene un tamaño de 5MB Volumen de datos: 2,5 GB ! Sobre cada imagen, la aplicación devuelve una nueva imagen aplicando una máscara fija de pixels " " " Diseño de Sistemas distribuidos Félix García Carballeira 166 Alta productividad Aplicación de procesamiento de imágenes procesamiento de imágenes(C) 100 XPN PVFS GPFS 90 80 tiempo [s] 70 60 50 40 30 20 10 0 1 2 4 8 16 número de procesos Diseño de Sistemas distribuidos Félix García Carballeira 167 Alta productividad Aplicación de procesamiento de imágenes procesamiento de imágenes (Java) 450 XPN PVFS GPFS 400 350 tiempo [s] 300 250 200 150 100 50 0 1 2 4 8 16 número de procesos Diseño de Sistemas distribuidos Félix García Carballeira 168 Hadoop file system ! Sistema de ficheros distribuido diseñado por Apache Foundation Inc. ! http://hadoop.apache.org/hdfs/ Diseño de Sistemas distribuidos Félix García Carballeira 169 Características básicas ! Adecuado para ejecutar sobre HW de propósito general ! ! (clusters) Tolerancia a fallos Gran ancho de banda El objetivo es gran ancho de banda, no baja latencia No está pensado para uso interactivo (procesamiento batch) Adecuado para aplicaciones que procesan grandes cantidades de datos Grandes ficheros y conjuntos de datos: GB hasta TB Decenas de millones de ficheros Streaming data access Modelo de coherencia: write-once-read-many " " ! " " ! ! Diseño de Sistemas distribuidos Félix García Carballeira 170 Arquitectura ! Arquitectura maestro/esclavo ! Nodo Namenode (único) Gestiona el espacio de nombres (único para todo el cluster) y regula el acceso a los ficheros ! DataNodes (normalmente uno por nodo en el cluster) Servidor de bloques en el sistema de ficheros local (ej: ext3) Gestiona el almacenamiento del nodo Los ficheros se dividen en bloques de 128 MB Cada bloque se replica en varios DataNodes Los clientes acceden a los DataNodes directamente " " " " " " Diseño de Sistemas distribuidos Félix García Carballeira 171 Arquitectura Diseño de Sistemas distribuidos Félix García Carballeira 172 Plataforma HW típica ! Clusters de PC organizados en racks Diseño de Sistemas distribuidos Félix García Carballeira 173 Espacio de nombres ! Espacio de nombres jerarquico ! Operaciones: crear, eliminar, renombar, etc. ! El espacio de nombres y los metadatos se almacenan en el Namenode ! Las aplicaciones pueden especificar el número de réplicas para un fichero: factor de replicación (se almacena como parte de los metadatos) Diseño de Sistemas distribuidos Félix García Carballeira 174 Replicación de datos ! HDFS está diseñado para almacenar grandes ficheros ! Cada fichero consta de una secuencia de bloques (64, 128 MB) ! Todos los bloques son del mismo tamaño, excepto el último ! Los bloques se replican en diversos DataNodes ! El NameNode monitoriza el estado de los DataNodes. Recibe periodicamente un Heartbeat. Diseño de Sistemas distribuidos Félix García Carballeira 175 Metadatos ! Todos los metadatos se almacenan en el NameNode ! El sistema de ficheros entero se almacena en un fichero denominado FsImage que se almacena en el sistema de ficheros local del NameNode ! Mantiene una imagen del sistema de ficheros en memoria ! El NameNode es un punto único de fallo en el sistema ! NameNode secundario Diseño de Sistemas distribuidos Félix García Carballeira 176 DataNodes ! Servidor de bloques ! No tienen conocimiento de la estructura de HDFS ! Cada bloque se almacena en un fichero diferente utilizando el sistema de ficheros local ! No almacena todos los ficheros en el mismo directorio ! Utiliza heurísticas para determinar el número óptimo de ficheros por directorio Diseño de Sistemas distribuidos Félix García Carballeira 177 Réplicas ! Localización Una réplica se almacena en un nodo del rack local, otra en otro nodo del mismo rack y otra en un nodo de otro rack. Replicas adicionales se almacenan aleatoriamente ! Selección Los clientes leen de la réplica más cercana Si hay una réplica en el mismo rack del lector se utiliza ésta " " " Diseño de Sistemas distribuidos Félix García Carballeira 178 Creación de un fichero ! Cuando un cliente crea un fichero no contacta con el ! ! ! ! ! NameNode inmediatamente El cliente HDFS almacena los datos en una cache local. Cuando los datos alcanzan el tamaño del bloque se contacta con el NameNode El NameNode inserta el nombre del fichero y asigna bloques El NameNode responde al cliente con el destino de las replicas para el bloque El cliente vuelca los datos Diseño de Sistemas distribuidos Félix García Carballeira 179 Pipeline de replicación ! Cuando un cliente vuelca los datos de un bloque lo hace en trozos de 4 KB ! Cuando el primer trozo de 4 KB llega al primer DataNode escribe su porción en disco y transfiere el bloque al siguiente DataNode y así sucesivamente Diseño de Sistemas distribuidos Félix García Carballeira 180