Hue / Hive用户root不允许模拟Hue

时间:2017-11-13 08:30:57

标签: hadoop docker hive hue

情况: 我在不同的Docker容器中设置了Hive,Hue和Hadoop。在同一个Docker网络中。我为每个1 Hadoop Namenode,2个Datanodes,1个Hue实例,1个Hive Server和一个Postgres Metastore创建了一个Container。我能够在namenode的hdfs-site.xml中配置一个hue代理用户,并可以通过webhdfs浏览文件系统。但对于Hive,我在Hue中得到错误:

Failed to open new session: java.lang.RuntimeException: 
org.apache.hadoop.ipc.RemoteException
(org.apache.hadoop.security.authorize.AuthorizationException):
User: root is not allowed to impersonate hue

我可以在Hive中创建Hive表,或者从Sparkjobs中写入它们。

到目前为止我尝试过的事情:

我尝试添加

等属性
  • hive.server2.proxy.user = hue
  • hive.server2.enable.impersonation =真
  • hadoop.proxyuser.hue.hosts = *
  • hive.server2.authentication = NONE

在不同的配置文件中,如:

  • hdfs-namenode配置文件夹中的core-site.xml
  • hive-hadoop文件夹中的core-site.xml
  • 两者中的hdfs-site.xml
  • hive-conf文件夹中的hive-site.xml

大部分内容都是在类似问题中提出的,但似乎不再是最新版本了。对于某些属性,Hive说:属性未知

我需要澄清的内容:

  • 将配置添加到的正确文件是什么?
  • 添加什么是正确的属性?
  • 我是否必须为有关Metastore的色调添加一些配置?

其他信息:   - Hive版本:2.3.1   - Hive Hadoop版本:2.7.4   - Hadoop集群版本:2.7.2(我认为版本差异不应该是这里的问题?!​​)

Hue版本:4(gethue / hue:最新形式的docker-hub)

  • 完整错误日志here
  • Hive配置here
  • HDFS网站配置here

2 个答案:

答案 0 :(得分:1)

好的,我找到了一个有效的解决方案:

将以下属性添加到hadoop namenodes和datanodes core-site.xml:

<property>
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.root.hosts</name>
  <value>*</value>
</property>

此外,如果Hive在hue .ini文件中的另一台机器/容器上运行,则需要设置Hive配置的路径,并将hive-config文件夹复制到您的hue容器/机器。

请注意,在Hue文档中,WebHdfs的配置在 hdfs-site.xml 中完成,而hive配置在 hive-site.xml

答案 1 :(得分:0)

我也遇到了和你一样的问题。不同的是我在本地搭建了一个Hadoop生态集群。当我想将我的 HDFS 文件系统与 Hue 集成时,我遇到了这个问题。我的想法是我的 Hadoop 属于 root 用户。我安装hue的时候添加了hue用户,所以需要修改hue的权限,让我的hue访问Hadoop。其实这就像文件夹之间的相互访问一样。我的Hadoop属于最高级别的root,但是我的hue不是,所以思路很清晰。希望能帮到你