taille de bloc de données dans HDFS, pourquoi 64MO?
La valeur par défaut taille de bloc de données de HDFS/hadoop est de 64 mo.
La taille de bloc du disque est généralement de 4 ko.
Ce n'64 mo de bloc de taille moyenne? ->Est-ce que cela signifie que la plus petite unité de lecture à partir du disque est de 64 mo?
Si oui, quel est l'avantage de le faire?-> facile pour un accès continu des fichiers importants dans HDFS?
Pouvons-nous faire de même en utilisant l'original de la taille de bloc de 4 ko dans le disque?
Vous devez vous connecter pour publier un commentaire.
La taille du bloc est la plus petite unité de données que le système de fichier peut stocker. Si vous enregistrez un fichier de 1k ou 60 mo, il faudra monter d'un bloc. Une fois que vous traversez la 64 mo boundry, vous avez besoin d'un deuxième bloc.
HDFS est conçu pour traiter des fichiers volumineux. Disons que vous avez un 1000Mb fichier. Avec un 4k taille de bloc, vous auriez à faire de 256 000 demandes pour obtenir ce fichier (1 demande par bloc). Dans HDFS, ces demandes sont envoyées à travers un réseau et venir avec beaucoup de frais généraux. Chaque demande doit être traitée par le Nom de Nœud de figure où ce bloc peut être trouvé. C'est beaucoup de trafic! Si vous utilisez des blocs de 64 mo, le nombre de demandes descend à 16, de réduire considérablement le coût des frais généraux et de la charge sur le Nom de Nœud.
In the case of small files, lets say that you have a bunch of 1k files, and your block size is 4k. That means that each file is wasting 3k, which is not cool.
- ce n'est pas vrai dans le cas de HDFS. Disons que le fichier est de 100 mo, puis les blocs sont 64MM et 36BM. Généralement la taille du dernier bloc est de moins en moins, sauf si le fichier est un multiple de 64 MO.HDFS la conception a été inspirée à l'origine par la conception de la Google File System (GFS). Voici les deux raisons pour de grandes tailles de bloc comme indiqué dans l'original GFS papier (note 1 sur GFS terminologie vs HDFS terminologie: chunk = bloc, chunkserver = datanode, master = namenode; remarque 2: mise en forme en gras est de moi):
Enfin, je dois souligner que les actuelle de la taille par défaut d'Apache Hadoop est de 128 MO.
Dans HDFS la taille du bloc de contrôle le niveau de réplication declustering. La baisse de la taille des blocs les blocs sont plus uniformément répartis dans les DataNodes. Plus la taille de bloc vos données sont potentiellement moins également répartis dans votre cluster.
Quel est donc le point puis d'en choisir une hausse de la taille du bloc à la place de certaines de faible valeur? Si, en théorie, l'égalité de la distribution des données est une bonne chose, avoir une trop faible, la taille de bloc a quelques inconvénients. NameNode la capacité est limitée, afin d'avoir la taille de bloc de 4 ko au lieu de 128 MO signifie aussi avoir 32768 fois plus d'informations à stocker. MapReduce pourrait également profiter de la également distribué données par le lancement de plus de la carte de tâches de plus NodeManager et plus de cœurs du PROCESSEUR, mais dans la pratique, les avantages théoriques seront perdus sur de ne pas être en mesure d'effectuer séquentielle, tamponnée lit et à cause de la latence de chaque carte tâche.
Dans la normale des OS de taille de bloc de 4 ko et dans hadoop il est de 64 Mo.
Parce que pour faciliter le maintien des métadonnées dans les Namenode.
Supposons que nous avons seulement 4 ko de taille de bloc dans hadoop et nous essayons de charge de 100 MO de données dans ce 4K alors ici, nous avons besoin de plus de et plus le nombre de blocs de 4K nécessaire. Et namenode besoin de conserver tous ces blocs de 4K de métadonnées.
Si nous utilisons 64 MO de taille de bloc de données va être charger en seulement deux pâtés de maisons(64 mo et 36 MO).Donc la taille de métadonnées est diminué.
Conclusion:
Afin de réduire le fardeau sur le namenode HDFS préfèrent 64 MO ou 128 MO de taille de bloc. La taille par défaut du bloc est de 64 mo dans Hadoop 1.0 et il est de 128 mo dans Hadoop 2.0.
Il a plus à voir avec les disques cherche du HDD (Disque Dur, Lecteurs). Au fil du temps à la recherche de disque n'avait pas été en progression de plus quand par rapport au débit du disque. Ainsi, lorsque la taille de bloc est petit (ce qui conduit à de trop nombreux blocs) il y aura aussi de nombreuses recherches disque qui n'est pas très efficace. Comme nous faisons des progrès du HDD vers le SSD, le disque le temps de recherche n'a pas beaucoup de sens comme ils sont en mouvement les pièces en SSD.
Aussi, si il y a trop de blocs qu'il mettra à rude épreuve le Nom de Nœud. Notez que le Nom de Nœud a pour stocker l'ensemble de méta-données (données sur les blocs) dans la mémoire. Dans Apache Hadoop la taille de bloc par défaut est de 64 MO et dans le Cloudera Hadoop la valeur par défaut est de 128 MO.
La raison Hadoop a choisi de 64 mo est parce que Google a choisi de 64 MO. La raison pour laquelle Google a choisi de 64 mo est due à une boucle d'or argument.
Avoir une beaucoup plus petite taille de bloc serait la cause de solliciter les frais généraux d'augmenter.
Avoir un modérément taille de bloc rend la carte tâches de courir suffisamment vite que le coût de la planification d'eux devient comparable au coût de leur exécution.
Étant nettement plus grande taille de bloc commence à diminuer la disposition de lire le parallélisme disponible et peut en fin de compte il est difficile de planifier des tâches locales pour les tâches.
Voir Google Recherche De Publication: MapReduce
http://research.google.com/archive/mapreduce.html
Ci-dessous est ce que le livre "Hadoop: The Definitive Guide", 3e édition explique(p45).
nth file
emplacement de décalage - ou seront-ils ignorer n-1 fichiers avant de lire le n-ième contenu du fichier?