整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

9.6.2委托令牌

hadoop 小红牛 12℃ 0评论

在诸如HDFS或MapReduce的分布式系统中,客户端和服务器之间频繁交
互,且每次交互均需认证。例如,一个HDFS读操作不仅会与namenode多
次交互、还会与一个或多个datanode交互。如果在一个高负载集群上采用
三步骤Kerberos票据交换协议来认证每次交互,则会对KDC造成很大压 力。因此,Hadoop使用委托令牌来支持后续认证访问,避免了多次访问
KDC。委托令牌的创建和使用过程均由Hadoop代表用户透明地进行,因而
用户执行kinit命令登录之后就无需再做额外操作了。当然,了解委托令牌的基本用法仍然是有必要的。

委托令牌由服务器创建(在这里是指namenode),可以视为客户端和服务器
之间共享的一个密文。当客户端首次通过RPC访问namenode时,客户端 并没有委托令牌,因而需要利用Kerberos进行认证。之后,客户端从
namenode取得一个委托令牌。在后续RPC调用中,客户端只需出示委托令
牌,namenode就能验证委托令牌的真伪(因为该令牌是由namenode使用密 钥创建的),并因此向服务器认证客户端的身份。

客户端需要使用一种特殊类型的委托令牌来执行HDFS块操作,称为“块
访问令牌”(block access token)。当客户端向namenode发出元数据请求
时,namenode创建相应的块访问令牌并发送回客户端。客户端使用块访问
令牌向datanode认证自己的访问权限。由于namenode会和datanode分享
它创建块访问令牌时用的密钥(通过心跳消息传送),datanode也能够验证这
些块访问令牌。这样的话,仅当客户端已经从namenode获取了针对某一个 HDFS块的块访问令牌时,才可以访问该块。相比之下,在不安全的
Hadoop系统中,客户端只需知道块ID就能够访问一个块了。可以通过将 dfs. block .access .token
.enable的值设置为true来启用块访问令牌特性。

在MapReduce中,jobtracker共享HDFS中的作业资源和元数据(例如JAR
文件、输入分片和配置文件)。用户代码运行在tasktracker上,并可以访问
HDFS上的文件(该过程在8.6.1节中介绍过)。在作业运行过程中,jobtracker
和tasktracker使用委托令牌访问HDFS。作业结束时,委托令牌失效。

默认的HDFS实例会自动获得委托令牌。但是若一个作业试图访问其他 HDFS集群,则用户必须将mapreduce.job.hdfs-servers作业属性设置 为一个由逗号隔开的HDFS URI列表,才能够获取相应的委托令牌。

转载请注明:全栈大数据 » 9.6.2委托令牌

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址