hbase + hadoop 官方文档快速搭建

hbase版本1.26,hadoop版本2.8.1,jdk8+

简单单机

进入安装目录执行命令启动

bin/start-hbase.sh

停止hbase

bin/stop-hbase.sh

hbase提供了ui界面http://localhost:16010 同时可以通过jps -l查看

jps -l
32399 org.apache.hadoop.hbase.master.HMaster

现在就很简单的启动了hbase!

自定义配置文件conf/hbase-site.xml,添加单机配置,注意切换到自己的路径

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:////opt/hbase-1.2.6</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/opt/zookeeper-3.4.9</value>
  </property>
</configuration>

简单测试hbase 连接控制台

bin/hbase shell hbase(main):001:0>

创建表,新建记录,废止表,移除表(比较简单,摘抄官网)

hbase(main):001:0> create 'test', 'cf'
0 row(s) in 0.4170 seconds

=> Hbase::Table - test

hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds

=> ["test"]
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds

hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds

hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds
hbase(main):006:0> scan 'test'
ROW                                      COLUMN+CELL
 row1                                    column=cf:a, timestamp=1421762485768, value=value1
 row2                                    column=cf:b, timestamp=1421762491785, value=value2
 row3                                    column=cf:c, timestamp=1421762496210, value=value3
3 row(s) in 0.0230 seconds
hbase(main):007:0> get 'test', 'row1'
COLUMN                                   CELL
 cf:a                                    timestamp=1421762485768, value=value1
1 row(s) in 0.0350 seconds
hbase(main):008:0> disable 'test'
0 row(s) in 1.1820 seconds

hbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds

hbase(main):008:0> disable 'test'
    0 row(s) in 1.1820 seconds
hbase(main):011:0> drop 'test'
0 row(s) in 0.1370 seconds

命令是比较简单的:

create 表名 , 列名
list 表名
put 表名 ,行名 ,列名:列值 ,值
get 表名,行名
scan 表名
disable 表名
enable 表名
drop 表名 //安全起见必须先disable

使用Hadoop

为了防止hbase的数据丢失,一般都是要跟hadoop结合使用. 关于hadoop的创建,请看我相关的Hadoop 快速创建

现在假设我们已经按照另一篇文章创建了hadoop.默认暴露的端口是9900 修改配置文件conf/hbase-site.xml(默认为空),添加以下内容

<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://localhost:9900/hbase</value>
</property>

设置jdk版本,修改启动脚本bin/start-hbase.sh

export JAVA_HOME=/opt/jdk1.8.0_92

修改完配置后,重新启动hbase

bin/start-hbase.sh

查看hadoop是否正常加入,进入hadoop安装目录

zhaofeng@zhaofeng-pc:/opt/hadoop-2.8.1$ bin/hadoop fs -ls /hbase
Found 9 items
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 16:47 /hbase/.tmp
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 16:47 /hbase/MasterProcWALs
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 16:47 /hbase/WALs
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 15:51 /hbase/archive
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 15:37 /hbase/corrupt
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 14:25 /hbase/data
-rw-r--r--   3 zhaofeng supergroup         42 2017-08-29 14:25 /hbase/hbase.id
-rw-r--r--   3 zhaofeng supergroup          7 2017-08-29 14:25 /hbase/hbase.version
drwxr-xr-x   - zhaofeng supergroup          0 2017-08-29 16:47 /hbase/oldWALs

这时会比单机多一个进程,用于管理数据的RegionServer

zhaofeng@zhaofeng-pc:/opt/hbase-1.2.6$ jps -l | grep hbase
1618 org.apache.hadoop.hbase.regionserver.HRegionServer
1448 org.apache.hadoop.hbase.zookeeper.HQuorumPeer
1515 org.apache.hadoop.hbase.master.HMaster

为了方便学习我做了一个简单的hbase镜像,使用下面命令快速创建一个hbase单机容器.

docker run --name my-hbase-nutch -itd fansin/hbase:0.98.8

Hbase 还提供了简单的master和region备份脚本

//启动接口偏移量分别2 3 5的3个master的backup
bin/local-master-backup.sh start 2 3 5

//启动接口偏移量分别2 3 5的3个region的backup
bin/local-regionservers.sh start 2 3 5

现在的进程应该是这样的

jps -l | grep hbase
2272 org.apache.hadoop.hbase.master.HMaster
2343 org.apache.hadoop.hbase.master.HMaster
1448 org.apache.hadoop.hbase.zookeeper.HQuorumPeer
1515 org.apache.hadoop.hbase.master.HMaster
2765 org.apache.hadoop.hbase.regionserver.HRegionServer
2833 org.apache.hadoop.hbase.regionserver.HRegionServer
1618 org.apache.hadoop.hbase.regionserver.HRegionServer
2425 org.apache.hadoop.hbase.master.HMaster
2909 org.apache.hadoop.hbase.regionserver.HRegionServer

可以直接kill pid,也可以使用脚本关闭

bin/local-master-backup.sh stop 3

bin/local-regionservers.sh stop 3

更详细分布式集群配置请查看官网.本文只做入门