La technique de base du stockage des fichiers dans le stockage réside dans le système de fichiers utilisé par l'environnement d'exploitation. Contrairement aux systèmes de fichiers courants, Hadoop utilise un système de fichiers différent qui traite de grands ensembles de données sur un réseau distribué. Il s'appelle Hadoop Distributed File System (HDFS) . Cet article présente l'idée, avec des informations de base connexes pour commencer.
Qu'est-ce qu'un système de fichiers ?
Un système de fichiers est généralement une méthode et une structure de données que le système d'exploitation utilise pour gérer les fichiers sur un disque ou une partition. Du point de vue d'un disque magnétique, chaque donnée est une charge stockée dans des secteurs sur plusieurs pistes. Considérez les pistes comme des rangées en spirale et les secteurs comme de minuscules cellules à travers les pistes en spirale. Maintenant, si nous demandons au disque de localiser certaines données, il peut, au mieux, rediriger sa tête vers certains secteurs de la séquence en spirale. Ces données brutes ne sont significatives que si le système d'exploitation entre en ligne de compte; il est chargé de délimiter les informations d'un ensemble de secteurs à reconnaître en fichier. Un système d'exploitation organise les informations dans une structure de données de comptabilité appelée système de fichiers. Cette structure définit le modèle de comptabilité. Mais, il existe une différence technique sur la façon dont les systèmes d'exploitation gèrent cette structure. Par exemple, Windows utilise le modèle FAT32, NTFS, Linux utilise EXT2, EXT3, etc. Mais l'idée de base est qu'ils organisent tous les données selon une structure définie.
L'organisation du système de fichiers est principalement responsable de la gestion de la création, de la modification et de la suppression des fichiers (les répertoires sont également des fichiers), de la partition de disque, de la taille des fichiers, etc., et ils opèrent directement sur les secteurs bruts d'un disque ou d'une partition.
Fichiers dans un système distribué
Les caractéristiques d'un système distribué sont différentes dans le sens où le stockage est éparpillé sur plusieurs machines d'un réseau. Un référentiel unique ne peut pas contenir une telle quantité de données. Si une seule machine a une capacité de stockage et une puissance de traitement limitées, mais que, lorsque le travail de traitement et le stockage sont répartis entre les machines du réseau, la puissance et l'efficacité deviennent multiples. Cela ouvre non seulement la possibilité d'une puissance de traitement étendue, mais tire également parti de l'utilisation de l'infrastructure existante. Ce résultat est que le coût est minimisé, mais l'efficacité est augmentée. Chaque machine du réseau devient une bête de somme potentielle qui héberge des données limitées tout en faisant collectivement partie d'un stockage illimité et d'une puissance de traitement étendue. Le compromis est la complexité. Si cela peut être exploité avec des techniques innovantes, un système distribué est excellent pour faire face aux problèmes de données volumineuses. Le système de fichiers HDFS vise à atteindre cet objectif. En fait, au-delà de HDFS, il existe de nombreux autres systèmes de fichiers distribués similaires, tels que GPFS (General Parallel File System) d'IBM, Ceph (lien Wikipédia :liste des systèmes de fichiers distribués), etc. Ils essaient tous de résoudre ce problème dans différentes directions avec des taux de réussite variés.
Présentation HDFS
Le système de fichiers normal a été conçu pour fonctionner sur une seule machine ou un seul environnement d'exploitation. Les ensembles de données dans Hadoop nécessitent une capacité de stockage supérieure à ce qu'une seule machine physique peut fournir. Par conséquent, il devient impératif de partitionner les données sur plusieurs machines. Cela nécessite un processus spécial pour gérer les fichiers sur le réseau distribué. HDFS est le système de fichiers qui résout spécifiquement ce problème. Ce système de fichiers est plus complexe qu'un système de fichiers normal car il doit gérer la programmation réseau, la fragmentation, la tolérance aux pannes, la compatibilité avec le système de fichiers local, etc. Il permet à Hadoop d'exécuter des applications Big Data sur plusieurs serveurs. Il se caractérise par sa haute tolérance aux pannes avec un débit de données élevé sur du matériel à faible coût. L'objectif du système de fichiers HDFS est le suivant :
- Pour traiter des fichiers très volumineux
- L'accès aux données en continu vers le système de fichiers doit exploiter un modèle d'écriture unique et de lecture multiple.
- Exécuter sur du matériel de base bon marché
- Il doit tirer parti d'un accès aux données à faible latence.
- Prise en charge d'un grand nombre de fichiers
- Prise en charge de plusieurs rédacteurs de fichiers avec modification arbitraire des fichiers
Bases HDFS
Une plus petite quantité de données lues et écrites sur un disque a quelque chose appelé taille de bloc . En règle générale, la taille de ce bloc est de 512 octets et les blocs du système de fichiers sont de quelques kilo-octets. HDFS fonctionne sur le même principe, mais la taille du bloc est beaucoup plus grande. La plus grande taille de bloc exploite la recherche en minimisant les recherches et donc le coût. Ces blocs sont répartis dans quelque chose appelé clusters , qui ne sont que des blocs et des copies de blocs sur différents serveurs du réseau. Les fichiers individuels sont répliqués sur les serveurs du cluster.
Il existe deux types de nœuds fonctionnant dans le cluster selon un modèle maître-esclave. Le nœud maître est appelé namenodes et le noeud worker s'appelle datanodes . C'est à travers ces nœuds que HDFS gère l'arborescence et les métadonnées du système de fichiers (et de répertoires). En fait, un fichier est divisé en blocs et stocké dans un sous-ensemble de datanodes se répandre dans le cluster. Le noeud de données est responsable des demandes de lecture, d'écriture, de création de blocs, de suppression et de réplication dans le système de fichiers.
Les namenodes , d'autre part, sont des serveurs qui surveillent l'accès au système de fichiers et gèrent les fichiers de données dans le HDFS. Ils mappent les blocs au nœud de données et gèrent les demandes d'ouverture, de fermeture et de changement de nom de fichier/répertoire.
Nœuds de données sont la partie centrale du système de fichiers et font le travail de stockage et de récupération des requêtes de bloc du client. Namenode est le mainteneur à qui datanodes rapport. Cela signifie que si les namenodes sont effacés, les informations sur les fichiers seront perdues. Par conséquent, Hadoop s'assure que le nœud de nom est suffisamment résilient pour résister à tout type de défaillance. Une technique pour s'en assurer est de le sauvegarder dans un noeud de nom secondaire en fusionnant périodiquement l'image de l'espace de noms avec le journal d'édition. Le noeud de nom secondaire réside généralement sur une machine distincte pour prendre le relais en tant que namenode principal en cas de panne majeure.
Il existe de nombreuses façons d'interagir avec le système de fichiers HDFS, mais l'interface de ligne de commande est peut-être la plus simple et la plus courante. Hadoop peut être installé sur une machine et exécuté pour en avoir un aperçu de première main. nous en parlerons dans les articles suivants, alors restez à l'écoute.
Opérations sur le système de fichiers
Les opérations du système de fichiers HDFS sont assez similaires aux opérations normales du système de fichiers. Voici quelques listes juste pour donner une idée.
Copie les fichiers du système de fichiers local vers HDFS :
% hadoop fs -copyFromLocal docs/sales.txt hdfs://localhost/ user/mano/sales.txt
Crée un répertoire dans HDFS :
% hadoop fs -mkdir students
Répertorie les fichiers et répertoires du répertoire de travail actuel dans HDFS :
% hadoop fs -ls .
Conclusion
HDFS est une implémentation de ce que fait un système de fichiers représenté par l'abstraction de Hadoop. Hadoop est écrit en Java; par conséquent, toutes les interactions du système de fichiers sont intercédées via l'API Java. L'interface de ligne de commande est un shell fourni pour les interactions courantes. L'étude de HDFS ouvre un horizon différent au secteur de l'architecture distribuée et à ses procédures de travail complexes. De nombreux travaux sont en cours pour perfectionner ce modèle de calcul, dont l'impulsion est sans aucun doute le Big Data ces dernières années.
Référence
Documentation sur l'architecture HDFS