2013-11-12 5 views
0
curl -i -X PUT "http://SomeHostname:50070/webhdfs/v1/file1?op=CREATE" 
HTTP/1.1 307 TEMPORARY_REDIRECT 
Content-Type: application/octet-stream 
Location: http://sslave0:50075/webhdfs/v1/file1?op=CREATE&overwrite=false 
Content-Length: 0 
Server: Jetty(6.1.26) 

здесь вернуться sslave0 для DataNode, кажись, как внутренний адрес для меняWebhdfs возвращает неправильный DataNode адреса с

ответ

0

С WebHDFS, веб-интерфейс NameNode @port 50070 в вашем случае принимает запрос положенную и присваивает метаданные информацию о файле, который нужно сохранить. Затем он возвращает перенаправление на адрес узла данных (адрес ssalve0: 50075), где завершается фактическая Http PUT.

Нижняя строка - имя узла не содержит реальных данных, а только метаданных. Это узлы данных, которые хранят фактическую информацию для файла - следовательно, перенаправление

Если вы хотите иметь один прокси-узел, с помощью которого вам не нужно иметь дело с узлами данных таким образом, то вы хотите настройте вместо этого HttpFs.

+0

есть в любом случае для namenode для возврата внешнего IP-кода datanode? –

+0

Не останавливая все ваши datanodes и переконфигурируя их файл/etc/hosts (который будет иметь недостатки, так как весь трафик HDFS будет перетекать через внешние IP-адреса). Вы также можете добавить внутренние имена хостов на DNS-сервер или добавить сопоставления в файлы клиентских машин/etc/hosts. Вы можете узнать больше о том, как узлы данных обнаруживают и сообщают о своих адресах в наменоводе в книге ** Hadoop Operations ** Эрика Саммера, –