beeline连接hive-server2:jdbc:hive2-java.net.SocketException: Connection reset

2020年09月11日 55点热度 1人点赞 0条评论

使用beeline方式连接hive-server2的过程中,报以下错误:

[ 08S01] Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: java.net.SocketException: Connection reset

查询官网资料得知,出现jdbc:hive2://localhost:10000: java.net.SocketException: Connection reset错误的原因,大概率是因为身份验证的问题。

嵌入模式:服务器和客户端在同一台机器中,就不会使用TCP连接

如果在hive.server2.authentication在HIVE_HOME/conf/hive-site.xml没有设置或者为NONE,则使用:

!connect jdbc:hive2://<host>:<port>

远程模式:支持多个客户端在下面两种身份验证方案中使用查询

SASL验证:

如果将HIVE_HOME / conf / hive-site.xml中的“ hive.server2.authentication”属性值设置为“ SASL”。

!connect jdbc:hive2://<host>:<port>/<db>

NOSASL验证:

HIVE_HOME / conf / hive-site.xml中的“ hive.server2.authentication”属性值设置为“NOSASL”

!connect jdbc:hive2://<host>:<port>/<db>;auth=noSasl

认证参数介绍:

  1. 当参数为NONE时,hive没有启用用户安全认证,任何登录者都拥有超级权限,可以对hive进行任意操作。
  2. 当参数为NOSASL时,需要任意一个用户名,不需要密码,不填写或者填写错误用户名会导致报错。
  3. 当参数为KERBEROS时,用户需要拥有hive的keytab文件(类似于ssh-key等密钥),有了keytab就相当于拥有了永久的凭证,不需要提供密码,因此只要linux的系统用户对于该keytab文件有读写权限,就能冒充指定用户访问hadoop,因此keytab文件需要确保只对owner有读写权限。
  4. 当参数为LDAP时,hive采用ldap统一认证服务,连接访问时需要提供username和password
  5. 当参数为PAM时,hive采用pam认证模块,同样需要提供username和password,只是原理大不相同。PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活的用户级别的认证方式,它也是当前Linux服务器普遍使用 的认证方式。PAM可以根据用户的网段、时间、用户名、密码等实现认证。并不是所有需要验证的服务都使用PAM来验证,如MySQL-Server就没有安 装相应的PAM文件。
  6. 当参数为CUSTOM时,可以根据自身需求对用户登录认证进行一定客制,比如将密码通过md5进行加密等。

阿布

源自灵魂深处的自我救赎。

文章评论