Hadoop UserGroupInformation 的那些 login
来源:互联网 发布:个人域名与企业域名 编辑:程序博客网 时间:2024/06/18 15:36
如果你只是单纯地使用 Hadoop 的 MapReduce, 也许压根就不需要了解还有个 UserGroupInformation.
当你需要在 Yarn 上做些其它工作时,就必须与 UserGroupInformation 打交道。
先了解下 Hadoop Authentication
然后说明下我要做的是,在当前 jvm 进程的用户并非欲提交作业的用户的情况下,成功切换用户身份信息。
第一个尝试就是直接用用户名、密码登录,生成 Subject, 再调用 UserGroupInformation.loginUserFromSubject(), 起初是一直没有成功,怀疑需要本地系统中存在集群的这个用户才行,添加了用户后还是行不通。只能放弃,转而使用 UserGroupInformation.loginUserFromKeytab(), 居然是同样的错误。经过多方排查,问题的根源定位到 Kerberos 的配置不正确, Kerberos 需要一个 krb5.conf 来指定 kdc 服务器、realm 等配置
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log[libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 240h renew_lifetime = 7d forwardable = true[realms] EXAMPLE.COM = { kdc = your-kdc-server admin_server = kerberos.example.com }[domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM该文件默认位置是 /etc/, 可以通过
-Djava.security.krb5.conf=/somewhere/krb5.conf来指定。只要这个配置文件正确了,用户名密码方式和 keytab 方式都能成功登录 UGI, 但是由于前者的实现是对 hadoop 代码的 hack,是应该极力避免的,因而采用后者。
虽然已经避免了在网络中传输密码的问题,却还是有些不足,传递 keytab 文件也是有风险的,因为 keytab 和密码是一样的有效期。
不久发现了 UGI 的另一个功能 Secure Impersonation,可以存在一个代理用户,认证成功后能够伪装成其他用户的身份
UserGroupInformation realUser = UserGroupInformation.loginUserFromKeytabAndReturnUGI( proxyUser), proxyKeytab);UserGroupInformation ugi = UserGroupInformation.createProxyUser(toLoginUsername, realUser);这样的话,就不需要为每个用户传输 keytab 文件了。
最终,还是采用了另一个途径
UserGroupInformation ugi = UserGroupInformation.getUGIFromTicketCache(ticketCache, username);这个ticketCache 是可以控制有效期的,是最理想的方案了。
这些认证方式依据需求情况来选择合适的就好。
1 0
- Hadoop UserGroupInformation 的那些 login
- 【hadoop】关于ERROR security.UserGroupInformation
- hadoop 2.6.0 安全问题--UserGroupInformation
- [Hadoop]ERROR security.UserGroupInformation:PriviledgedActionException as:Administrator
- ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException
- eclipse hadoop ERROR [main] security.UserGroupInformation
- hadoop ERROR security.UserGroupInformation: PriviledgedActionException as:root
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿
- Hadoop的那些事儿(转)
- Ubuntu上安装Hadoop环境中org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException
- Ubuntu上安装Hadoop环境中org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException
- 手机位置相关知识——HLR和VLR
- C++学习笔记(第六章 指针的应用 字符串 引用 之二)
- 理解ThreadLocal
- select 分组 每组显示N条
- 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server
- Hadoop UserGroupInformation 的那些 login
- 车辆违章查询接口
- 嵌入式 中断服务子程序注意事情
- Cocos2d-X Box2D的基本知识
- JDBC对事务的支持
- 亲爱的<head></head>解释复习。
- Android开发者版权时间限制 定时在哪段时间可以用。
- 解开Android应用程序组件Activity的"singleTask"之谜
- Metatable In Lua 浅尝辄止