RemoteException при создании файла с помощью WebHDFS REST API

Мне не удалось создать файл с помощью API-интерфейса Hadoop WebHDFS REST.

Следуя документам, я делаю это.

curl -i -X PUT "http://hadoop-primarynamenode:50070/webhdfs/v1/tmp/test1234?op=CREATE&overwrite=false"

Ответ:

HTTP/1.1 307 TEMPORARY_REDIRECT
Cache-Control: no-cache
Expires: Fri, 15 Jul 2016 04:10:13 GMT
Date: Fri, 15 Jul 2016 04:10:13 GMT
Pragma: no-cache
Expires: Fri, 15 Jul 2016 04:10:13 GMT
Date: Fri, 15 Jul 2016 04:10:13 GMT
Pragma: no-cache
Content-Type: application/octet-stream
Location: http://hadoop-datanode1:50075/webhdfs/v1/tmp/test1234?op=CREATE&namenoderpcaddress=hadoop-primarynamenode:8020&overwrite=false
Content-Length: 0
Server: Jetty(6.1.26)

После перенаправления:

curl -i -X PUT -T MYFILE "http://hadoop-datanode1:50075/webhdfs/v1/tmp/test1234?op=CREATE&namenoderpcaddress=hadoop-primarynamenode:8020"

Ответ:

HTTP/1.1 100 Continue

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

{"RemoteException":{"exception":"IllegalArgumentException","javaClassName":"java.lang.IllegalArgumentException","message":"Failed to parse \"null\" to Boolean."}}

Я не смог найти никаких указаний по этому сообщению об ошибке. Кто-нибудь испытал это раньше?

Я запускаю кластер Hadoop, установленный с помощью Ambari.


person loungerdork    schedule 15.07.2016    source источник
comment
Был ли &overwrite=false исключен преднамеренно?   -  person Shubhangi    schedule 15.07.2016
comment
Это то же самое, независимо от того, существует ли overwrite=false или нет.   -  person loungerdork    schedule 17.07.2016
comment
Сообщил об ошибке в HDFS JIRA: issues.apache.org/jira/browse/HDFS-10684   -  person loungerdork    schedule 14.08.2016


Ответы (1)


Похоже, что для второй команды PUT требуется параметр createparent. На самом деле нужны и «перезаписать», и «создать родитель». WebHDFS не использует значения по умолчанию. Однозначно баг...

curl -i -X PUT -T MYFILE "http://hadoop-datanode1:50075/webhdfs/v1/tmp/test1234?op=CREATE&namenoderpcaddress=hadoop-primarynamenode:8020&overwrite=false&createparent=false"
person loungerdork    schedule 18.07.2016
comment
Мне не нужно было добавлять параметр createparent, я пытался загрузить файл с более коротким именем, но как только я убедился, что имя файла в моей системе совпадает с именем файла, который я создавал в Hadoop, все заработало. - person Hardy; 12.08.2016