HBase的安装与运行

大数据学习路线图

HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族/列簇(column family)。欲了解HBase的官方资讯,请访问HBase官方网站

此前必须确保您已经安装了hadoop。本教程运行环境是在Ubuntu-64位系统下,HBase版本为hbase-1.1.2-bin.tar.gz,这是目前已经发行的已经编译好的稳定的版本,带有src的文件是未编译的版本。下载地址

安装运行HBase

1.解压安装包至路径 /usr/local

sudo tar -zxf ~/下载/hbase-1.1.2-bin.tar.gz -C /usr/local

2.将解压的文件名hbase-1.1.2改为hbase方便使用

sudo mv /usr/local/hbase-1.1.2 /usr/local/hbase

3.查看hbase版本,确定hbase安装成功

 /usr/local/hbase/bin/hbase version

查看版本

4.接下来测试运行。首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至/usr/local/hadoop ;再启动hadoop,如果已经启动hadoop请跳过此步骤

ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh

输入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop启动成功

启动hadoop

接着切换目录至/usr/local/hbase;再启动HBase

cd /usr/local/hbase
sudo bin/start-hbase.sh
bin/hbase shell

启动HBASE

在shell模式下输入help可以查看HBase相关的命令。

HBase中创建表

HBase中用create命令创建表,具体如下:

create 'student','Sname','Ssex','Sage','Sdept','course'

此时,即创建了一个“student”表,属性有:Sname,Ssex,Sage,Sdept,course。因为HBase的表中会有一个系统默认的属性作为主键,故主键无需自行创建。创建完“student”表后,可通过describe命令查看“student”表的基本信息。

HBase数据基本操作

本小节主要介绍HBase的增、删、改、查操作。

HBase采用三维有序存储实现数据的有序存储,其三维指的是:rowkey(行主键),column key(columnFamily+qualifier),timestamp(时间戳)。HBase 的 Rowkey 是数据行的唯一标识,必须通过它进行数据行访问,故在添加数据时,必须制定主键(Row Key)的值。

在添加数据时,HBase会自动为添加的数据添加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会产生新的数据,而旧的数据依然会被保存,在进行查看操作时默认返回最新的数据版本,从而完成“改”操作。

添加数据

HBase中用put命令添加数据,一次只能为一个表的一行数据的一个列添加一个数据。

当运行命令:put ‘student’,’95001’,’Sname’,’LiYing’时,即为student表添加了学号为95001,名字为LiYing的一行数据,其主键为95001。

执行put命令来添加主键为95001,学号为95001,名字为LiYing的一行数据,结果如下

put 'student','95001','Sname:','LiYing'

执行put命令来为95001行下的course列族的math列添加了一个数据,结果如下

put 'student','95001','course:math','80'

删除数据

在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1、delete用于删除一个数据,是put的反向操作;2、deleteall操作用于删除一行数据。

执行delete命令来删除student表中95001行下的Ssex列的所有版本的数据,用get命令来查看,结果如下

delete 'student','95001','Ssex'

执行deleteall命令来删除student表中的95001行的全部数据,结果如下

deleteall 'student','95001'

查看数据

HBase中有两个用于查看数据的命令:1、get命令,用于查看表的某一行数据;2、scan命令用于查看某个表的全部数据

执行get命令查看‘student’表‘95001’行的数据,结果如下

get 'student','95001'

使用scan命令查看‘student’表的全部数据,结果如下

scan 'student'

最后如果想退出数据库相关操作,输入exit命令即可退出,

exit

停止hbase运行,输入如下命令

sudo bin/stop-hbase.sh