如果你只是单纯地使用 Hadoop 的 MapReduce, 也许压根就不需要了解还有个 UserGroupInformation.
当你需要在 Yarn 上做些其它工作时,就必须与 UserGroupInformation 打交道。
UserGroupInformation保存hadoop用户及组信息
此类包装JAAS Subject,并提供确定用户的用户名和组的方法。它支持Windows,Unix和Kerberos登录模块。
常用代码
String userCode="user1";
String keytabPath = "./user1.keytab";
System.setProperty("java.security.krb5.kdc", kdc);
System.setProperty("java.security.krb5.realm", realm);
final Configuration conf = new Configuration();
UserGroupInformation ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI(userCode, keytabPath);
final HConnection connection;
ugi.doAs(new PrivilegedAction<Object>() {
@Override
public Object run() {
try {
connection = HConnectionManager.createConnection(conf);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
});
userCode是用户的名称,keytabPath是keytab文件的路径,一般系统是采用kdc生成的验证文件,来进行系统登录。系统不需要知道密码。
这里的ugi,就是kerberos的ticket, 是通过 UserGroupInformation.loginUserFromKeytabAndReturnUGI(userCode,keytabPath); 这个方法
成功后,返回的票据信息,通过这个票据,可以在没过期的情况下,用来访问hadoop系统。
具体分析:我们可以看看这篇文章
https://blog.csdn.net/weixin_35852328/article/details/83620379