从HDFS加载keytab

时间:2016-02-17 14:40:13

标签: java hdfs kerberos keytab

我想将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");,但它不起作用。

1 个答案:

答案 0 :(得分:1)

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

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

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

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