Hbase是安装在另一台LINUX服务器上的,需要本地通过JAVA连接HBase数据库进行操作。由于是第一次接触HBase,过程当中百度了很多资料,也遇到了很多的问题。耗费了不少时间才成功连接上。特记录下过程当中遇到的问题。

JAVA连接HBase代码如下:

首先通过POM将需要的JAR包导入。如果怕版本不一致,可以将安装HBase的lib里面的jar导入程序当中
<dependency> <groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId> <version>1.2.4</version> </dependency>
import org.apache.hadoop.conf.Configuration; import
org.apache.hadoop.hbase.HBaseConfiguration; import
org.apache.hadoop.hbase.HTableDescriptor; import
org.apache.hadoop.hbase.client.Admin; import
org.apache.hadoop.hbase.client.ConnectionFactory; import java.io.IOException;
public class HBaseConnection { public static void main(String[] args) throws
IOException { //第一步,设置HBsae配置信息 Configuration configuration =
HBaseConfiguration.create(); //注意。这里这行目前没有注释掉的,这行和问题3有关系
是要根据自己zookeeper.znode.parent的配置信息进行修改。
configuration.set("zookeeper.znode.parent","/hbase-unsecure"); //与
hbase-site-xml里面的配置信息 zookeeper.znode.parent 一致
configuration.set("hbase.zookeeper.quorum","192.168.8.30"); //hbase 服务地址
configuration.set("hbase.zookeeper.property.clientPort","2181"); //端口号
//这里使用的是接口Admin 该接口有一个实现类HBaseAdmin 也可以直接使用这个实现类 // HBaseAdmin baseAdmin = new
HBaseAdmin(configuration); Admin admin =
ConnectionFactory.createConnection(configuration).getAdmin(); if(admin !=null){
try { //获取到数据库所有表信息 HTableDescriptor[] allTable = admin.listTables(); for
(HTableDescriptor hTableDescriptor : allTable) {
System.out.println(hTableDescriptor.getNameAsString()); } }catch (IOException
e) { e.printStackTrace(); } } } }  
注意一定要在本地HOSTS文件(C:\Windows\System32\drivers\etc\hosts)配置hbase集群地址 
192.168.8.30 master

问题1:java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set

   处理方法:在本地安装一个HADOOP,然后配置环境变量HADOOP_HOME   
尽管是调用的远程的Hadoop下的HBASE,所以这个问题困扰了我好久。

直接在官方网站下载一个安装的包  hadoop-2.7.6.tar.gz 然后直接解压放在E盘下。接着配置环境变量HADOOP_HOME
并添加到Path当中。





上面步骤完成之后启动报错

问题2:java.io.IOException: Could not locate executable
E:\hadoop-2.7.6\hadoop-2.7.6\bin\winutils.exe in the Hadoop binaries.

需要下载winutils.exe
hadoop.dll等组件放在hadoop安装目录的bin当中。下载地址:https://github.com/srccodes/hadoop-common-2.2.0-bin  

虽然是2.2.0的,但是亲测试可用的。下载完毕解压,将里面的bin里面的全部复制,然后拷贝到hadoop安装目录的bin当中,如果有相同的替换掉就是了。

在上述步骤解决后还有一个问题

问题3:The node /hbase is not in ZooKeeper. It should have been written by the
master 



configuration.set("zookeeper.znode.parent","/hbase-unsecure")
这行代码被注释掉后,或者zookeeper.znode.parent 的配置信息不是/hbase-unsecure 会报错。

可以在HBase安装目录中的配置文件hbase-site.xml当中查看具体信息



 

参考资料:https://blog.csdn.net/darkdragonking/article/details/72636917
<https://blog.csdn.net/darkdragonking/article/details/72636917>

                  https://blog.csdn.net/yanhang0610/article/details/77920603
<https://blog.csdn.net/yanhang0610/article/details/77920603>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信