2014-11-15 5 views
7

Из книги "Hadoop The Definitive Guide", в рамках темы Namenodes и DataNodes упоминается, что:имен изображений и редактировать журнал

NameNode управляет пространством имен файловой системы. Он поддерживает дерево файловой системы и метаданные для всех файлов и каталогов в дереве . Эта информация постоянно сохраняется на локальном диске в форме двух файлов: изображение пространства имен и журнал изменений.

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

Я имею некоторую путаницу с этими файлами пространства имен и редактировать журнал.

Пространство имён для хранения метаданных.

Итак, мои вопросы

  1. Что такое журнал редактировать? И какова его роль?
  2. Можете ли вы объяснить утверждение «». Его основная роль заключается в том, чтобы периодически объединять изображение пространства имен с журналом редактирования, чтобы журнал изменений не становился слишком большим. "?

ответ

19

Пожалуйста, объясните мне, что такое журнал изменений? Какова роль этого файла журнала?

Первоначально, когда сначала запускается NameNode, файл fsimage сам будет пуст. Когда когда-либо NameNode получает запрос на создание/обновление/удаление, тогда этот запрос сначала записывается в файл edits для обеспечения долговечности, как только он сохраняется в файле edits, также выполняется обновление в памяти. Поскольку все запросы на чтение подаются из моментального снимка в памяти метаданных.

Его основная роль заключается в периодическом объединении образа пространства имен с журналом редактирования, чтобы журнал редактирования не становился слишком большим.

Итак, вы видите, что файл edits продолжает расти без ограничений на этом этапе. Теперь, если NameNode перезагружен или по какой-то причине опустился и был восстановлен, он не имеет представления памяти в метаданных, поэтому он должен прочитать файл edits и перестроить моментальный снимок в памяти, что может занять некоторое время на основе edits размер файла.

Как edits сам по себе является журналом WAL (запись вперед), все события должны записываться один за другим (добавьте только), в файле не может быть никаких обновлений, чтобы предотвратить случайные обращения к диску.

Чтобы предотвратить эту накладную (или сохранить файл edits), был введен вторичныйNameNode.Единственная цель SNN - убедиться, что файл edits не выходит за рамки. Таким образом, по умолчанию SNN запускает процесс, называемый checkpointing, когда когда-либо edits файл достигает 64 МБ или на каждый час (который когда-либо на первом месте).

процесс Checkpointing это сам просто, ПНЧ рассказывает Н.Н. к роли его текущему edits журналу и создавать новые редактируют файлы, называемые edits.new, ПНЧ затем копирует над fsimage и редактирует файл из NN и начинает применять события в правке файл в уже существующий файл fsimage (привезенный из NN), после завершения нового файла fsimage отправляется обратно в NN, а NN заменяет существующее fsimage новым, отправленным SNN, и переименовывает edits.new в edits. NN теперь имеет текущую версию fsimage, которая имеет события, применяемые к файлу edits.

Так, что если NameNode возобновляется после того, как чекпойнтинг был завершен, NameNode должен просто загрузить fsimage память и применять только обновления Недавних из edits журнала (который был заполнен после того, как контрольная точка была завершена), чтобы убедиться, он имеет обновленный вид пространства имен, которое более эффективно.