【问题标题】:RemoteException when creating file with WebHDFS REST API使用 WebHDFS REST API 创建文件时出现 RemoteException
【发布时间】:2016-07-18 13:59:02
【问题描述】:

我无法使用 Hadoop 的 WebHDFS 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 集群。

【问题讨论】:

标签: hadoop webhdfs


【解决方案1】:

似乎第二个 PUT 命令需要一个“createparent”参数。事实上,“overwrite”和“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"

【讨论】:

  • 我不需要添加 createparent 参数,我尝试使用较短的名称上传文件,但是一旦我确定系统上的文件名与我创建的文件名匹配hadoop 一切正常。
猜你喜欢
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 2014-11-09
  • 2021-12-23
  • 1970-01-01
  • 2017-05-10
相关资源
最近更新 更多