hadoop
Qu'est-ce que HDFS?
Recherche…
Remarques
Une bonne explication de HDFS et de son fonctionnement.
La syntaxe devrait contenir les commandes pouvant être utilisées dans HDFS.
HDFS - Système de fichiers distribué Hadoop
Le système de fichiers distribué Hadoop (HDFS) est un système de fichiers basé sur Java qui fournit un stockage de données évolutif et fiable conçu pour couvrir de grands groupes de serveurs de base. HDFS, MapReduce et YARN constituent le cœur d'Apache ™ Hadoop®.
HDFS est conçu pour être hautement tolérant aux pannes, ce qui est possible en enregistrant plusieurs copies (3 par défaut) d'un bloc de données donné sur plusieurs nœuds.
Recherche de fichiers dans HDFS
Pour rechercher un fichier dans le système de fichiers Hadoop Distributed:
hdfs dfs -ls -R / | grep [search_term]
Dans la commande ci-dessus,
-ls
sert à lister les fichiers
-R
est pour récursif (itérer dans les sous-répertoires)
/
signifie depuis le répertoire racine
|
pour diriger la sortie de la première commande vers la seconde
Commande grep
pour extraire les chaînes correspondantes
[search_term]
nom du fichier à rechercher dans la liste de tous les fichiers du système de fichiers hadoop.
Vous pouvez également utiliser la commande ci-dessous pour rechercher et appliquer également certaines expressions:
hadoop fs -find / -name test -print
Trouve tous les fichiers qui correspondent à l'expression spécifiée et leur applique les actions sélectionnées. Si aucun chemin n'est spécifié, le répertoire de travail actuel est utilisé par défaut. Si aucune expression n'est spécifiée, la valeur par défaut est -print.
Les expressions principales suivantes sont reconnues:
-
name pattern
-
iname pattern
Evalue comme true si le nom de base du fichier correspond au modèle utilisant la globalisation du système de fichiers standard. Si -iname est utilisé, la correspondance est insensible à la casse.
-
print
-
print0Always
Évalue à vrai. Fait en sorte que le chemin d'accès actuel soit écrit sur la sortie standard. Si l'expression -print0
est utilisée, un caractère ASCII NULL est ajouté.
Les opérateurs suivants sont reconnus:
expression -a expression
expression -and expression
expression expression
Bloque et divise HDFS
Taille de bloc et blocs dans HDFS : HDFS a pour principe de stocker des données dans des blocs à chaque fois qu'un fichier est chargé. Les blocs sont les partitions physiques des données dans HDFS (ou dans tout autre système de fichiers, d'ailleurs).
Chaque fois qu'un fichier est chargé sur le HDFS, il est divisé physiquement (oui, le fichier est divisé) en différentes parties appelées blocs. Le nombre de blocs dépend de la valeur de
dfs.block.size
danshdfs-site.xml
Idéalement, la taille du bloc est définie sur une valeur élevée telle que 64/128/256 Mo (contre 4 Ko dans le FS normal). La valeur de taille de bloc par défaut sur la plupart des distributions de Hadoop 2.x est de 128 Mo. La raison d’une taille de bloc plus élevée est due au fait que Hadoop est conçu pour traiter PetaBytes de données avec chaque fichier allant de quelques centaines de méga-octets à l’ordre de TeraBytes.
Disons par exemple que vous avez un fichier de taille 1024 Mo. Si votre taille de bloc est de 128 Mo, vous obtiendrez 8 blocs de 128 Mo chacun. Cela signifie que votre namenode devra stocker les métadonnées de
8 x 3 = 24
fichiers (3 étant le facteur de réplication).Considérons le même scénario avec une taille de bloc de 4 Ko. Il en résultera
1GB / 4KB = 250000
blocs, ce qui nécessitera la namenode pour enregistrer les métadonnées pour750000
blocs pour seulement un fichier de 1 Go. Étant donné que toutes ces informations relatives aux métadonnées sont stockées en mémoire, il est préférable d'utiliser une taille de bloc supérieure pour économiser ce bit de charge supplémentaire sur le NameNode.Encore une fois, la taille du bloc n'est pas extrêmement élevée, comme 1 Go, etc., car, idéalement, 1 mappeur est lancé pour chaque bloc de données. Ainsi, si vous définissez la taille du bloc sur 1 Go, vous risquez de perdre le parallélisme, ce qui peut ralentir le débit global.
2.) Fractionner la taille dans HDFS : les fractionnements dans le traitement Hadoop sont les blocs de données logiques. Lorsque les fichiers sont divisés en blocs, hadoop ne respecte aucun fichier binaire. Il divise simplement les données en fonction de la taille du bloc. Disons que si vous avez un fichier de 400 Mo, avec 4 lignes et que chaque ligne contient 100 Mo de données, vous obtiendrez 3 blocs de 128 MB x 3
et 16 MB x 1
. Mais lorsque les fractionnements d'entrée sont calculés alors que la saisie des données, les limites des fichiers / enregistrements sont gardées à l'esprit et dans ce cas nous aurons 4 fractionnements d'entrée de 100 Mo chacun, si vous utilisez, par exemple, NLineInputFormat
.
La taille de fractionnement peut également être définie par travail en utilisant la propriété mapreduce.input.fileinputformat.split.maxsize
Une très bonne explication de Blocks vs Splits peut être trouvée dans cette réponse SO /