如果初学hbase,没必要弄一个集群,hbase的local mode够用了。

这里写一个简单的教程。适用于初学hbase,想要用代码访问hbase的童鞋们。

目录:

    0. 准备

         1).  开发环境

         2).  修改centos 7.3的机器名

         3). centos里安装jdk

    1. 安装hbase (local mode)

         1). 下载

         2). 解压

         3). 配置

         4). 运行

         5). hbase shell访问

    2. 远程访问

       

0. 准备

    1).  开发环境

           一台laptop,win10,eclipse,vmware 10,centos 7.3

           这是本人的笔记本的开发环境,基本上eclipse运行在 windows上,hbase运行在vm中。

           如果在centos7.3里装个eclipse,这个就不算远程访问了。这里不讨论这种情况。max os和ubuntu的平台倒是比较常见。

    2).  修改centos 7.3的机器名

          本地模式的hbase,默认是使用主机名作为/hbase/master的地址的。如果主机名是localhost,在eclipse远程访问时有问题。所以要修centos的主机名。 

# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=docker

# vi /etc/hosts
192.168.1.135 docker

重启centos
# init 6

     因为这个vm本人也用来学习docker,所以主机名就改为docker了。  

   3). centos里安装jdk

         下载一个rpm形式的jdk, 然后

# rpm -ivh jdk-8u101-linux-x64.rpm

        其它如.tar.gz形式也无所谓,安装就行了。

 

1.  安装hbase

    本地模式是指底层的文件系统不是使用HDFS,而是直接使用OS的本地文件系统。

    1). 下载

           下载hbase-1.2.6, 这个去hbase.apache.org去下载就好了,可以在win10里下,再copy进centos,也可以直接在centos里下

           # wget …

           下载zookeeper-3.4.6,这个下载后只要解压即可,放在/opt/zookeeper-3.4.6

    2).  解压

假设文件在/opt/hbase-1.2.6.tar.gz
# cd /opt
# tar zvxf hbase-1.2.6.tar.gz

         则hbase解压后位于/opt/hbase-1.2.6

    3). 配置

        本机运行,需要配置两个文件: conf/hbase-env.sh, conf/hbase-site.xml

       conf/hbase-env.sh

       依据你的JDK的位置,配置JAVA_HOME

# cd /opt/hbase-1.2.6
# vi conf/hbase-env.sh
...
export JAVA_HOME=/usr/java/latest
...

      conf/hbase-site.xml

# vi conf/hbase-site.xml
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///opt/hbase-1.2.6/data/hbase</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/opt/hbase-1.2.6/data/zookeeper</value>
  </property>
</configuration>

    再新建两个目录, 用于保存数据

# cd /opt/hbase-1.2.6
# mkdir -p data/hbase
# mkdir data/zookeeper

    4). 运行

        停止运行:

 

   5). hbase shell访问

        新建表,表名:test,列族:cf

        然后向test表中put一行:  rowkey:  “row1″,   列:a,  即cf:a, 值:”value1”

        然后通过get查询,结果如下图:

 

2. 远程访问

    “远程”,是指访问的程序不运行于hbase运行的centos中, 换句话说,就是访问程序和hbase运行的vm用的是两个IP。(比如我的win10: 192.168.1.102, vm: 192.168.1.135)

    在eclipse里新建java工程,普通的java工程,只使用main()运行。

    然后在工程目录下建一个目录: lib,与src同级,将vm中hbase-1.2.6/lib目录下的所有jar,全部复制放到eclipse的lib里,设置eclipse 工程的build路径,添加lib里的所有jar,这个应该搞 java都知道。

   

    工程目录结构:

       

 

    TestConnection.java

package ex1;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

public class TestConnection {

    public static Configuration configuration;
    static{
        configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum", "192.168.1.135") ;
        System.out.println("===============");
    }
    
    public static void main(String[] args) throws Exception {
        Connection conn = ConnectionFactory.createConnection(configuration);
        Table table = conn.getTable(TableName.valueOf("test"));
        Get get = new Get(Bytes.toBytes("row1"));
        get.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("a"));
        Result r = table.get(get);
        if(r.isEmpty()) {
            System.out.println("result is null");
        }
        System.out.println("result=" + new String(r.value()));
        conn.close();
    }
}

 

运行程序前,要改win10的 /etc/hosts文件(C:\Windows\System32\drivers\etc\hosts),添加如下行:

192.168.1.135    docker

 

运行结果:

 

总结: 其实说了这么多, 捞干的说就是: hbase的本地模式使用主机名作为地址,如果vm的主机名是localhost就麻烦,因为localhost不只是一个名字,改vm的主机名,就是让这个名字仅是个名字。

版权声明:本文为bear129原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bear129/p/8270810.html