2017-04-14 1 views
1

J'essaie de comprendre Namenode et je me suis référé au matériel en ligne et se référant au livre Hadoop: Le guide définitif ainsi. Je comprends que Namenode a un concept comme: "éditer les journaux", "fsimage", et je peux voir les fichiers suivants dans mon Namenode.Comment Namenode reconstruit-il les informations complètes du bloc après le redémarrage?

============================================== ==========================

-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 23 22:53 edits_0000000000000000001-0000000000000000001 
-rw-r--r-- 1 root  root  1048576 Nov 23 23:42 edits_0000000000000000002-0000000000000000002 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 00:07 edits_0000000000000000003-0000000000000000003 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 21:03 edits_0000000000000000004-0000000000000000004 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 22:59 edits_0000000000000000005-0000000000000000005 
-rw-r--r-- 1 root  root  1048576 Nov 24 23:00 edits_0000000000000000006-0000000000000000006 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:15 edits_0000000000000000007-0000000000000000007 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:34 edits_0000000000000000008-0000000000000000008 
-rw-r--r-- 1 root  root  1048576 Nov 26 02:13 edits_inprogress_0000000000000000009 
-rw-rw-r-- 1 vevaan24 vevaan24  355 Nov 25 21:15 fsimage_0000000000000000006 
-rw-rw-r-- 1 vevaan24 vevaan24  62 Nov 25 21:15 fsimage_0000000000000000006.md5 
-rw-r--r-- 1 root  root   355 Nov 26 00:12 fsimage_0000000000000000008 
-rw-r--r-- 1 root  root   62 Nov 26 00:12 fsimage_0000000000000000008.md5 
-rw-r--r-- 1 root  root   2 Nov 26 00:12 seen_txid 
-rw-rw-r-- 1 vevaan24 vevaan24  201 Nov 26 00:12 VERSION 

dans ce livre, il a été mentionné que fsimage ne stocke pas les emplacements de bloc dans il.

J'ai des questions suivantes:

1) Est-ce que edit logs magasin les emplacements de blocs aussi bien? (pour les nouvelles transactions?)

2) Lorsque Namenode et Datanode sont redémarrés, comment Namenode obtient-il l'adresse de bloc? Mon doute est NN lu fsimage pour reconstituer l'information du système de fichiers, mais fsimage n'a pas l'info de l'emplacement du bloc, alors comment cette information est reconstruite?

3) Est-il vrai que fsimage stocke BLOC ID seulement, et si oui, BLOCK ID est-il unique sur les Datanodes? Est ID BLOC identique à celui de BLOC adresse?

Répondre

1

emplacements de blocs, à savoir les DataNodes sur lequel les blocs sont stockés est ni persisté dans le fichier fsimage ni dans le edit log. Namenode conserve cette cartographie uniquement dans la mémoire.

Il incombe à chaque datanode de conserver les informations de la liste des blocs qu'il stocke. Pendant le redémarrage, Namenode charge le fichier fsimage en mémoire et applique les modifications du edit log, les informations manquantes des emplacements de bloc sont obtenues à partir des datanodes lors de leur enregistrement avec leurs listes de blocage. Namenode, avec les informations des listes de blocs, construit le mappage des blocs avec leurs emplacements dans sa mémoire.

fsimage a plus de l'ID de bloc. Il contient les informations comme les blocs du fichier, la taille du bloc, le facteur de réplication, le temps d'accès, le temps de modification, les permissions sur les fichiers mais pas l'emplacement des blocs.

Oui,, les ID de bloc sont uniques. L'adresse de bloc renvoie l'adresse des datanodes dans lesquels réside le bloc.

+0

Merci beaucoup pour vos informations détaillées. Cependant, une chose que je ne suis pas encore capable de comprendre. Un Datanode a des données sous forme de blocs, mais comment DN sait-il à quel fichier appartient un bloc donné? Je suis d'accord que DN fournit des informations de bloc à NN, mais comment cela aide à localiser l'adresse de bloc pour un fichier donné sur un DN. – CuriousMind

+1

Les blocs sont identifiés par leur identifiant de bloc et sont uniques. Les datanodes contiennent cette information en eux. – franklinsijo

+0

Donc, cela signifie que DN enverrait l'identifiant de bloc à NN, et puisque fsimage a des informations d'identifiant de bloc, il effectue le mappage basé sur l'identifiant de bloc. Si cela est correct, cela a du sens. Et pour ce travail, les ID de bloc doivent être uniques tout le cluster hdfs.Est-ce que c'est une bonne compréhension? – CuriousMind