原创,转载请注明出处
若设置了dfs.block.access.token.enable=true时,启动时的日志中:
会有这样两条日志:
2013-02-21 19:59:07,006 INFO org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: dfs.block.access.token.enable=true
2013-02-21 19:59:07,006 INFO org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: dfs.block.access.key.update.interval=600 min(s), dfs.block.access.token.lifetime=600 min(s), dfs.encrypt.data.transfer.algorithm=null
启用前:
2013-02-21 19:41:22,950 INFO org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: dfs.block.access.token.enable=false
那么dfs.block.access.token.enable作用是什么呢:
根据Hadoop权威的解释(此处我是翻译的英文文档):
Delegation Tokens(代理token)
在分布式系统,如HDFS 或者MapReduce,会有很多客户端和服务器之间的交互,这些交互都必须要进行认证,例如:在一个HDFS读操作的过程中,需要多次调用namenode与datanode,
如果对每一次call,都使用三步式Kerberos认证,那么无疑会增加很高的负载,。Hadoop使用代理token,这种token在生成之后,就不会再和kerberos中心进行交互。Delegation Tokens
有Hadoop代表用户生成并使用,所以这里不要你进行签名认证。
一个Delegation Token,有NameNode产生,可以被认为是一个在client与服务器之间共享的secret,在client与server之间的第一次RPC调用的时候,并没有Delegation Token生成,所以它必须要经过kerberos进行认证,client会从namenode中获得一个Delegation Token。
如果client想进行HDFS blocks进行操作,client会使用一个特殊的Delegation Token,叫做block access token。这个token是namenode在client进行metadata请求的时候,作为给client的相应传递给client。client使用这个token来向datanode认证自己。这是可能是因为namenode会和datanode之间共享这个token,所以这是Block就只能被持有这个token的客户端进行访问了,要启用这token功能,需要设置dfs.block.access.token.enable =true。
在MapReduce中,JOB resource和metadata(比如JAR files,input splits,配置文件)都会在HDFS上进行共享,供jobtracker进行访问。而用户代码运行在tasktracker,访问HDFS上面的文件,这时候,Delegation Token会在Jobtrackers和tasktrackers之间共享。当job结束的时候,这个token就失效了。
Delegation Token 会为HDFS实例自动获得,但是如果你的job需要访问其他的cluster,那么你可以通过设置mapreduce.job.hdfs-servers 属性,指向不同HDFS URL。
我的伪分布环境中,并没有配置kerberos,但是也不报错。呵呵,试验就到此为止吧,安全的问题,以后再去研究。
分享到:
相关推荐
在本案例中,Spark Streaming应用程序遇到的问题是HDFS_DELEGATION_TOKEN(HDFS委托令牌)过期,导致程序无法继续运行。 问题背景: Spark Streaming应用程序在运行7天后自动退出,日志中显示一个与用户相关的HDFS_...
Inceptor是一款用于批量处理及分析的数据库。它支持SQL 2003标准、Oracle PL/SQL以及DB2 SQL PL,对Oracle、DB2以及Teradata 都有很好的方言支持,是Hadoop领域对SQL标准支持最完善的产品。Inceptor的另一大优势是对...
令牌分为两种主要类型:**授权令牌(Delegation token)**,通常用于本地和远程RDP登录;**模拟令牌(Impersonation token)**,适用于非交互式登录,如net use、WMI和WinRM等。 要成功窃取指定系统用户的访问令牌...
* Delegation Token 管理:包括 Delegation Token 的创建、更新、过期和详情查询。 * 消费者组管理:包括消费者组的查询、位移查询和删除。 * Preferred 领导者选举:推选指定主题分区的 Preferred Broker 为领导者...
3. **代理认证**: 如果需要在Hadoop集群内进行操作,如读写HDFS,Spark会使用Kerberos的Delegation Token进行代理认证。Delegation Tokens允许已认证的用户代表其他用户执行操作,且无需再次验证。 4. **代码实现**...
源码中包含了安全相关的接口和实现,如Token、Delegation Token等,这对于理解和实现Hadoop的安全配置非常有帮助。 深入学习Hadoop源码,不仅可以提升对大数据处理的理解,也能为开发、调试和优化Hadoop应用提供...
* HDFS 安全机制:客户端获取 Namenode 的初始访问认证(使用 Kerberos)后,会获取一个 delegation token,该 token 可以作为接下来访问 HDFS 或提交作业的认证。 * MapReduce 安全机制:所有关于作业的提交或者...
最重要的是,作业需要获取 (dt)Delegation Token 才能访问存储在不安全数据节点中的数据。 14/12/25 13:31:31 WARN security.SecurityUtil: Failed to get token for servicexxx.xxx.xxx.xxx:50070不同的 RPC 协议...
- **委托令牌(Delegation Token)**:用于实现跨域认证和长时间运行的应用程序认证。它允许用户在一段时间内持有对HDFS的访问权,而无需重新登录或提供密码。 - **块访问令牌(Block Access Token)**:确保数据...
1. **委托令牌(Delegation Token)** - **概述**:为了解决用户长时间保持连接的问题,引入了委托令牌机制。 - **设计**:用户通过NameNode获取委托令牌,该令牌用于后续的文件操作,减少了用户需要频繁重新认证...
Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,一个设计用于存储大量数据的分布式文件系统,具有高容错性。它是Apache软件基金会的一个开源项目,最初由Yahoo!的一个小组开发。 HDFS的设计基于Google...
21. yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled:此属性控制是否启用委托令牌认证过滤器,默认值为true。 22. yarn.resourcemanager.webapp.cross-origin.enabled:此属性控制是否启用跨域...
JBPM_TOKEN JBPM_TOKEN FK_TOKEN_NODE NODE_ 一个NODE可以有多个TOKEN JBPM_TASK JBPM_TASK FK_TASK_TASKNODE TASKNODE_ 一个NODE可以有多个TASK JBPM_TASK JBPM_TASK FK_TASK_STARTST STARTSTATE_ 一个开始节点...
1.6 JBPM_DELEGATION:流程代理类表(用于实例化jbpm中的action类) 6 1.7 JBPM_TASK:流程任务表 6 1.8 JBPM_TASKCONTROLLER:流程任务控制器 7 1.9 JBPM_VARIABLEACCESS:流程变量表 7 1.10 JBPM_MODULE...
- **TOKEN** (`FK_TOKEN_NODE`):与令牌表(`TOKEN`)关联,记录节点上的令牌信息。 - **TASK** (`FK_TASK_TASKNODE`, `FK_TASK_STARTSTATE`):与任务表(`TASK`)关联,表示节点可以包含多个任务或者作为任务的起始...
- `FK_TOKEN_NODENODE`:关联到JBPM_TOKEN,表明节点可以有多个令牌。 - `FK_TASK_TASKNODE` 和 `FK_TASK_STARTST`:一个节点可以有多个任务,开始节点可对应多个任务。 - `FK_LOG_SOURCENODE` 和 `FK_LOG_DESTNODE`...
- **jbpm_token**(流程token表) - **中文名称**:流程token表 - **数据表功能作用说明**: - 用于快速定位当前状态(`CurrentState`)。 - 用于分叉(`Fork`)和合并(`Join`)算法。 - 用于告知任务执行者任务索引...
外键连接到TRANSITION表示转换,EVENT表示事件,TOKEN表示令牌,TASK表示任务,ACTION表示动作,SCRIPT表示脚本,以及PROCESSDEFINITION表示节点所在的流程定义。 - **JBPM_TRANSITION**:记录流程中的转换,即从...
`JBPM_TOKEN`表记录流程实例中的令牌,这些令牌代表流程执行的当前状态。 `JBPM_TASK`表管理任务分配,一个节点可能有多个任务,而一个开始节点(STARTSTATE)可以启动多个任务。`JBPM_ACTION`和`JBPM_SCRIPT`分别...
用户使用 Auth0(任何身份提供者)登录Auth0 向浏览器返回一个 JSON Web Token 浏览器调用 Auth0 /delegation端点来验证令牌并将其交换为 AWS 临时凭证 var aws_arns = { role : 'arn:aws:iam::account_number:role...