设为首页 收藏本站
查看: 2574|回复: 0

[经验分享] html调用hadoop WebHDFS REST API

[复制链接]

尚未签到

发表于 2015-7-13 08:25:41 | 显示全部楼层 |阅读模式
首先,hadoop的WebHDFS支持通过REST API用http的方式访问HDFS。
原文链接:http://hadoop.apache.org/common/docs/current/hadoop-yarn/hadoop-yarn-site/WebHDFS.html

通过REST API能完成很多,如上传下载,查看文件,创建目录等操作. 本地的hadoop版本是hadoop2.0,装上了httpfs,端口是14000. 这里以上传文件(原文是Create and Write to a File)为例。

上传文件分为两步,

第一步先提交一个不自动重定向的,不发送文件数据的put请求 如,我要上传文件test.txt到user目录。执行以下命令:

curl -i -X PUT "http://10.20.18.1:14000/webhdfs/v1/user/test.txt?user.name=hdfs&op=CREATE"

[&overwrite=][&blocksize=][&replication=][&permission=][&buffersize=]"

//后面是可选参数其中overwrite是是否覆盖,默认为false,但是官方文档上说true是个Valid Values(晕)

//可以看出块大小,副本数,文件权限都是可以设置的。 执行之后会得到一些返回,如下:

HTTP/1.1 307 Temporary Redirect Server: Apache-Coyote/1.1 Set-Cookie: hadoop.auth="u=hdfs&p=hdfs&t=simple&e=1345220043113&s=ikU/wiUsFtaTHrkPQmaya5PHjkQ="; Version=1; Path=/ Location: http://10.20.18.1:14000/webhdfs/v1/user/test.txt?op=CREATE&user.name=hdfs&data=true Content-Type: application/json Content-Length: 0 Date: Fri, 17 Aug 2012 06:14:03 GMT

//注意到返回值是307
记下headers中的Set-Cookie和Location的内容。
例如,我把Set-Cookie的内容写到cookie.txt中,把Location写到url.txt中。
第二步:上传文件test.txt:

curl -i -X PUT -T test.txt -b cookie.txt --header "Content-Type: application/octet-stream" "`cat url.txt`"
这时就可以在hdfs上看到你上传的文件了。
当然,在命令行中完成hadoop-httpfsde restAPI调用肯定不是httpfs的本意。
这里用XMLHttpResquest来上传文件。作为例子。完整代码请查看附件。

在/usr/lib/hadoop-httpfs/webapps/ROOT下创建abc.html,这样可以通过httpfs的端口访问了


  • this.xhr.open( p.method, p.url, true);

  • this.xhr.setRequestHeader("Content-Type","application/octet-stream");//设置Content-Type属性

  • this.xhr.onreadystatechange = function() {

  • if( this.xhr.readyState != 4 ) { return; }

  • }.bind( this );

  • this.xhr.send( null );//发送文件,这里使用空,null
  这里的this.xhr是个XMLHttpResquest对象。在this.xhr.send( null );之前,XMLHttpResquest
已经完成了cookie和location的重定向(注意上面出现了的307,xmlhttpresqust在send的时候会对307返回值的请求重定向)。
  本文出自 “稀饭吃了不顶饿” 博客,请务必保留此出处http://chcearth.blog.iyunv.com/2179839/965704

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85934-1-1.html 上篇帖子: Hadoop学习笔记(三):Combiner funcitons 下篇帖子: [hadoop实战3]Hbase安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表