2015-12-11 3 views
5

На https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html есть слова:Почему datanode отправляет информацию о местоположении блока в namenode?

в узлах DataNode сконфигурированы с расположением обоих NameNodes, а также передавать информацию о местоположении блока и сердцебиения обоего.

Но почему эта информация отправляется наменоданию и его отставному брату? Я думал, что эта информация уже содержится в fs-изображении namenode. Наменод должен знать, где он кладет блоки.

ответ

5

Название Узел содержит метаданные всего кластера. Он содержит сведения о каждой папке, файле, коэффициенте репликации, именах блоков и т. Д. Узел имен также сохраняет информацию о расположении блоков для каждого файла (эта информация построена из блоков отчетов, отправленных узлами данных) в памяти , Узлы

хранения данных следующую информацию для каждого блока:

  • Фактические данные, сохраненные в блоке
  • Мета данные для данных, хранящихся в блоке. В основном содержит контрольные суммы для данных, хранящихся в блоке.

Периодически отправляют сердечный ритм и блокируют отчеты в Узел имен.

Heart Beat:

  • Интервал сердца отчетов биений определяется параметром конфигурации dfs.heartbeat.interval (в HDFS-site.xml). По умолчанию установлено значение 3 секунды.
  • Некоторые из информации, содержащейся в сердце биений:
    • Регистрация: Данные сведения о регистрации узла
    • Емкость: Общий объем памяти доступен в узле данных
    • dfsUsed: Хранение используется по HDFS
    • Осталось: Остальное хранилище доступно для HDFS
    • blockPoolUsed: Хранение используемого блока пула
    • xmitsInProgress: Количество переводов из этого узла данных к другим
    • xceiverCount: Количество активных приемопередающих нитей
    • xmitsInProgress: Количество передач из этого узла данных в другие
    • cacheCapacity: общая емкость кэша доступна в узле данных
    • cacheUsed: Объем кэш-памяти используется
  • Эта информация используется имя узла следующим образом:
    • Здоровье данных узла: Если этот узел данных помечается как мертвый или живой?
    • Регистрация нового узла данных: Если это недавно добавленный узел данных, его информация регистрируется
    • Обновления метрики узла данных: информации посланной в сердцебиения используется для обновления метрики узел
    • выпуска команда на узел данных: Имя узел может выдавать следующие команды на узел данных, на основе информации, полученной в сердцебиения: BlockRecoveryCommand (восстановить указанные блоки), BlockCommand (для передачи блоков в другой узел данных, для недействительности определенных блоков), Cache/Uncache (c ommands для кэширования/uncaching блоков)

Блок отчетов:

  • Интервал отчетов блоков определяется конфигурацией dfs.blockreport.intervalMsec (в HDFS-site.xml). По умолчанию установлено значение 21600000 миллисекунд.
  • Некоторые из информации, содержащейся в докладе блок:
    • регистрации: Данные регистрационной информации узла
    • блоки: Информация о блоках, которая содержит: блок ID, длина блока, генерации блока метка времени, состояние блока реплики (например, для точной копии будет завершена или ждать, чтобы быть восстановлены и т.д.)
  • Эта информация используется имя узла для:
    • Отчет первого блока процесса: Если это первый отчет для недавно зарегистрированного Узла данных, он просто добавляет все допустимые реплики. Он игнорирует все недопустимые блоки, до следующего отчета блока.
    • Для обновления информации о блоках: Карта имени (Data Node -> Blocks) обновляется в названии узла. В новом докладе блока по сравнению со старым отчета и информацией об успешных блоках, поврежденных блоках, блоках и т.д. признано недействительным обновляются
+0

Спасибо, эти данные, построенных в памяти) – serg

1

Datanodes не доступны непосредственно извне кластера, его в частной сети. Hadoop-кластер подвержен сбоям узлов, а NameNode отслеживает все данные на разных DataNodes. Таким образом, любой запрос к кластеру адресуется NN, и он предоставляет адрес блока в DN.

Смежные вопросы