0

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

那么你能告诉我如何使用 RestAPIs 从 Hadoop 上传和下载文件吗?

谢谢

4

1 回答 1

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 [&overwrite=][&blocksize=][&replication=] [&permission=][&buffersize=]"

请求被重定向到要写入文件数据的数据节点: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 Created Location: webhdfs://:/ Content-Length: 0

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

于 2014-06-02T14:04:20.770 回答