0

我想将 Oozie 与需要使用 Kerberos 的 Java 操作一起使用。我在 HDFS 中有我的密钥表。我怎么能说文件在 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");过,但它不起作用。

4

1 回答 1

2

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

选项 1:要求 Oozie 为您的操作生成适当<credential>的。我希望它真的可以开箱即用和/或有更好的文档记录——Hive 就像一个魅力;HBase 不是这样;从未尝试过 Hive2,所以我不能确定。

选项 2:要求 Oozie 从 HDFS 下载您的自定义密钥表文件(您负责限制对该密钥表的访问,不是吗???)到您的 Launcher 容器的<file>CWD .

使用 Java 操作将是选项 2。

于 2016-02-17T20:05:50.870 回答