HBase_Java远程操作

学校开设了HBase大数据存取课程,虽然到现在一共只去上了两节课,但私下还是花了一点功夫,对于HBase的应用和原理有了基本的认识。本文记录HBase的安装和java操作远程数据库过程中遇到的问题。

本文中涉及的hbase是单机模式,没有对集群模式进行探讨【没钱买不起那么多vps】

介绍

Hbase是hadoop生态圈中的一员,特点包括高可靠性、高性能、面向列、可伸缩、 实时读写。超大数据量的情况下表现优越,数据量较小时不适合使用。

安装

安装过程是很简单的,三个包,javaJdk,hadoop,hbase,linux中直接解压配置环境变量和修改配置文件即可。需要特别注意两个要点。

  • hadoop和hbase的版本要对应,否则可能会出很奇怪的错误,关于版本对照,可以看这里
  • 配置ssh免密登陆,这个太简单了,输入一下命令全部回车即可

cd ~/
ssh-keygen -t rsa

  • 修改配置文件,这个确实有点麻烦,最简单的就是找别人写好的替换一下。下文会贴出来。

上述步骤看起来简单,但很容易出问题,于是有大佬将其写入了docker,用的时候pull一下就ok了。参见大佬的github,相关配置文件也可以在上面找到。

> > > > > >关于docker

安装好后执行下列命令:

yum install screen
docker pull ilanyu/hbase
screen docker run -it -p 9000:9000 -p 50090:50090 -p 50070:50070 -p 50010:50010 -p 50075:50075 -p 40316:40316 -p 50020:50020 -p 16010:16010 -p 16020:16020 -p 16030:16030 -p 16000:16000 -p 2181:2181 ilanyu/hbase

此时会进入容器中全程回车和输入yes即可。

最后jps查看相关进程是否都启动了,然后

hbase shell

关于shell 命令,参加这里

java连接

需要做以下配置

  • windows本机的hosts记录中添加远程主机的主机名和对应的外网ip,注意,如果使用的docker安装,主机名要填写docker容器的主机名。
  • 将远程主机中hbase目录下的/conf/regionservers文件写入”0.0.0.0”,原有的ip删除。

就下来就是java代码的书写了。

首先导入jar包,有两种方式

  • 第一种:将hbase安装目录下的lib目录中的jar包全部导入java项目
  • 第二种:采用maven包管理,需要注意选择与hbase相同版本的jar包依赖如下(我采用的1.2.6)

    <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.2.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-common -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>1.2.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>1.2.6</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-protocol -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-protocol</artifactId>
        <version>1.2.6</version>
    </dependency>
    

代码部分我上传到github了,传送门 用springboot实现了接口雏形,然后封装了简单的数据库连接池和基本功能的数据库操作类。

Fork me on GitHub