凡是过往,皆为序章

0%

HBase_02(HBase的安装使用)

HBase的安装和部署,和基本命令使用。


一、HBase的安装部署

Zookeeper的正常部署

首先保证zookeeper集群的正常部署,并启动:

在三台虚拟机的zookeeper安装目录的bin目录下,分别使用命令启动:

1
./zkServer.sh start

Hadoop正常部署

Hadoop集群的正常部署并启动。

HBase的下载安装

HBase使用的是1.3.1 版本,下载地址 http://archive.apache.org/dist/hbase/1.3.1/ ,下载hbase-1.3.1-bin.tar.gz 压缩包,上传到bigdata1虚拟机,并解压到相应目录 ( /export/servers/ ) 。

Hbase配置文件的修改

HBase的配置文件都在 conf 目录下,这里我们主要对以下几个文件进行修改。

regionservers

即RegionServer,region所在的集群,这里写上我们的三台虚拟机主机名,如下。

hbase-env.sh

改三个位置,第一个是 27行左右的 JAVA_HOME,去掉注释,改为本地配好的 JDK 地址。

然后是45行左右,去掉两个export,因为在jdk1.8时已经不再需要。

第三个地方:128行左右,取消使用HBase内置的zookeeper,很不方便,而且会与我们自己的zookeeper冲突,由true改为法false。

hbase-site.xml

增加configuration 内的引用,代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://bigdata1:8020/HBase</value>
</property>

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

<!-- 默认端口号:16000,默认的web访问:16010 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>

<!-- -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>bigdata1,bigdata2,bigdata3</value>
</property>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/export/servers/zookeeper-3.4.9/zkdatas</value>
</property>
</configuration>

软连接Hadoop配置文件到HBase

1
2
3
ln -s /export/servers/hadoop-2.7.7/etc/hadoop/core-site.xml /export/servers/hbase-1.3.1/conf/core-site.xml

ln -s /export/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml /export/servers/hbase-1.3.1/conf/hdfs-site.xml

HBase远程发送到集群其他主机

1
2
scp -r hbase-1.3.1 bigdata2:$PWD
scp -r hbase-1.3.1 bigdata3:$PWD

HBase服务的启动

首先对bin目录下的启动方式做个简单介绍:

启动方式

HBase单节点启动

在主机bigdata1的 HBase bin目录下,使用命令:

1
./hbase-daemon.sh start master

启动后,即可访问16010端口查看Web版的HBase。

启动regionserver。

1
./hbase-daemon.sh start regionserver

可以看到,region为 启动的bigdata1。

HBase群起群关

我们可以通过 ./stop-hbase.sh 关闭HBase,但此命令只能在master上使用。

集群启动./start-hbase.sh,此命令在那个主机上启动,则该主机就默认为master。

提示:如果集群之间的节点时间不同步,会导致regionserver无法启动,抛出ClockOutOfSyncException 异常。

二、HBase Shell操作

基本操作

进入HBase客户端命令行

1
./hbase shell

查看帮助命令

1
hbase(main):001:0> help

ddl是对表的操作,dml是对数据的操作。

查看当前数据库有哪些表

1
hbase(main):002:0> list

显示为 0,list只能查用户建的表,系统表则查询不到。

其他命令

1
status whoami version

查询服务器状态、查询当前用户、当前hbase使用的版本号。

使用HBase客户端的注意事项

  1. backspace为删除后面的字符,若想删除前面,则需要按住Ctrl。
  2. 不熟悉某个命令,可以输入该命令,直接回车,则会给出提示和例子。

DDL(对表的操作)

1、create *: 创建数据库表,创建命令可看帮助*help ‘create’

语法:create <table>, {NAME =><family>, VERSIONS => <VERSIONS>}

例示:create 'product',{NAME => 'computer', VERSIONS => 5},{ NAME => 'food' , VERSIONS => 3}

描述:创建一张名叫‘product’*数据库表,并且创建两个列族,分别为:‘computer’‘food’*

1
create 'product','computer','food',...

2、*describe *: 查看表结构描述

用法:describe 'product'

3、alter : 修改表

用法:修改表结构必须先disable,再修改表,修改完成后,再enable表。

1
2
3
4
5
6
7
`disable 'product'

alter 'product',{NAME => 'food',VERSIONS=> 3}

alter '表名',{NAME=>'列名',METHOD=>'delete'} # 删除指定的列

enable 'product'

4、drop:删除表

用法:首先disable,然后drop

disable 'product'

drop 'product'

DML(对数据的操作)

put

插入(修改)数据

1
2
3
4
5
put 表名, RowKey, 列族:列名, 数据

put 'stu','1001','info1:name','zhangsan' # 若stu表的info1:name 字段没有值,则代表插入

put 'stu','1001','info1:name','zhangsan1' # 若stu表的info1:name 字段有值,则代表修改

scan

查询数据

1
2
3
4
5
scan 表名
scan 'stu'
scan 'stu',{STARTROW=>'1001',STOPROW=>'1003'} # 指定查询的范围,从 RowKey 1001 ~ 1003 ,左闭右开,若前或后不写,则代表负无穷 或 正无穷

scan 'stu',{RAW => true,VERSIONS => 10} # 查询stu表的 10个版本内的所有数据,包括修改之前的数据

get

查询数据

1
2
3
4
get 表名, RowKey, 列族

get 'stu', '1001', 'info1'
get 'stu', '1001', 'info1:name'

delete

删除一个RowKwy里的一个字段。

1
2
3
delete 表名, RowKey, 列族:列名

delete 'stu','1001','info1:name' # 删除列,1001 数据下的 info1下的name数据全部删除(包括修改前的数据)

type 会变为 DeleteColumn

deleteall

删除一个RowKey。

1
deleteall 'stu','1001' # 删除stu表的 RowKey=1001 行数据

truncate

清空一张表(删除所有数据,即所有RowKey,所有列族),不建议使用。

1
truncate 'stu'
~感谢你请我吃糖果~
-------------本文结束,感谢您的阅读,欢迎评论留言!-------------