尝试通过 WebHCat 查询 Hive 时超级用户的未经授权的连接:hcat”

Posted

技术标签:

【中文标题】尝试通过 WebHCat 查询 Hive 时超级用户的未经授权的连接:hcat”【英文标题】:Unauthorized connection for super-user: hcat" when trying to query Hive through WebHCat 【发布时间】:2016-03-17 22:59:31 【问题描述】:

我正在尝试使用 WebHCat / Templeton 执行 Hive 查询。我将我的查询发布到 /templeton/v1/hive,并设置了等于我的查询的“执行”参数(现在是一个简单的“选择计数(*)”查询)。

但是当我这样做时,我总是会得到这个错误:

"error":"Unauthorized connection for super-user: hcat from IP 172.31.27.207"

从我目前能够找到的情况来看,这些“超级用户未经授权的连接”错误似乎通常与代理用户设置有关,因此我在 core-site.xml 中添加了以下内容:

 <property> 
   <name>hadoop.proxyuser.hcat.hosts</name> 
   <value>*</value> 
 </property> 

 <property> 
   <name>hadoop.proxyuser.hcat.groups</name> 
   <value>*</value> 
 </property>

不幸的是,这似乎根本没有帮助。添加这个并重新启动服务后,我仍然得到同样的错误。

我还确认此处引用的所有设置 - https://cwiki.apache.org/confluence/display/Hive/WebHCat+InstallWebHCat

设置为启用代理用户部分下的列表。

这是我在尝试查询时在 webhcat 日志中看到的内容:

WARN  | 17 Mar 2016 19:07:04,977 | org.apache.hive.hcatalog.templeton.Main | user.name is sent as form parameter which is deprecated as of Hive 0.13.  Should send it in the query string.
WARN  | 17 Mar 2016 19:07:04,977 | org.apache.hive.hcatalog.templeton.Main | user.name is sent as form parameter which is deprecated as of Hive 0.13.  Should send it in the query string.
WARN  | 17 Mar 2016 19:07:04,977 | org.apache.hive.hcatalog.templeton.Main | user.name is sent as form parameter which is deprecated as of Hive 0.13.  Should send it in the query string.
INFO  | 17 Mar 2016 19:07:05,064 | org.apache.hadoop.yarn.client.api.impl.TimelineClientImpl | Timeline service address: http://ip-172-31-27-207.ec2.internal:8188/ws/v1/timeline/
INFO  | 17 Mar 2016 19:07:05,064 | org.apache.hadoop.yarn.client.RMProxy | Connecting to ResourceManager at ip-172-31-27-207.ec2.internal/172.31.27.207:8050
INFO  | 17 Mar 2016 19:07:05,229 | org.apache.hadoop.yarn.client.api.impl.TimelineClientImpl | Timeline service address: http://ip-172-31-27-207.ec2.internal:8188/ws/v1/timeline/
INFO  | 17 Mar 2016 19:07:05,229 | org.apache.hadoop.yarn.client.RMProxy | Connecting to ResourceManager at ip-172-31-27-207.ec2.internal/172.31.27.207:8050
INFO  | 17 Mar 2016 19:07:05,305 | org.apache.hadoop.yarn.client.api.impl.TimelineClientImpl | Timeline service address: http://ip-172-31-27-207.ec2.internal:8188/ws/v1/timeline/
INFO  | 17 Mar 2016 19:07:05,305 | org.apache.hadoop.yarn.client.RMProxy | Connecting to ResourceManager at ip-172-31-27-207.ec2.internal/172.31.27.207:8050
ERROR | 17 Mar 2016 19:07:05,315 | org.apache.hive.hcatalog.templeton.CatchallExceptionMapper | Unauthorized connection for super-user: hcat from IP 172.31.27.207

关于还有什么可能导致此问题以及如何解决的任何想法?

【问题讨论】:

除了您在此处提到的内容之外,似乎还有一些其他设置 -doc.mapr.com/display/MapR/Hive+User+Impersonation 。不确定您是否已涵盖所有这些内容。 【参考方案1】:

好的,解决了。这就是发生的事情。我在 Ambari 工作以进行配置更改,这些设置位于“HDFS”部分下。进行更改后,Ambari 会提示您重新启动受影响的服务,因此我选择了这样做。不幸的是,事实证明,那只是重新启动 HDFS!因此,作为 YARN 一部分的 ResourceManager 组件(在 Ambari 术语中)没有被重新启动。重新启动 YARN 服务后,它现在可以正常工作了。

【讨论】:

【参考方案2】:

我有同样的问题,但下一个指南解决了我:http://docs.hortonworks.com/HDPDocuments/Ambari-2.2.0.0/bk_ambari_views_guide/content/_setup_HDFS_proxy_user.html

您必须添加用于访问 Ambari 用户界面的用户,而不是引发错误的用户。例如在我的情况下,错误是下一个:Unauthorized connection for super-user: root from IP 172.16.8.172 但我必须添加的用户是hadoop.proxyuser.admin.hosts

【讨论】:

以上是关于尝试通过 WebHCat 查询 Hive 时超级用户的未经授权的连接:hcat”的主要内容,如果未能解决你的问题,请参考以下文章

hive连接远程hadoop使用查询语句时,发生错误

尝试使用 min 子查询查找记录时 Hive 出错

将 hive 查询输出拆分为逗号分隔值

通过 JDBC 将文件加载到 hive

使用 Oozie 在 Hive 上执行查询时,如何解决“只能使用 kerberos 或 Web 身份验证颁发委托令牌”?

尝试在 Hive 上查找数字不适用于类似查询