Yuchuan Weng.Miko Tech-Blog.

HBase概念及操作(二)HBase安装体验

2017/05/01 Share

前面一篇对HBase做了一个基本的概念,本篇将介绍HBase的安装和使用

HBase安装以及体验

快速开始

本指南介绍了在单机安装HBase的方法。会引导你通过shell创建一个表,插入一行,然后删除它,最后停止HBase。只要10分钟就可以完成以下的操作。

下载解压最新版本

选择一个Apache 下载镜像下载 HBase Releases. 点击 stable目录,然后下载后缀为 .tar.gz 的文件; 例如 hbase-0.95-SNAPSHOT.tar.gz.

我们这里下载的是:

解压缩,然后进入到那个要解压的目录.
$ tar xfz hbase-0.95-SNAPSHOT.tar.gz
$ cd hbase-0.95-SNAPSHOT

现在你已经可以启动HBase了。但是你可能需要先编辑 conf/hbase-site.xml 去配置hbase.rootdir,来选择HBase将数据写到哪个目录 这里我们放在tmp目录下.

1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///tmp/hbase</value>
</property>
</configuration>

将 DIRECTORY 替换成你期望写文件的目录. 默认 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,也就说你会在重启后丢失数据(重启的时候操作系统会清理/tmp目录)

启动 HBase

现在启动HBase:
$ ./bin/start-hbase.sh
starting Master, logging to logs/hbase-user-master-example.org.out
现在你运行的是单机模式的Hbaes。所有的服务都运行在一个JVM上,包括HBase和Zookeeper。HBase的日志放在logs目录,当你启动出问题的时候,可以检查这个日志。

注意:需要安装JDK6以上的版本并成功配置环境

Shell 练习

用shell连接你的HBase
$ ./bin/hbase shell

1
2
3
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010

hbase(main):001:0>
输入 help 然后 可以看到一列shell命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。
创建一个名为 test 的表,这个表只有一个 列族 为 cf。可以列出所有的表来检查创建情况,然后插入些值。
hbase(main):003:0> create 'test', 'cf'
打印日志:

1
0 row(s) in 1.2200 seconds

hbase(main):003:0> list 'test'

test
1 row(s) in 0.0550 seconds
put arg1表名 arg2第一行 arg3 cf的自定义a列族 arg4 为值
hbase(main):004:0> put ‘test’, ‘row1’, ‘cf:a’, ‘value1’
0 row(s) in 0.0560 seconds
hbase(main):005:0> put ‘test’, ‘row2’, ‘cf:b’, ‘value2’
0 row(s) in 0.0370 seconds
hbase(main):006:0> put ‘test’, ‘row3’, ‘cf:c’, ‘value3’
0 row(s) in 0.0450 seconds

1
2
3
4
5
6
7
8
9


![](/avatar/HBase/HBase8.png)

以上我们分别插入了3行。第一个行key为row1, 列为 cf:a, 值是 value1。HBase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是a.
检查插入情况.
** Scan这个表 等同于select *,操作如下 **
`hbase(main):013:0> scan 'test'`
输出:

ROW COLUMN+CELL
row1 column=cf:a, timestamp=1505461120666, value=zhangsan
row2 column=cf:b, timestamp=1505461220477, value=zhangsan2
row3 column=cf:c, timestamp=1505461309106, value=zhangsan3
3 row(s) in 0.0960 seconds

1
2
3

** Get一行,操作如下 arg1 表名 arg2 列族 **
`hbase(main):008:0> get 'test', 'row1'`

COLUMN CELL
cf:a timestamp=1288380727188, value=value1
1 row(s) in 0.0400 seconds

1
** disable 禁用 再 drop 删除 这张表,可以清除你刚刚的操作 **

hbase(main):012:0> disable 'test'

1
0 row(s) in 1.0930 seconds

hbase(main):013:0> drop 'test'

1
0 row(s) in 0.0770 seconds

关闭shell
hbase(main):014:0> exit

停止 HBase

运行停止脚本来停止HBase.
$ ./bin/stop-hbase.sh

1
stopping hbase...............

Hbase完全分布式配置、启动与Shell命令查看

