Les blocs de données dans le système de fichiers distribué Hadoop (HDFS)

Lorsque vous enregistrez un fichier dans HDFS, le système, il se décompose en un ensemble de blocs individuels et stocke ces blocs dans différents nœuds esclaves dans le cluster Hadoop. Ceci est une chose tout à fait normal de le faire, comme tous les systèmes de fichiers cassent fichiers en blocs avant de les stocker sur le disque.

image0.jpg

HDFS n'a aucune idée (et ne se soucie pas) ce qui est stocké dans le fichier, afin que les fichiers RAW ne sont pas divisé en conformité avec les règles que nous, les humains seraient comprendre. Les humains, par exemple, voudraient les limites des enregistrements - les lignes montrant où un enregistrement commence et se termine - soient respectés.

HDFS est souvent parfaitement inconscients que l'enregistrement final dans un bloc peut être seulement un record partielle, avec le reste de son contenu aiguillés vers le bloc suivant. HDFS veut seulement faire en sorte que les fichiers sont divisés en blocs de taille égale qui correspondent à la taille de bloc prédéfinie pour l'instance Hadoop (sauf si une valeur personnalisée a été entré pour le fichier étant stocké). Dans la figure précédente, que la taille du bloc est de 128 Mo.




Pas tous les fichiers dont vous avez besoin pour stocker est un multiple exact de la taille de bloc de votre système, de sorte que le bloc de données final pour un fichier utilise seulement autant d'espace que nécessaire. Dans le cas de la figure précédente, le dernier bloc de données est 1Mo.

Le concept de stockage d'un fichier comme une collection de blocs est entièrement compatible avec la façon dont les systèmes de fichiers fonctionnent normalement. Mais ce qui est différent au sujet de HDFS est l'échelle. Une taille de bloc typique que vous verriez dans un système de fichiers sous Linux est de 4 Ko, alors une taille de bloc typique dans Hadoop est 128Mo. Cette valeur est configurable, et il peut être personnalisé, à la fois comme un nouveau système par défaut et une valeur personnalisée pour les fichiers individuels.

Hadoop a été conçu pour stocker des données à l'échelle du pétaoctet, où toutes les limites possibles à la montée en puissance sont minimisées. La taille haute de bloc est une conséquence directe de ce besoin de stocker des données sur une échelle massive.

Tout d'abord, chaque bloc de données stocké dans HDFS a sa propre métadonnées et doit être suivi par un serveur central afin que les applications ayant besoin d'accéder à un fichier spécifique peuvent être adressées à l'endroit où tous les blocs de l'fichiers sont stockés. Si la taille de bloc étaient dans la plage de kilo-octet, même de modestes volumes de données à l'échelle de téraoctet allaient submerger le serveur de métadonnées avec trop de blocs à suivre.

Deuxièmement, HDFS est conçu pour permettre un débit élevé de sorte que le traitement parallèle de ces grands ensembles de données qui se passe aussi rapidement que possible. La clé de l'évolutivité de Hadoop sur le côté de traitement des données est, et sera toujours, parallélisme - la capacité à traiter les blocs individuels de ces gros fichiers en parallèle.

Pour permettre un traitement efficace, un équilibre doit être trouvé. D'une part, la taille de bloc doit être suffisamment important pour justifier les ressources dédiées à une unité individuelle de traitement de données (par exemple, une carte ou de réduire la tâche). D'autre part, la taille de bloc ne peut pas être si grande que le système est en attente d'un temps très long pour une dernière unité de traitement de données pour terminer son travail.

Ces deux considérations dépendent évidemment de la nature des travaux en cours sur les blocs de données.


» » » » Les blocs de données dans le système de fichiers distribué Hadoop (HDFS)