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启动成功
接着切换目录至/usr/local/hbase;再启动HBase
cd /usr/local/hbase
sudo bin/start-hbase.sh
bin/hbase shell
在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