kerberos开启认证时webhdfs的api调用方法

  原理, API对接
内容纲要

概要描述

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之后是具体的命令,可以参考官网或者其他网络上的介绍

file

比如在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上面添加
file

然后去guardian上新建一个accesstoken,用-H参数指定:
curl -H "Guardian-Access-Token:<guardian_access_token>" http://172.22.42.2:50070/webhdfs/v1/?op=liststatus
注意-H参数的位置不能变
一个例子:
file

这个也能正常执行

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

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。