用于上传/下载的Hadoop Rest API

时间:2014-06-02 11:26:19

标签: hadoop webhdfs

我正在尝试使用C#应用程序从Hadoop集群上传/下载文件,但我找不到上传和下载文档的API。

那么请告诉我如何使用RestAPI从Hadoop上传和下载文件?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用此处所述的WebHDFS REST API http://hadoop.apache.org/docs/r1.0.4/webhdfs.html

修改

创建并写入文件

第1步:

提交HTTP PUT请求,而不会自动关注重定向,也不会发送文件数据。

  

curl -i -X PUT“http://:/ webhdfs / v1 /?op = CREATE                       [&安培;重写=] [&安培;块大小=] [&安培;复制=]                       [&安培;权限=] [&安培; BUFFERSIZE =]“。

请求被重定向到要写入文件数据的datanode: HTTP / 1.1 307 TEMPORARY_REDIRECT 位置:http://:/ webhdfs / v1 /?op = CREATE ... 内容长度:0

第2步:

使用Location标头中的URL和要写入的文件数据提交另一个HTTP PUT请求。

  

curl -i -X PUT -T   的 “http://:/?webhdfs / V1 / OP = CREATE ...”

客户端收到内容长度为零的201 Created响应和Location头中文件的WebHDFS URI: HTTP / 1.1 201已创建 位置:webhdfs://:/ 内容长度:0

请注意,创建/追加两步的原因是为了防止客户端在重定向之前发送数据。 HTTP / 1.1中的“Expect:100-continue”标头解决了此问题;请参阅RFC 2616,第8.2.3节。不幸的是,有软件库错误(例如Jetty 6 HTTP服务器和Java 6 HTTP客户端),它们没有正确实现“Expect:100-continue”。两步创建/追加是软件库错误的临时解决方法。