2016-07-15 116 views
1

我一直无法使用Hadoop的WebHDFS REST API创建文件。使用WebHDFS创建文件时发生RemoteException REST API

按照文档,我正在这样做。

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."}} 

我无法找到该错误消息的任何线索。有谁之前经历过这个吗?

我正在运行使用Ambari安装的Hadoop集群。

+0

&overwrite = false故意排除? – Shubhangi

+0

覆盖= false是否存在也是一样。 – loungerdork

+0

提交HDFS JIRA中的错误:https://issues.apache.org/jira/browse/HDFS-10684 – loungerdork

回答

0

看起来像第二个PUT命令需要一个“createparent”参数。事实上,需要“覆盖”和“创建”。 WebHDFS不使用默认值。肯定是一个bug ...

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

我不需要添加createparent参数,我试图用较短的名称上传文件,但一旦我确定我系统上的文件名与我在hadoop上创建的文件名一致。 – Hardy