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

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

目录:

0. 准备

1).  开发环境

2).  修改主机名

3). centos里安装jdk

1. 安装hbase (local mode)

1). 下载

2). 解压

3). 配置

4). 运行

5). hbase shell访问

2. 远程访问

3. 总结

0. 准备

1).  开发环境

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

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

如果在centos7.3里装个eclipse,这个就不算远程访问了。这里不讨论这种情况。

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

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..tar.gz
# cd /opt
# tar zvxf hbase-1.2..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.
# 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./data/zookeeper</value>
</property>
</configuration>

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

# cd /opt/hbase-1.2.
# 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.
# 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的更多相关文章

  1. 500 OOPS: vsftpd: both local and anonymous access

    配置ftp服务器,有如下报错 C:\netos74\bin>ftp 10.20.100.252Connected to 10.20.100.252.500 OOPS: vsftpd: both ...

  2. vpn找不到设备,win7建立新的VPN总时显示错误711,无法启动 Remote Access Connection Manager 及 Remote Access Auto Connection Manager 错误1068

    试试相关服务!一.remote access connection manager是网络连接的服务,它依赖于Technology服务,现在你的这个服务已经启动,而Secure Socket Tunne ...

  3. Ubuntu14.04 开启MySQL的remote access

    一旦开启MySQL的remote access, 即可实现在windows系统下连接ubuntu下的mysql 步骤如下: sudo vim /etc/mysql/my.cnf bind-addres ...

  4. 【转】 Pro Android学习笔记(七六):服务(1):local和remote

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Android提供服务,服务是运行在后台的 ...

  5. [GraphQL] Query Local and Remote Data in Apollo Link State

    In this lesson, you will learn how to query local and remote data in Apollo Link State in the same c ...

  6. 3.0 - remote access 基础知识

    RA概述: remote access: 广域网的远程连接,按L1分类: 1:通过电路交换网络实现的专线:(circuit switching) ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  7. [Node.js] Proxy Requests for Local and Remote Service Parity

    High availability apps require that no distinction be made between local and remote services. Attach ...

  8. extjs Combobox动态加载数据问题,mode:local 还是remote

    var fabircTypeDs = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'province.do' }), reade ...

  9. Rename a local and remote branch in git

    If you have named a branch incorrectly AND pushed this to the remote repository follow these steps b ...

随机推荐

  1. [Elasticsearch] 邻近匹配 (二) - 多值字段,邻近程度与相关度

    多值字段(Multivalue Fields) 在多值字段上使用短语匹配会产生古怪的行为: PUT /my_index/groups/1 { "names": [ "Jo ...

  2. 关于O(logN)的正确理解

    学计算机的或许对O(logN)这个符号并不陌生,快排.堆排.归并等等排序的平均时间复杂度. 问题来了,之前一直有个歧义就是:logN的底数到底是多少? 这个问题搁置着并没有去深究,仅仅是想应该是2吧. ...

  3. pthread线程属性介绍

    线程属性 创建线程函数 int pthread_create (pthread_t* restrictthread,  const pthread_attr_t* restrictattr,void* ...

  4. 【Android Studio快捷键】之导入对应包声明(import packages)

    可能import 单个声明的快捷键大家都非常easy找到.Alt+Enter.可是假设我要一次性import文件里全部的声明.这个快捷键是什么呢,找啊找的,就是没找到,曾经在Eclipse是Ctrl+ ...

  5. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 8位硬件ECC

    这节我们实现nand的ecc,保存环境变量到nand flash 中.然后把我们之前的led灯烧写到nand flash 中.开机启动.在 tiny210.h 中定义宏 CONFIG_S5PV210_ ...

  6. 用JAVA自己画一张二维码

    我们都知道,最近2年移动支付在中国堪称新四大发明之一. 二维码无处不在,特别是最近的支付宝扫码领红包,微信,qq,到处在发,阿里有点攻占腾讯移动支付市场的势头啊~博主忽然就对二维码是怎么画的有了点好奇 ...

  7. 超详细 值得收藏 linux CentOS 7 配置Apache服务【转发+新增】

    一.Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性(尽管不断有 ...

  8. linux vi/vim编辑文件显示行号

    方法一(最尴尬的方法): 1.显示当前行行号,在VI的命令模式下输入 :nu 2.显示所有行号,在VI的命令模式下输入 :set nu #这是:set number 的简写 方法二(最好的方法): 使 ...

  9. 大数据学习(4)MapReduce编程Helloworld:WordCount

    Maven依赖: <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools< ...

  10. .net core系列之初识asp.net core

    .net core已经发布了2.0版本,相对于1.0的有了很大的完善,最近准备在项目中尝试使用asp.net core,所以就进行了一些简单的研究. 初识asp.net core分为以下几个部分: 1 ...