赞
踩
编写YARN应用程序的任何人都需要了解该过程,以便编写短期应用程序或长期服务。 他们还需要在早期开发阶段开始对安全集群进行测试,以便编写实际可行的代码。
How YARN Security works
YARN资源管理器(RM)和节点管理器(NM)合作以使用该用户的身份和访问权限来执行用户的应用程序。
The (active) Resource Manager:
1. 在集群中查找空间以部署应用程序的核心,即Application Master(AM)。
2. 请求该节点上的NM分配容器并在其中启动AM。
3. 与AM通信,以便AM可以请求新容器并操纵/释放当前容器,并提供有关已分配和正在运行的容器的通知。
The Node Managers:
1. 本地化资源:从HDFS或其他文件系统下载到本地目录。 这是使用附加到容器启动上下文的委托令牌完成的。 (对于非HDFS资源,使用其他凭据,例如群集配置文件中的对象存储登录详细信息)
2. 以用户身份启动应用程序。
3. 监控应用程序并向RM报告故障。
要在集群中执行代码,YARN应用程序必须:
集群文件系统中要“本地化”的文件列表。
要在容器中设置的环境变量。
在容器中执行以启动应用程序的命令。
YARN启动应用程序所需的任何安全凭证。
应用程序与任何Hadoop集群服务和应用程序交互所需的任何安全凭证。
2.拥有一个应用程序主机,它在启动时向YARN RM注册并监听事件。 任何希望在其他容器中执行工作的AM必须从RM请求它们,并且在分配时,创建一个ContainerLaunchContext,其中包含要执行的命令,执行命令的环境,本地化的二进制文件以及所有相关的安全凭证。
3.即使NM处理本地化过程,AM本身也必须能够检索在启动时提供的安全凭证,以便它本身可以与HDFS和任何其他服务一起使用,并将部分或全部这些凭证传递给启动容器。
必须从作为经过身份验证的用户执行的程序中获取YARN应用程序所需的委托令牌。 对于YARN应用程序,这意味着用户启动应用程序。 它是YARN应用程序的客户端部分必须执行此操作:
应用程序必须从与其打算交互的每个文件系统请求委托令牌 - 包括集群的主FS。 FileSystem.addDelegationTokens(更新者,凭证)可用于收集这些; 对于那些不发行令牌的文件系统(包括非kerberized HDFS集群),这是一个无操作。
与其他服务(例如Apache HBase和Apache Hive)交谈的应用程序必须使用这些服务的库来请求来自这些服务的令牌以获取委托令牌。 可以将所有令牌添加到同一组凭据中,然后保存到字节缓冲区以进行提交。
应用程序时间轴服务器还需要一个委托令牌。 这是在AM发布时自动处理的。
在AM中提取令牌
启动Application Master并调用触发用户登录的任何UGI / Hadoop操作时,UGI类将自动加载保存在由环境变量HADOOP_TOKEN_FILE_LOCATION命名的文件中的所有标记。
即使应用程序使用了密钥表,这也会发生在不安全的群集和安全群集上,以及安全群集上。 为什么? 因为使用YARN RM验证应用程序所需的AM / RM令牌始终以这种方式提供。
这意味着您在安全和不安全的群集中拥有相对类似的工作流程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。