使用Java连接HBASE过程中问题总结
本文是我个人在连接服务器的HBASE过程的一些问题总结。
一、用户和主机名的设置
1.1 报错:Insufficient permissions(user=Administartor)
原因:本地hostname为Administrator,而HBASE表的用户没有这个用户,所以报错。
措施:设置电脑的环境变量,步骤如下:
1)右击我的电脑->属性->高级系统;
2)新增变量名HADOOP_USER_NAME,值为mr(HBASE表的用户名)
如图:
1.2 hosts文件设置
提示:WARN RecoverableZooKeeper:146 - Unable to create ZooKeeper Connection
原因:是无法读取配置文件中主机名,可以通过ping IP地址和主机名验证
在本机的hosts文件设置IP与主机名的映射,如10.23.231.5 mr。
【问题延伸】
一般经过上述配置后,就可以在cmd的小黑框里ping通IP和主机名(最好两者都试一下),可能出现,能ping通IP地址但是ping不同主机名的情况,代码里可能报错信息为,unkown hostname。
这种情况可能是所配置的主机名没有生效,解决办法,如图所示:
注意事项:
1)选择正在使用的网络,单击右键选择属性;
2)最后导入的是修改后的hosts文件;
二、本地连接服务器HBASE导致的相关错误
2.1 ERROR Shell:400 - Failed to locate the winutils binary in the hadoop binary path java.io.IOException:Could not locate executable null\bin\winutils.exe in Hadoop binaries.
2.2 java.io.IOException:HADOOP_HOME or hadoop.home.dir are not set
解决方案:设置路径,具体如图
注意事项:
1)路径是自定义的;
2)在该路径下新建bin文件夹(如:D:\hadoop\bin),然后上网找到winutils.exe放在bin目录中;
3)重启电脑,再次编译即可
三、运行报类找到不到(Hadoop 2.7.3,HBase 1.2.0)
3.1 运行的时候说找不到org.apache.hadoop.tracing.SpanReceiverHost的类
原因:依赖的jar没有,
解决方案:添加hadoop-common-*.jar(对应的版本),最好的是在maven中添加对此jar的依赖。
3.2 报:Caused by:java.lang.ClassNotFoundException:org.apache.hadoop.fs.FsTracer
原因:缺jar包
解决方案:增加对hadoop-hdfs包的依赖。
待续............