beeline连接hive失败
1、检查
确认metastore和hiveserver2两个服务启动了
nohup hive --service metastore >> log.out 2>&1 &
nohup hive --service hiveserver2 >> log.out 2>&1 &
检查10000端口是否被占用
ss -lnp|grep 10000
检查hadoop的core-site.xml的账号配置,已经配置了登陆用户的超级用户权限,关于这一块配置规则可自行百度,不做多余阐述。
2、原因
beeline -u jdbc:hive2://192.168.2.201:10000
这种方式直接连接,没有指定aohongli用户名和密码,使用的是其实是anonymous(匿名的)这个用户没有hdfs上的/tmp 目录下的写权限,所以造成失败。
[aohongli@hadoop-bi-1 hive-3.1.2]$ beeline
beeline> !connect jdbc:hive2://192.168.2.201:10000
Enter username for jdbc:hive2://192.168.2.201:10000: aohongli
Enter password for jdbc:hive2://192.168.2.201:10000: ************
后面我改变连接方式,连接输入centos的账号密码就可以进入
3、解决方法
1、上面提到的beeline连接填写对应的超级用户的账号密码
[aohongli@hadoop-bi-1 hive-3.1.2]$ beeline -n aohongli -u jdbc:hive2://192.168.2.201:10000
2、修改hdfs上的/tmp的权限
[aohongli@hadoop-bi-1 hive-3.1.2]$ hdfs dfs -chmod 777 /tmp
[aohongli@hadoop-bi-1 hive-3.1.2]$
第二种不建议,知道原理最好,不然以后出问题又不知道怎么办才好,另一种就是更直接的取消hdfs的权限检验。我就是为了弄明白集群的权限才玩的深,取消权限检验什么都没有了,就没意思了。