本文对java项目在windows环境访问HBase的过程进行记录。
1、引入对应的HBase的jar包。网上有的帖子里说是要指定引入某几个文件即可,我实际测试的时候发现总是报错 java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper 。因为对hbase访问所需jar包不熟悉,最后解决的方式是从集群上的hbaselib目录里,copy所有的包引入java项目里。还好不算大,80M左右。HBase版本是2.1.0,有大神知道这个版本需要引用的包具体是哪些的,麻烦留言告诉一声~
2、HADOOP_HOME and hadoop.home.dir are unset 的错误。按照网上解决方案提示解决。大意是windows环境访问hbase需要配置环境变量,下载winutils-master.zip解压,增加HADOOP_HOME指向解压目录、%HADOOP_HOMEin% 即可。文件可去https://github.com/steveloughran/winutils下载,选择与hbase版本最近的版本即可。
3、错误提示访问的是localhost,我们的hbase是在服务器上,这显然是哪里配置不对。
按照网上的思路,说是要修改服务器上的/etc/hosts文件,将服务器暴露的ip地址与master对应起来;同时windowssystem32driversetchosts文件也需要配置。看了一下,配置都在。
那为啥还会出这样的问题呢?折腾了一阵突然想起,会不会是代码写的有问题,于是把获取hbase链接的init方法改成了下面这样,果然OK了。