当前位置:Gxlcms > 数据库问题 > hbase (local mode) remote access

hbase (local mode) remote access

时间:2021-07-01 10:21:17 帮助过:25人阅读

/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形式也无所谓,安装就行了。

 

2.  安装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). 运行

技术分享图片

运行后,可以在浏览器里打开hbase的web ui  -> http://192.168.1.135:16010

因为本地模式zookeeper是运行于hbase的jvm内,使用 jps命令看不到zookeeper的进程,此时可以使用下载的zookeeper连接查看:

# cd /opt/zookeeper-3.4.6
# bin/zkCli.sh

    这样就连接到zookeeper,可以查看master的地址:

   技术分享图片

   如果不改主机名, centos默认是localhost, 那么红框这个地方就是localhost。

        停止运行:

技术分享图片

 

   5). hbase shell访问

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

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

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

技术分享图片

 

二. 远程访问

    “远程”,是指访问的程序不运行于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

 改完这个文件后, web ui也可以这样访问了 ->  http://docker:16010

 

运行结果:

技术分享图片

 

3. 总结:

      其实说了这么多, 捞干的说就是: hbase的本地模式使用主机名作为地址

     而hbase client(即eclipse中的代码)是通过zookeeper中的地址(就是画红框的那个地方)访问hbase的,如果zookeeper保存的是localhost, 而localhost的ip是127.0.0.1,

     那么就变成了访问win10自己了,就不是访问centos了。

     改vm的主机名,就是让这个名字仅是个名字,这样才可以关联其它IP,而不是127.0.0.1。

     

hbase (local mode) remote access

标签:cto   init   add   打开   代码   图片   laptop   eof   安装jdk   

人气教程排行