Можно ли читать данные во время загрузки в HDFS? - PullRequest
0 голосов
/ 14 июля

Представьте, что мистер XYZ загружает файл размером 500 МБ в Had oop (HDFS). 100 МБ данных успешно загружены в Had oop (HDFS) и Mr. AB C, поскольку клиент хочет прочитать загруженные данные, пока загрузка еще продолжается. Что произойдет в таком сценарии, будут ли отображаться 1000 МБ загруженных данных?

1 Ответ

1 голос
/ 14 июля

Сделайте что-нибудь вроде этого. Если вы загружаете файл размером 500 МБ в HDFS. Если 100 МБ данных были успешно загружены в HDFS, и другой клиент собирается прочитать загруженные данные, пока загрузка еще не завершена. Что тогда будет? Будут ли отображаться те 100МБ данных, которые выгружены, или нет? Размер блока по умолчанию для Hadoop1x составляет 64 МБ, а для Hadoop2x - 128 МБ.

Пусть размер блока равен 100 МБ, то есть пять блоков должны реплицироваться три раза (коэффициент репликации по умолчанию)

Ниже описывается процедура записи блока в HDFS:

Если у нас есть A, B, C, D и E - пять блоков для клиента, файла, имени-узла и данных- узел. Затем сначала клиент берет блок A и приближается к узлу имени для расположения узла данных, чтобы сохранить этот текущий блок и его реплицированные копии. Как только информация об узле данных станет доступной для клиента, он достигнет непосредственно узла данных и начнет копирование блока A, который в то же время будет реплицирован на второй узел данных. Когда блок копируется и реплицируется на узел данных, подтверждение хранилища блока A будет доставлено клиенту, затем, далее, клиент перезапустит ту же процедуру для следующего блока, то есть блока B.

Таким образом, если вы загружаете файл размером 500 МБ в HDFS, где 100 МБ данных были успешно загружены в HDFS, а другой клиент собирается прочитать загруженные данные, пока загрузка еще не завершена, тогда только текущий блок который пишется, не будет виден читателям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...