首先我们先了解下Hbase构成

  • 依赖ZooKeeper
  • 分区服务器RegionServer服务器列在conf/regionservers文件中
  • 集群配制conf/hbase-site.xml和hbase-env.sh

1、配置hbase-site.xml
(注意下方的s2 s3 s4 s5等为主机名 Linux主机名配置,点这里)
hbase.rootdir 配置HBase的根目录 注意这里的ip和端口要和hdfs中的core-site.xml保持完全一致!
hbase.cluster.distributed 配置HBase分布式模式为true
hbase.zookeeper.quorum 配置HBase的zookeeper节点
hbase.master 配置hbase的主机以及端口
hbase.zookeeper.property.clientPort 配置
hbase.zookeeper.property.dataDir hbase输出路径 tmp不会引起权限问题(任何人可以读写)hdfs://s2:9000 必须和hdfs中的core-site 的 default.fs 保持一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://s2:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>s2,s3,s4,s5</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/soft/zooData</value>
</property>
</configuration>

2、配置区域服务器列表:conf/regionservers 配置regionservers 每一个主机罗列上去
s3
s4
s5
3、配置hbase备份管理员主机:(这里选一台 s5)
备份管理员是要接管管理员的角色的 所以也需要所有的公钥给其它主机(免密登录 这里为了方便还是s2)
conf/backup-masters file 文件(表示可以配置多个主机)

1
2
3
quanquan@s2:/usr/soft/hbase-1.3.1/conf$ touch backup-masters
quanquan@s2:/usr/soft/hbase-1.3.1/conf$ gedit backup-masters
s5

4、启动Hadoop start-all.sh
我们这里采用的是脚本启动 包含格式化名称节点以及创建目录 查看目录等操作
5、启动HBase start-hbase.sh
主机节点信息如下: 一个zookeeper的HQuorumPeer节点
以及HMaster节点


例如s3节点:

6、进入shell中去 hbase bin目录下(配置 /etc/enviroment 可以全局使用脚本命令):
./hbase shell
输入help可以查看帮助命令
help [groupCommand]

启动成功后可以通过WEB端访问:
http://s2:16010/master-status
HBase 1.x 版本以后 Web端访问端口改为 16010。

7.集群模式下重现CURD操作

·新建表和列族
hbase(main):006:0> create ‘wyc’,’data’
·查询所有表:
hbase(main):007:0> list
TABLE
wyc
1 row(s) in 0.0680 seconds
·插入数据put
hbase(main):004:0> put 'wyc','row1','data:a','wyc1'
0 row(s) in 0.1040 seconds

hbase(main):005:0> put 'wyc','row2','data:b','wyc2'
0 row(s) in 0.0210 seconds
·scan查询表所有数据
hbase(main):006:0> scan 'wyc'

1
2
3
4
ROW                   COLUMN+CELL                                               
row1 column=data:a, timestamp=1505547073805, value=wyc1
row2 column=data:b, timestamp=1505547085455, value=wyc2
2 row(s) in 0.2190 seconds

·put修改数据
hbase(main):010:0> scan 'wyc'

1
2
3
4
5
ROW                   COLUMN+CELL                                               
row1 column=data:a, timestamp=1505547073805, value=wyc1
row2 column=data:b, timestamp=1505547085455, value=wyc2
row3 column=data:1, timestamp=1505547336881, value=wyc3
3 row(s) in 0.0670 seconds

hbase(main):011:0> put 'wyc','row3','data:1','23333'

1
0 row(s) in 0.0300 seconds

hbase(main):012:0> scan 'wyc'

1
2
3
4
5
ROW                   COLUMN+CELL                                               
row1 column=data:a, timestamp=1505547073805, value=wyc1
row2 column=data:b, timestamp=1505547085455, value=wyc2
row3 column=data:1, timestamp=1505547357952, value=23333
3 row(s) in 0.0780 seconds

Linux下完全分布式集群的搭建以及测试就介绍到这里,下一篇我们采用JavaAPI来对HBase进行调用。

CATALOG
  1. 1. HBase安装以及体验
    1. 1.1. 快速开始
    2. 1.2. 下载解压最新版本
    3. 1.3. 启动 HBase
    4. 1.4. Shell 练习
    5. 1.5. 停止 HBase
  2. 2. Hbase完全分布式配置、启动与Shell命令查看