如何通过编码蜂巢来模仿用户

时间:2015-08-20 17:33:44

标签: java hadoop hive apache-storm

我们正在开发风暴和蜂巢集成,其中strom将通过配置单元写入数据HDFS。但是,我们部署的拓扑由strom运行(在运行风暴拓扑的集群上创建的用户)。但是,配置单元没有用户风暴,我们不想创建它(出于某些原因)。它失败并出现以下异常

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

用户X创建了表格。 我知道这个案子可以通过

来解决

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

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

禁用用户授权。

您是否知道,我们可以在写入Hive表时通过Java代码模拟用户X?

1 个答案:

答案 0 :(得分:0)

该MapR帖子是一个不同的问题:HiveServer2 (JDBC服务)代表远程客户端运行查询,这是真正的客户端/服务器模拟(如runAs中所示)。 / p>

在你的情况下,它更像伪造另一个身份。或使用头像。 [在此插入您的首选类比] 无论如何:

  • 在安全群集上,您将为用户X
  • 创建Kerberos票证
  • 否则HADOOP_USER_NAME是可行的方式,无论是作为Java属性还是作为env变量;例如,请参阅that post