【问题标题】:Hadoop Rest API for upload / download用于上传/下载的 Hadoop Rest API
【发布时间】:2014-07-22 12:07:35
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 下载是打开/读取,上传是创建/写入/追加,它使用文件系统术语

标签: hadoop webhdfs


【解决方案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 创建 位置:webhdfs://:/ 内容长度:0

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

【讨论】:

  • 我确实参考了文档,但我找不到任何用于文件上传和下载的 API。
  • 谢谢。因此,对于上传,我必须创建一个新文件并将上传文件的内容写入其中。正确的?那么下载呢?有什么办法吗?目前我在“cmd”进程中使用 shell 命令来下载文件。
  • 是的,您可以使用获取请求 [curl -i -L "http://:/webhdfs/v1/?op=OPEN"]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多