2017-01-26 13 views

ответ

1

NameNode выделяет идентификатор блока и передает его клиенту. Затем клиент использует этот идентификатор блока при общении с DataNode для записи данных в блок.

Apache JIRA HDFS-4645 документирует текущий проект для выделения идентификаторов блоков. Он использует монотонно возрастающий идентификатор, начиная с определенной константы. Если вам интересен код для этого, обратитесь к классам BlockIdManager и SequentialBlockIdGenerator в кодовой базе Apache Hadoop.

+0

Пожалуйста, исправьте меня, если я ошибаюсь. По моему пониманию клиент разделит файл на блоки. Клиент запрашивает имя узла для получения доступности узлов данных. Затем записывает эти блоки в узлы данных. Как только процесс записи будет выполнен. Узлы данных будут предоставлять информацию о блоке для узла Name. Затем только метаданные обновления имени узла. В этом процессе, когда идентификатор блока генерируется, поскольку клиентский процесс фактически разделяет блоки. Имя узла узла назначает идентификаторы блоков для блоков, если узел имени не обновляется узлами данных , –

+0

Вы правы, что клиент решает, когда нужно выделить новый блок для файла, но NameNode всегда является центральной точкой для назначения нового идентификатора блока. Клиент делает RPC-вызов для NameNode для выделения блока. Затем NameNode генерирует идентификатор блока, сохраняет его в метаданных и отправляет этот идентификатор блока обратно клиенту. Затем клиент использует этот идентификатор блока при общении с DataNode. –

+1

Вы имеете в виду, когда клиент запрашивает узел имени для распределения узлов данных для блока, он отправляет идентификатор блока для этого блока клиенту? –