Java 从HDFS加载键表

Java 从HDFS加载键表,java,hdfs,kerberos,keytab,Java,Hdfs,Kerberos,Keytab,我想将Oozie与需要使用Kerberos的Java操作一起使用。 我的键盘是HDFS的。我怎么能说文件是HDFS格式的 Configuration conf = new Configuration(); conf.set("hadoop.security.authentication", "Kerberos"); UserGroupInformation.setConfiguration(conf); UserGroupInformation.loginUserFromKey

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

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

选项1:要求Oozie为您的操作生成适当的
。我希望它真的开箱即用,或者有更好的文档记录——蜂巢就像一个符咒;HBase则不然;从来没有试过Hive2所以我不能确定

选项2:请Oozie使用
选项将自定义密钥表文件从HDFS下载到启动器容器的CWD,然后自己生成凭据


对于Java操作,它将是选项2。

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

选项1:要求Oozie为您的操作生成适当的
。我希望它真的开箱即用,或者有更好的文档记录——蜂巢就像一个符咒;HBase则不然;从来没有试过Hive2所以我不能确定

选项2:请Oozie使用
选项将自定义密钥表文件从HDFS下载到启动器容器的CWD,然后自己生成凭据


对于Java操作,它将是选项2。

出于安全原因,在HDFS中存储键表似乎是一个糟糕的主意。我知道,但是如果我想从Oozie中的Java操作执行一些到Hive2的JDBC连接,我该怎么做呢?。委派令牌似乎不起作用,或者我没有让它起作用。“在HDFS中存储密钥表似乎是个坏主意”——为什么它比在本地文件系统上存储RSA私钥的web服务器更糟糕?或者用户在其PC上存储其SSH私钥?启用Kerberos后,HDFS具有与本地文件系统完全相同的访问控制机制(参见
chmod
setfacl
)。
loginUserFromKeytab()
需要本地文件,您必须先将其下载到本地容器中。Oozie很简单。@SamsonScharfrichter HDFS不是本地文件系统。默认情况下,数据节点中还有3个密钥表副本在静止时未加密。这使人们找到它们的可能性增加了三倍。您会在分布式文件系统上放置SSH私钥的3个副本吗?可能不会。出于安全考虑,在HDFS中存储键表似乎是个糟糕的主意,但如果我想从Oozie中的java操作执行到Hive2的JDBC连接,我该怎么做呢?。委派令牌似乎不起作用,或者我没有让它起作用。“在HDFS中存储密钥表似乎是个坏主意”——为什么它比在本地文件系统上存储RSA私钥的web服务器更糟糕?或者用户在其PC上存储其SSH私钥?启用Kerberos后,HDFS具有与本地文件系统完全相同的访问控制机制(参见
chmod
setfacl
)。
loginUserFromKeytab()
需要本地文件,您必须先将其下载到本地容器中。Oozie很简单。@SamsonScharfrichter HDFS不是本地文件系统。默认情况下,数据节点中还有3个密钥表副本在静止时未加密。这使人们找到它们的可能性增加了三倍。您会在分布式文件系统上放置SSH私钥的3个副本吗?可能不是。更新-现在HBase、Hive Metastore和HiveServer2都有其特定的委托令牌风格。Oozie(和Spark)可以处理它们生成的作业(执行者)的身份验证。UPDATE-现在HBase、Hive Metastore和HiveServer2都有其特定的委托令牌。Oozie(和Spark)可以处理它们生成的作业(执行者)的身份验证。