我正在尝试使用c应用程序从hadoop集群上传/下载一个文件,但在文档中找不到上传和下载的API。所以你能让我知道如何使用restapis从hadoop上传和下载文件吗?谢谢
i34xakig1#
您可以使用webhdfs restapi,如下所述http://hadoop.apache.org/docs/r1.0.4/webhdfs.html编辑:创建并写入文件第一步:提交http put请求,而不自动执行重定向,也不发送文件数据。curl-i-x put“http://:/webhdfs/v1/?op=create[&overwrite=][&blocksize=][&replication=][&permission=][&buffersize=]”请求被重定向到要写入文件数据的datanode:http/1.1 307 temporary\u redirect location:http://:/webhdfs/v1/?op=create。。。内容长度:0第二步:使用要写入的文件数据的位置头中的url提交另一个httpput请求。curl-i-x put-t“http://:/webhdfs/v1/?op=create…”客户端收到一个201 created响应,其内容长度为零,文件的webhdfs uri位于location头:http/1.1 201 created location:webhdfs://:/content length:0中注意,使用两步create/append的原因是为了防止客户端在重定向之前发送数据。这个问题由http/1.1中的“expect:100continue”头来解决;见rfc 2616,第8.2.3节。不幸的是,有一些软件库错误(例如jetty6http服务器和java6http客户端),它们不能正确实现“expect:100continue”。两步创建/附加是针对软件库bug的临时解决方法。
1条答案
按热度按时间i34xakig1#
您可以使用webhdfs restapi,如下所述http://hadoop.apache.org/docs/r1.0.4/webhdfs.html
编辑:
创建并写入文件
第一步:
提交http put请求,而不自动执行重定向,也不发送文件数据。
curl-i-x put“http://:/webhdfs/v1/?op=create[&overwrite=][&blocksize=][&replication=][&permission=][&buffersize=]”
请求被重定向到要写入文件数据的datanode:http/1.1 307 temporary\u redirect location:http://:/webhdfs/v1/?op=create。。。内容长度:0
第二步:
使用要写入的文件数据的位置头中的url提交另一个httpput请求。
curl-i-x put-t“http://:/webhdfs/v1/?op=create…”
客户端收到一个201 created响应,其内容长度为零,文件的webhdfs uri位于location头:http/1.1 201 created location:webhdfs://:/content length:0中
注意,使用两步create/append的原因是为了防止客户端在重定向之前发送数据。这个问题由http/1.1中的“expect:100continue”头来解决;见rfc 2616,第8.2.3节。不幸的是,有一些软件库错误(例如jetty6http服务器和java6http客户端),它们不能正确实现“expect:100continue”。两步创建/附加是针对软件库bug的临时解决方法。