Наменоде в oop кластер и fsimage и Edit_logs концепция - PullRequest
2 голосов
/ 31 января 2020

Я хочу кратко рассказать о namenodes и fsimage/edit_logs, и о том, как работает namenode, в которых было oop кластеров,

. NameNode хранит изменения в файловой системе в виде журнала, добавляемого к Файл родной файловой системы, редактирует.

Когда NameNode запускается, он читает состояние HDFS из файла образа fsimage, а затем применяет изменения из файла журнала изменений.

Затем записывает новое состояние HDFS в fsimage и запускает нормальную работу с пустым файлом редактирования.

FsImage - это файл, хранящийся в файловой системе ОС, который содержит полную структуру каталогов (пространство имен) HDFS с подробными сведениями о расположении данные о блоках данных и какие блоки хранятся на каком узле.

EditLogs - это журнал транзакций, который регистрирует изменения в файловой системе HDFS или любое действие, выполняемое в кластере HDFS, например добавление нового block,

replication, delete et c., Записывает изменения с момента создания последнего FsImage,

, затем объединяет изменения в файл FsImage для создания новый FsImage файл.

Когда мы запускаем namenode, последний FsImage файл загружается в «in-memory» и в то же время,

EditLog файл также загружается в память я Файл f FsImage не содержит актуальной информации.

Namenode сохраняет метаданные в памяти, чтобы максимально быстро обслуживать запросы нескольких клиентов.

Если этого не сделать, то для каждой операции namenode должен считывать информацию метаданных с диска в оперативную память. Этот процесс потребляет больше времени на поиск диска для каждой операции.

, поэтому подведем итоги


Постоянство метаданных HDFS в целом состоит из двух категорий файлов:

fsimage

Содержит полное состояние файловой системы в определенный момент времени. Каждой модификации файловой системы присваивается уникальный монотонно увеличивающийся идентификатор транзакции. Файл fsimage представляет состояние файловой системы после всех модификаций вплоть до указанного c идентификатора транзакции.

файл редактирования

Содержит журнал, в котором перечислены все изменения файловой системы. (создание, удаление или изменение файла), которое было выполнено после самого последнего fsimage.

Checkpointing

- это процесс слияния содержимого самого последнего fsimage с все изменения, примененные после слияния fsimage, создают новый fsimage. Проверка точек запускается автоматически с помощью политик конфигурации или вручную с помощью команд администрирования HDFS.


До сих пор кратко о namenode и журналах редактирования

Итак, давайте поговорим сейчас о нашем кластере (основанном на версии HDP 2.6.5)

В папке /var/hadoop/hdfs/namenode/current каждого namenode у нас есть следующие файлы fsimage

fsimage_0000000000000031788                                                                                                                                100%  104KB 104.1KB/s   00:00
fsimage_0000000000000031788.md5                                                                                                                            100%   62     0.1KB/s   00:00
fsimage_0000000000000041641                                                                                                                                100%  104KB 104.1KB/s   00:00
fsimage_0000000000000041641.md5                                                                                                                            100%   62     0.1KB/s   00:00

, а также журналы редактирования,

 .
 .
 .

-rw-r--r--  1 hdfs hadoop  328138542 Jan 23 12:37 edits_0000000022056979997-0000000022059239786
-rw-r--r--  1 hdfs hadoop  301415558 Jan 23 13:07 edits_0000000022059239787-0000000022061345588
-rw-r--r--  1 hdfs hadoop  311747850 Jan 23 13:37 edits_0000000022061345589-0000000022063490851
-rw-r--r--  1 hdfs hadoop         12 Jan 23 13:37 seen_txid
-rw-r--r--  1 hdfs hadoop  330301440 Jan 24 07:10 edits_0000000022063490852-0000000022065448335

Теперь мы запускаем оба namenode,

. В журналах namenode мы видим, что namenode воспроизводит каждый из журналов редактирования (например, если у нас есть 1965 edit_logs затем namenode воспроизводит их всех по одному .....)

Пример:

2020-01-27 06:20:37,306 INFO  namenode.FSEditLogLoader (FSEditLogLoader.java:loadEditRecords(266)) - replaying edit log: 2072759/2282427 transactions completed. (91%)
2020-01-27 06:20:38,307 INFO  namenode.FSEditLogLoader (FSEditLogLoader.java:loadEditRecords(266)) - replaying edit log: 2214991/2282427 transactions completed. (97%)

Итак, namenode полностью перешел в активное / ждущее состояние после воспроизведения всех 1965 edit_logs, и это занимает почти 17 часов

Так что после перезапуска обоих namenodes мы ожидаем получить fsimage обновленных файлов

Например:

-rw-r--r-- 1 hdfs hadoop  445716 Jan 31 08:11 fsimage_0000000000000132222
-rw-r--r-- 1 hdfs hadoop      62 Jan 31 08:11 fsimage_0000000000000132222.md5

Но в нашем случае после перезапуска обоих namenode мы получаем этот пример (fsimage not update - время с 03 января)

-rw-r--r-- 1 hdfs hadoop  445716 Jan 03 07:11 fsimage_0000000000000132222
-rw-r--r-- 1 hdfs hadoop      62 Jan 03 07:11 fsimage_0000000000000132222.md5

Итак, мы видим, что fsimage не было обновлением, несмотря на то, что namenode полностью запущен (через 17 часов) и с состоянием active / режим ожидания

Есть предложения, почему fsimage не обновляется с текущим временем?

...