概要描述
WebHDFS提供了访问HDFS的RESTful接口,是内置组件,并且默认开启,运行于NameNode和DataNode中,对HDFS文件的读写,将会重定向到文件所在的DataNode,并且会完全利用HDFS的带宽。
WebHDFS访问时,首先访问NameNode获知文件所在的DataNode地址,然后重定向到目标DataNode获取文件内容;
WebHDFS默认端口是50070和50075;
WebHDFS使得集群外的客户端可以不安装Hadoop和Java环境就可以对HDFS进行访问,并且不限制编程语言
引用自https://blog.csdn.net/moyefeng198436/article/details/113563923
官网手册:
https://hadoop.apache.org/docs/r3.2.2/hadoop-yarn/hadoop-yarn-site/FairScheduler.html
详细说明
TDH集群中webhdfs
namenode的hdfs-site.xml是必须将dfs.webhdfs.enabled属性设置为true
TDH中应该默认就是开启的。
hdfs开启了kerberos安全认证情况下,需要先做认证,否则会把报401错误
一个例子:
kinit hdfs
curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://172.22.42.2:50070/webhdfs/v1/?op=liststatus
注意不要用keytab方式做认证
参数op之后是具体的命令,可以参考官网或者其他网络上的介绍
比如在hdfs上建立一个目录/tmp/aaa_123456:
curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt -i -X PUT http://172.22.42.2:50070/webhdfs/v1/tmp/aaa_123456?op=MKDIRS
参考链接:
kerberos认证参考:
https://blog.csdn.net/tanzhangwen/article/details/39579567
https://stackoverflow.com/questions/26229025/how-to-use-usergroupinformation-with-kerberos-webhdfs
https://hadoop.apache.org/docs/stable/hadoop-auth/Examples.html
api的参数参考官网手册:
https://hadoop.apache.org/docs/r1.0.4/webhdfs.html#CREATE
https://cloud.tencent.com/developer/article/2037299
TDC集群中webhdfs
如果是TDC集群的话:
需要确保两个参数: dfs.accesstoken.enabled值为true, hdfs.webhdfs.enabled值为true,没有的话可以在hamurpai上面添加
然后去guardian上新建一个accesstoken,用-H参数指定:
curl -H "Guardian-Access-Token:<guardian_access_token>" http://172.22.42.2:50070/webhdfs/v1/?op=liststatus
注意-H参数的位置不能变
一个例子:
这个也能正常执行
curl -H "Guardian-Access-Token:UuA4Cepl1CETVIcN6kUZ-TEST-TEST.TDH" --negotiate -u : -b /cookiejar.txt -c /cookiejar.txt http://10.224.1.100:50070/webhdfs/v1/?op=liststatus