从HDFS加载keytab

问题描述 投票:0回答:1

我想将Oozie与需要使用Kerberos的Java Action一起使用。我在HDFS中有我的keytab。我怎么能说该文件是在HDFS中?

 Configuration conf = new Configuration();
 conf.set("hadoop.security.authentication", "Kerberos");     
 UserGroupInformation.setConfiguration(conf);
 UserGroupInformation.loginUserFromKeytab(kerberosPrincipal, kerberosKeytab);

我尝试过像hdfs://xxxx:8020/tmp/myKeytab.keytab这样的路径,我也设置了conf.set("fs.defaultFS", "hdfs://server:8020");,但它不起作用。

java hdfs kerberos keytab
1个回答
1
投票

Hadoop授权令牌仅适用于YARN和HDFS,它们将在7天后过期。对于所有其他服务 - 尤其是HBase(通过ZooKeeper),HiveServer2(直接或通过ZooKeeper),Hive Metastore(在Hive CLI中) - 您需要直接进行身份验证。对于长时间运行的服务,您需要定期重新进行身份验证以续订委派令牌(如果您依赖Slider,它会自动为您执行此操作)

选项1:要求Oozie为您的Action生成适当的<credential>。我希望它能够开箱即用和/或更好地记录下来 - Hive就像一个魅力; HBase不是这样;从未尝试过Hive2所以我不能确定。

选项2:要求Oozie从HDFS下载您的自定义密钥表文件(您负责限制对该密钥表的访问,不是吗?),使用<file>选项将Launcher容器的CWD下载,然后生成全部凭据你自己。

使用Java操作,它将是选项2。

© www.soinside.com 2019 - 2024. All rights reserved.