Hive PAM 无法使用 JDBC 打开客户端传输

Hive PAM Could not open client transport with JDBC

我将 Ambari 2.5.0.3 与 Hive 1.2.1 一起使用,并使用 PAM 配置了身份验证,然后 link 但是当我尝试使用 jdbc 连接到配置单元时,它会抛出以下错误:

WARN jdbc.HiveConnection: Failed to connect to localhost:10500 Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10500: Peer indicated failure: Error validating the login (state=08S01,code=0)

使用用户 hive 进行身份验证,但对于任何其他用户,它都会失败。 我尝试登录的用户在 hdfs 中有一个主文件夹。

有人知道如何解决这个问题吗?

更新

当我尝试登录时 /var/log/secure 显示:

Sep 1 20:31:36 ip-10-45-1-128 java: pam_securetty(login:auth): cannot determine user's tty Sep 1 20:31:36 ip-10-45-1-128 java: pam_unix(login:auth): check pass; user unknown Sep 1 20:31:36 ip-10-45-1-128 java: pam_unix(login:auth): authentication failure; logname= uid=1001 euid=1001 tty= ruser= rhost=

虽然我使用的用户是 1018,但显示它正在尝试使用系统中的 hive uid 用户 1001 登录。

如果您仔细阅读您遵循的文章内容,那么您会发现您正在使 /etc/shadow 只能被 root 用户和属于 hive 组的用户读取。以下是用于相同的命令。

2. Make shadow file accessible to hive user
/etc/shadow needs to be readable by hive:
chgrp hive /etc/shadow
chmod 550 /etc/shadow

/etc/shadow 文件可由 root 用户和来自 hive 组的用户读取。因此,当 hive 以外的用户尝试使用 jdbc 进行连接时,身份验证失败。

理想情况下,这不是让影子文件世界可读的好主意,但如果你已经为所有用户提供了配置单元连接,那么影子应该是世界可读的。