Доброго времени суток!
Сегодня хотел освятить вопрос какие же структуры данных ханятся на главном сервере HDFS - NameNode. Но перед этим замечу, что у NN есть 2 очень важных "продукта жизнидеятельности". Файл checkpoint (fsimage) и файл изенений (editlog)
[root@namenode current]# ll|tail -8
-rw-r--r--. 1 hdfs hdfs 30 Mar 6 11:43 edits_0000000000000023545-0000000000000023546
-rw-r--r--. 1 hdfs hdfs 1048576 Mar 6 11:44 edits_inprogress_0000000000000023547
-rw-r--r--. 1 hdfs hdfs 30901 Apr 1 14:24 fsimage_0000000000000057057
-rw-r--r--. 1 hdfs hdfs 62 Apr 1 14:24 fsimage_0000000000000057057.md5
-rw-r--r--. 1 hdfs hdfs 32231 Apr 1 15:24 fsimage_0000000000000057268
-rw-r--r--. 1 hdfs hdfs 62 Apr 1 15:24 fsimage_0000000000000057268.md5
-rw-r--r--. 1 hdfs hdfs 6 Mar 6 11:43 seen_txid
-rw-r--r--. 1 hdfs hdfs 174 Apr 1 15:24 VERSION
Важный момент - что пишется в эти файлы.
NameNode имеет несколько структур:
1) Файл - блоки (например: /tmp/file1 - block66, block91). Пишется в журнал изменений.
2) Файл - права доступа (например: /tmp/file1 hdfs:hadoop 777). Пишется в журнал.
3) Блоки - datanode. (block66 - datanode1, datanode8, datanode14). Не пишется в журнал изменений.
При каждой перезагрузке DN - передает namenode список блоков, которые она содержит (так называемый block reporting). Если презагружалась NN список блоков ей передают все ноды кластера.