如何通过蜂巢编码模拟用户

How to impersonate user through coding for hive

我们正在研究 storm 和 hive 集成,其中 strom 将通过 hive 将数据写入 HDFS。但是,由于我们部署的拓扑是由 strom 运行(用户在 运行 storm 拓扑的集群上创建的)。然而,蜂巢没有像 storm 这样的用户,我们不想创建它(出于某些原因)。它失败并出现以下异常

org.apache.hadoop.security.AccessControlException: Permission denied: user=strom, access=WRITE, inode="/user/tales/table":hdfs:hdfs:drwxr-xr-x 

用户 X 已创建 table。 我知道这种情况可以通过

解决

http://doc.mapr.com/display/MapR/Hive+User+Impersonation - 使用这个我们可以从配置单元配置中模拟用户

<property>
  <name>dfs.permissions</name>
  <value>false</value>
</property>

禁用用户授权。

您是否知道任何方式,我们可以在写入 Hive 时通过 java 代码模拟用户 X table?

MapR post 是关于一个不同的问题:HiveServer2 (JDBC 服务) 代表远程客户端运行查询,这是真实的 client/server 模仿(如 runAs)。

在你的情况下,这更像是伪造另一个身份。或者使用头像。 [在这里插入你喜欢的类比]无论如何:

  • 在安全集群上,您将为用户 X 创建 Kerberos 票证
  • 否则 HADOOP_USER_NAME 是要走的路,作为 Java 属性 或环境变量;例如参见 [​​=12=]