Résumé
- Le système de fichiers DFS Hadoop (HDFS) est un clone open source de Google File System (GFS).
- HDFS est conçu pour fonctionner sur un cluster de nœuds et prend en charge le modèle de programmation MapReduce en fournissant un système de fichiers distribué (DFS, Distributed File System) pour les données d’E/S.
- HDFS offre un espace de noms commun à l’échelle du cluster, peut stocker des fichiers volumineux, est optimisé pour l’accès « write-once, read-many » (écriture unique, lecture multiple) et est conçu pour assurer une haute disponibilité en présence de défaillances de nœuds.
- HDFS suit une topologie primaire/secondaire. Le NameNode gère les métadonnées et les données sont stockées sur les DataNodes.
- Les fichiers dans HDFS sont divisés en blocs (également appelés blocs), chacun ayant une taille par défaut de 128 Mo.
- Les blocs sont répliqués trois fois par défaut (ce qu’on appelle facteur de réplication) sur l’ensemble du cluster.
- HDFS suppose une topologie de cluster de type arborescence, optimise l’accès aux fichiers pour améliorer les performances et tente de placer des réplicas de bloc sur des racks.
- La conception HDFS d’origine suit la sémantique non modifiable et n’autorise pas l’ouverture de fichiers existants pour les écritures. Les versions plus récentes de HDFS prennent en charge les ajouts à des fichiers.
- HDFS est fortement cohérent, car une écriture de fichier n’est marquée comme terminée qu’une fois tous les réplicas écrits.
- Le NameNode fait le suivi des défaillances des DataNodes à l’aide d’un mécanisme de pulsation. Si les DataNodes ne répondent pas, ils sont marqués comme morts et des copies supplémentaires des blocs qui se trouvaient sur ce DataNode sont créées pour conserver le facteur de réplication souhaité.
- Le NameNode est un point de défaillance unique (SPOF) dans la conception HDFS d’origine. Un NameNode secondaire peut être désigné pour copier périodiquement les métadonnées à partir du NameNode principal, mais il ne fournit pas une redondance de basculement complète.
- HDFS offre une bande passante élevée pour MapReduce, une excellente fiabilité, des coûts réduits par octet et une bonne scalabilité.
- HDFS est inefficace avec les petits fichiers (en raison d’une taille de bloc par défaut importante), n’est pas conforme à POSIX et n’autorise pas la réécriture de fichiers, à l’exception d’ajouts dans les dernières versions de HDFS.
- Ceph est un système de stockage conçu pour les applications cloud. Ceph est basé sur un magasin d’objets distribué sur lequel sont superposés des services.
- Au cœur de Ceph se trouve RADOS, un cluster autogéré de démons de stockage d’objet (OSD) et de nœuds moniteurs. Grâce à des techniques avancées, les nœuds offrent les avantages suivants : gestion automatique, tolérance de panne et évolutivité.
- Un objet dans RADOS est haché dans un groupe de placement, puis associé à un OSD à l’aide de l’algorithme CRUSH.
- RADOS est accessible par le biais de librados, un client RADOS natif compatible avec différents langages de programmation.
- Les applications peuvent également accéder aux données dans RADOS en tant qu’objets par le biais de la passerelle RADOS, qui prend en charge les protocoles S3 et Swift au moyen d’une interface REST.
- RADOS peut également utiliser RBD pour exporter des périphériques de stockage de bloc. Ceux-ci peuvent être utilisés comme images de disque pour des machines virtuelles.
- Ceph FS est un système de fichiers superposé en couches sur RADOS. Il est basé sur l’utilisation de nœuds de métadonnées spéciaux qui font le suivi des métadonnées du système de fichiers. Les nœuds de métadonnées partitionnent dynamiquement l’arborescence du système de fichiers à l’aide d’un algorithme spécial. Les entrées de métadonnées sont également journalisées dans RADOS pour la tolérance de panne.