webhdfs не работает в песочнице HDP

Я получаю сообщение об ошибке при выполнении следующей команды в песочнице Hortonworks HDP 2.3_1:

 curl -i "http://localhost:50075/webhdfs/v1/queryresult/part-m-00000?op=OPEN

HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
Content-Length: 161
Connection: close

{"RemoteException":{"exception":"IllegalArgumentException","javaClassName":"java.lang.IllegalArgumentException","message":"java.net.UnknownHostException: null"}}

Когда я меняю порт на 50070, я получаю сообщение "curl: (7) couldn't connect to host".

Свойство webhdfs включено в моем hdsf-site.xml и его кластере Hadoop с одним узлом.

<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
  <final>true</final>
</property>

person bigdata2    schedule 02.10.2015    source источник


Ответы (3)


Существует ли файл /queryresult/part-m-00000? Попробуйте выполнить команду hadoop dfs -ls /queryresult/queryresult/part-m-00000 и посмотрите, сможете ли вы увидеть файл. Если вы можете проверить права доступа к файлу. Они должны иметь возможность чтения для пользователя, выполняющего запрос webhdfs.

person Olivier Twist    schedule 03.10.2015
comment
да файл есть. -rw-r--r-- 1 корень hdfs 59 2015-09-30 01:28 /queryresult/part-m-00000 - person bigdata2; 03.10.2015
comment
проверьте, что такое ip в песочнице, и используйте его вместо localhost. попробуйте это сначала прямо в песочнице из командной строки, а затем из окон - person Olivier Twist; 05.10.2015
comment
использование ip в команде в песочнице не изменяет сообщение об ошибке для порта 50075; однако для порта 50070 меня перенаправляют на другой сайт, когда я использую IP-адрес в команде: HTTP/1.1 307 TEMPORARY_REDIRECT Прагма: без кеша Срок действия: понедельник, 05 октября 2015 г., 02:23:02 GMT Дата: понедельник, 05 октября 2015 02:23:02 GMT Прагма: no-cache Content-Type: application/octet-stream Расположение: sandbox.hortonworks.com:50075/webhdfs/v1/queryresult/ Длина содержимого: 0 Сервер: Jetty( 6.1.26.hwx) - person bigdata2; 05.10.2015
comment
Мой хост-файл содержит следующие две записи: 127.0.0.1 localhost.localdomain localhost 10.0.2.15 sandbox.hortonworks.com sandbox ambari.hortonworks.com Я изменил вторую строку на 127.0.0.1 sandbox.hortonworks.com sandbox ambari.hortonworks.com. но все та же проблема с перенаправлением на sandbox.hortonworks.com - person bigdata2; 05.10.2015
comment
OPEN, если вы читаете документы для webhdfs, выполняет временное перенаправление. Заголовок http будет иметь местоположение. Так что пока у нас все хорошо. Сказав, что это то, что будет работать. 1. В песочнице Linux введите ifconfig. Обратите внимание на ipvm-адрес. Затем введите curl -v XGET ‹theipvmaddress›:50075/webhdfs/v1/queryresult/part-m-0000. Это выдаст некоторые вещи с перенаправлением местоположения в заголовке. Теперь выполните curl -XGET с этим местоположением. 127.0.0.1 — это то же самое, что и локальный хост. Вам нужен IP-адрес вашей песочницы Linux. Обязательно используйте мостовой адаптер с неразборчивым режимом, разрешающим все, кроме NAT. - person Olivier Twist; 06.10.2015
comment
У меня XGET не работает Я получаю следующее сообщение: * Ошибка getaddrinfo(3) для XGET:80 * Не удалось разрешить хост «XGET» * Закрытие соединения #0 curl: (6) Не удалось разрешить хост «XGET» * О подключении() к порту 50075 (#0) ‹IP_ADDR›. HTTP/1.1 › Агент пользователя: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 › Хост: ‹ip_address›:50075 › Принять: / ‹ HTTP/1.1 400 Неверный запрос - person bigdata2; 06.10.2015
comment
С мостовым адаптером и другими указанными вами настройками я даже не могу подключиться к виртуальной машине. Итак, вернемся к использованию NAT. - person bigdata2; 06.10.2015
comment
Это curl -v -XGET. Впервые используете curl? :-) И мостовой адаптер должен работать. Если нет, мы должны выяснить, что вы делаете неправильно. - person Olivier Twist; 07.10.2015
comment
Может быть, когда-нибудь мы сможем пообщаться в текстовом чате, и я проведу вас через это. На самом деле это не так уж сложно. - person Olivier Twist; 07.10.2015
comment
столкнулся с такой же проблемой, но решения так и не нашел( - person serg; 10.01.2016

Сначала 50075 не правильно, 50070 по умолчанию, но все равно не будет работать, потому что какое-то странное перенаправление на sandbox.hortonworks.com.

Чтобы исправить это, я добавил в "hosts" (для Windows находится здесь C:\Windows\System32\drivers\etc): file следующую запись

127.0.0.1   sandbox.hortonworks.com

После этого моему компьютеру удалось справиться с этим перенаправлением. Возможно, вам нужно будет перезапустить http-клиент, в моем случае это был хром.

person serg    schedule 10.01.2016

Согласно https://hadoop.apache.org/docs/r1.0.4/webhdfs.html лучше изменить на фактическое имя хоста машины.

Эта команда работает для меня (hdp 2.5):

curl -i "sandbox.hortonworks.com:50075/webhdfs/v1/data/xyz.json?op=OPEN"

Я не мог заставить его работать с локальным хостом.

person dinesh rajput    schedule 10.02.2019