Я использую Webhdfs для хранения файла в моем hdfs-кластере. В файлах conf я упомянул фактор репликации как 2. Используя api Webhdfs, первый запрос PUT указывает нам, что местоположение datanode помещает файл и использует адрес в ответе, мы помещаем фактический файл в datanode, используя 2-й запрос PUT. Теперь, поскольку мы упоминали, что коэффициент репликации равен 2, файл будет реплицироваться в другой datanode, и мы знаем местоположение 1 из 2-х файлов, возможно ли получить местоположение второго файла, в отношении которого это дат-файл находится на? Заранее спасибоНужна помощь в поиске местоположения реплицированного файла в моем hdfs-кластере
0
A
ответ
0
Прежде всего, файлы в HDFS не сохраняются в целом. Скорее они разбиты на блоки, и эти блоки хранятся реплицируемым образом по всему кластеру. Поэтому ваш вопрос должен состоять в том, чтобы найти расположение второй реплики блока, а не файла.
Вы можете указать браузеру namenode_machine:50070
, веб-сайту HDFS. Нажмите на Browse the filesystem
и перейдите к соответствующему файлу. После того, как вы нажмете на этот файл, откроется новая страница. Прокрутить вниз до:
Total number of blocks: 1
-4906713039323389639: 127.0.0.1:50010
Это показывает вам весь блок этого файла и машину, на которой они размещены.
HTH
Я этого не знал, спасибо. – anonymous123
Итак, у меня возник вопрос, для размещения файла в hdfs, первый запрос - это запрос put, который возвращает, какой datanode направляет следующий запрос на отправку. Таким образом, namenode ведет себя как балансировщик нагрузки и возвращает этот datanode, у которого есть наименьший узел, или он всегда возвращает то же самое местоположение datanode. – anonymous123
Запрос перенаправляется в соседнюю базу данных, которая имеет свободные блоки для размещения данных. Это не тот же самый datanode каждый раз. – Tariq