Hiveserver2 未能在直线中打开新会话

Posted

技术标签:

【中文标题】Hiveserver2 未能在直线中打开新会话【英文标题】:Hiveserver2 failed to open new session in beeline 【发布时间】:2017-02-14 19:04:24 【问题描述】:

我在 Ubuntu 16.04 上运行 hive 2.1.1、hadoop 2.7.3。

ps aux | grep hive 表明 hiveserver2 正在运行。

我正在尝试使用用户 [hive2] 和密码 [password] 通过 beeline 登录到 hivesever2。

这是我的直线输出:

beeline> !connect jdbc:hive2://localhost:10000
Connecting to jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000: 
Enter password for jdbc:hive2://localhost:10000: 
17/02/14 13:51:41 [main]: WARN jdbc.HiveConnection: Failed to connect to localhost:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: server is not allowed to impersonate anonymous (state=08S01,code=0)

我可以通过在直线中输入!connect jdbc:hive2:// 来连接到嵌入式模式。

这是我的 hive-site.xml:

 <configuration>

     <property>
         <name>javax.jdo.option.ConnectionURL</name>
         <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
     </property>

     <property>
         <name>javax.jdo.option.ConnectionDriverName</name>
         <value>com.mysql.jdbc.Driver</value>
     </property>

     <property>
         <name>javax.jdo.option.ConnectionUserName</name>
         <value>hive</value>
     </property>

     <property>
         <name>javax.jdo.option.ConnectionPassword</name>
         <value>password</value>
     </property>

     <property>
         <name>beeline.hs2.connection.user</name>
         <value>hive2</value>
     </property>

     <property>
         <name>beeline.hs2.connection.password</name>
         <value>password</value>
     </property>

     <property>
         <name>beeline.hs2.connection.hosts</name>
         <value>localhost:10000</value>
     </property>

 </configuration>

我删除了beeline-hs2-connection.xml,以防它覆盖hive-site.xml。

这是我的 core-site.xml

 <configuration>
     <property>
         <name>fs.defaultFS</name>
         <value>hdfs://localhost:9000</value>
     </property>

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

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

 </configuration>

如何修复错误并连接到 jdbc:hive2://localhost:10000?

谢谢!

【问题讨论】:

您在core-site.xml 中有任何proxyuser 条目吗? 嘿,franklinsijo,我将 * 作为值。我将 core-site.xml 添加到问题中。 您正尝试以哪个用户身份登录beeline? server? 用户:hive2,密码:密码。 core-site.xml 属性、hadoop.proxyuser.hive2.groupshadoop.proxyuser.hive2.hosts 中将该用户添加为代理用户,看看是否可以解决。除了已经存在的属性之外,添加这些属性。 【参考方案1】:

用户:服务器不允许冒充匿名

这里的server 是试图冒充anonymous 用户的用户。

将这些属性添加到core-site.xml 并重新启动服务。

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

【讨论】:

Franklinsijo,你实际上花了将近 2 个小时来帮助我!真的很感激! 谢谢...这个答案对我很有帮助。

以上是关于Hiveserver2 未能在直线中打开新会话的主要内容,如果未能解决你的问题,请参考以下文章

使用_IECreate()创建新会话

如何退出当前 CPAN 模块并打开一个新会话?

套接字 IO - 新会话触发断开连接

移动浏览器会针对每个请求启动新会话

如何使用 matlabcontrol 从 Java 调用 Matlab 函数而不每次都启动新会话?

org.openqa.selenium.SessionNotCreatedException:无法创建新会话。 (原始错误:请求了一个新会话,但一个正在进行中)