Qu'entend-on par "HDFS n'a pas d'accès aléatoire en lecture et en écriture"?
tout système de fichiers doit fournir une API pour accéder à ses fichiers et répertoires, etc.
Donc, ce que l'on entend par "HDFS manque de lecture aléatoire et de l'accès en écriture"<!--4?
donc, nous devrions utiliser HBase.
2 réponses
la taille par défaut du bloc HDFS est de 64 Mo. Donc vous ne pouvez pas lire une ligne ici, une ligne là. Vous lisez et écrivez toujours des blocs de 64 Mo. C'est très bien lorsque vous souhaitez traiter l'ensemble du fichier. Mais cela rend les HDFS inappropriés pour certaines applications, comme lorsque vous voulez utiliser un index pour rechercher de petits enregistrements.
HBase d'un autre côté est idéal pour cela. Si vous voulez lire un petit enregistrement, vous ne lisez que les petites enregistrement.
HBase utilise le HDFS comme support de stockage. Si comment offre-t-il un accès efficace aux documents?
HBase charge les tables de HDFS à la mémoire ou au disque local, donc la plupart des lectures ne vont pas à HDFS. Les Mutations sont d'abord stockées dans un journal en annexe seulement. Lorsque la revue est volumineuse, elle est intégrée dans un tableau "addendum". Quand il y a trop de tableaux d'addenda, ils sont tous compactés dans une nouvelle table primaire. Pour ce qui est des lectures, on consulte d'abord le journal, puis les tableaux d'addenda et enfin le tableau principal. Ce système signifie que nous n'écrivons un bloc HDFS complet que lorsque nous avons la valeur des modifications d'un bloc HDFS complet.
Une description plus détaillée de cette approche est dans le Bigtable livre blanc.
dans une base de données typique où les données sont stockées dans des tables au format RDBMS, vous pouvez lire ou écrire à n'importe quel enregistrement à partir de n'importe quelle table sans avoir à savoir ce qui est là dans d'autres enregistrements. Ceci est appelé aléatoire d'écriture/lecture.
mais dans HDFS les données sont stockées dans le format de fichier(généralement) plutôt que dans le format de table. Donc, si vous lisez / écrivez, ce n'est pas aussi facile que dans le RDBMS.