在本地IDEA开发方便代码调试,测试通过后,才会打包上传服务器运行。
hbase客户端连接hbase服务端读写时,会出现莫名的异常,有时会报错看日志可以解决问题,有时控制台没有日志
本次遇到的问题是权限问题
服务器部署了ranger,当然hbase中也可以设置权限,因为集群不是我搭建的,不确定是哪种原因导致的权限问题。
下面说一下遇到的问题及思路和解决办法:
异常的现象:
1、idea控制台阻塞,不报错、不结束执行
2、查看hbase日志,没有看到有用的信息
思路:
1、如果本地和服务器通信有问题,应该会报host、port相关的问题,虽然知道可能不是这个问题,但还是检查ip和端口是否开放
检查命令:
//测试ip是否正常
ping ip
//测试端口是否正常
telnet ip port
2、检查zookeeper是否正常
查看zookeeper、hbase的服务都正常
单点测试读取zookeeper是否正常
检查结果正常
3、用自己的测试服务器执行相同的代码,说明代码是正常的
4、ip、port、zookeeper、代码都正常,说明问题出在hbase上
解决办法:
1、在服务器端,进入Hbase客户端:hbase shell
2、对用户授权(一定是hbase可以执行操作的用户):grant "用户" ,"RWXCA"
这是在hbase服务授予某个用户权限,RWXCA,是授权的权限的范围,这里授予全范围
3、在代码中,添加设置以什么用户访问
System.setProperty("HADOOP_USER_NAME","admin")
如果是打包运行在服务器运行
config.set("hadoop.user.name","admin")