Hadoop官网翻译 【WebHDFS】

介绍

Http Rest API支持完整的FileSystem方法。

Client和Namenode之间的通信是RPC通信吗?实现了两套逻辑吗?

FileSystem URIs vs HTTP URLs

webhdfs://host:http_port/path
hdfs://host:rpc_port/path
这两个路径等同
使用REST API时,/webhdfs/v1,然后加上?op=

为啥要有http客户端?明明rpc的了?rpc和http的使用区别是啥?

HDFS 配置选项

  • dfs.web.authentication.kerberos.principal
  • dfs.web.authentication.kerberos.keytabs
  • dfs.webhdfs.socket.timeout
  • dfs.webhdfs.socket.read-timeout

认证

支持不开安全模式
curl -i “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?[user.name=<USER>&]op=…”
支持kerberos
curl -i --negotiate -u : “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=…”
支持Hadoop delegation
curl -i “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?delegation=<TOKEN>&op=…”
WebHdfs提供一个插件(默认两种实现方式),可以实现oauth2,这样客户端访问时就需要access token/credential
相关参数

  • dfs.webhdfs.oauth2.enabled
  • dfs.webhdfs.oauth2.access.token.provider
  • dfs.webhdfs.oauth2.client.id
    客户端ID用来获取凭据获取客户端ID
  • dfs.webhdfs.oauth2.refresh.url .
    获取凭据/刷新令牌的url

SSL配置

增加一个ssl-client.xml

<configuration>
 <property>
   <name>ssl.client.truststore.location</name>
   <value>/work/keystore.jks</value>
   <description>Truststore to be used by clients. Must be specified.</description>
 </property>

 <property>
   <name>ssl.client.truststore.password</name>
   <value>changeme</value>
   <description>Optional. Default value is "".</description>
 </property>

 <property>
   <name>ssl.client.truststore.type</name>
   <value>jks</value>
   <description>Optional. Default value is "jks".</description>
 </property>
</configuration>

core-site.xml增加

<property>
  <name>hadoop.ssl.client.conf</name>
  <value>ssl-client.xml</value>
  <description>
    Resource file from which ssl client keystore information will be extracted.
    This file is looked up in the classpath, typically it should be in Hadoop
    conf/ directory. Default value is "ssl-client.xml".
  </description>
</property>

代理用户

代理用户代理另一个用户提交
1.如果安全模式关闭
curl -i “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?[user.name=<USER>&]doas=<USER>&op=…”
2.使用kerberos
curl -i --negotiate -u : “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?doas=<USER>&op=…”
3.使用Hadoop委派
这个时候需要增加两个用户的delegation token
curl -i “http://<HOST>:<PORT>/webhdfs/v1/<PATH>?delegation=<TOKEN>&op=…”

跨站点请求伪造

需要配置,增加用户自定义的http header.主要的作用是进行预防跨域请求控制。

  • dfs.webhdfs.rest-csrf.enabled
  • dfs.webhdfs.rest-csrf.custom-header
  • dfs.webhdfs.rest-csrf.methods-to-ignore

重试策略

支持重试策略,用来处理比如说复制大文件超时,或者是HA故障转移时问题。

请求过滤

  • dfs.datanode.httpserver.filter.handlers
    写入datanode时的请求过滤
  • dfs.web.authentication.host.allow.rules
  • 什么网络,路径可以访问webhdfs

文件目录操作

创建和写入文件

  • 创建文件
    这一步不写入数据,返回数据节点
  • 向datanode创建文件,并写入文件
    没有指定权限的话,模式644。这一步不使用默认的fs.permission.umask-mode

都需要两步,需要和datanod的交互

其他文件操作

  • 连接文件
  • 打开读取文件
    支持自动重定向
  • 创建目录
  • 重命名目录
  • 删除文件
  • 截断文件
  • 文件状态
  • list目录/目录
  • 递归list目录
  • 获取文件统计信息
  • 获取文件配额信息
  • 设置配额
  • 获取文件校验和
  • 设置ACL相关
  • 设置owner
  • 设置复制因子
  • 设置存储相关
  • 设置EC策略
  • 创建snapshot
  • Delegation 相关

除了读写,其他的只需要和host:port交互。读写还要和datanode交互(datanode的http port)

返回的是json

参数

  • NoRedirect
    是否重定向
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值