以下内容为个人理解,仅供参考。
一、简介
Hbase是在HDFS上开发的面向列的分布式数据库,适用于随机读/写超大规模的数据集(通常这种数据压力传统RDBMS很难承受),可以在廉价的硬件上构成的集群上管理超大规模的稀疏表,并且可以水平扩展。
二、基础概念
1、Hbase把数据存放在表中,表由行列组成,表中的行是排序的(根据ASCII顺序),行键作为表的主键,对表的数据访问需要通过主键或者主键Range,故行键的设计很重要。
2、列由“列族”组成(即对列分类),不同列族的数据通常放在不同的文件夹里,列族不宜过多,Hbase启动时就打开数据文件,并且一直保持打开状态(Linux 默认一个进程打开最大文件数为1024),不合理的设计将导致异常。定义表时必须定义一个可用的列族,用户可根据需要增加或删除列族,但是必须先disable。
3、Hbase为master/slave结构,依赖于zookeeper,master 管理着多个regionServer。
三、安装(standalone)
1、必须安装Java 1.6 或者更高版本。
2、可用修改~/.base_profile,export JAVA_HOME指向JAVA安装路径,也可修改conf/hbase-env.sh 中 export JAVA_HOME=/usr/java/jdk1.6.0/
3、默认情况下,hbase会使用/tmp/hbase-$USERID作为数据存储目录,有些系统重启会清空/tmp目录,可用通过更改hbase-site.xml来配置数据存储目录,如:
<configuration> <property> <name>hbase.rootdir</name> <value>file:///opt/hbase_data</value> </property> </configuration>
4、修改bin下sh文件执行权限,通过 ./bin/start-hbase.sh即可启动hbase,通过tail -f 监听./log/hbase-root-master-hbase-xx.log来查看启动信息。
四、Hbase shell
使用 ./bin/hbase shell即可进入管理hbase,使用secureCRT会导致无法删除键入的错误命令(backspace delete键无法使用),笔者使用putty(v0.62)可正常使用,下面是一些示例:
下面以创建一个stations的表,这表的行键是stationid, 列包含info.name(名称)、info.countryCode(站点所属国家代号)
1、创建一个表与显示所有表
hbase> create ‘stations‘,‘info‘ --创建一个带有info列族的stations表hbase> list --显示当前所有表
2、录入数据(如果录入同一行同一列则代表更新)
hbase> put ‘stations‘, ‘1001‘, ‘info:name‘, ‘HAILAR‘ --录入1001为行键、HAILAR为站点名称的记录
hbase> put ‘stations‘, ‘1001‘, ‘info:countryCode‘, ‘CH‘ --CH代表china
hbase> put ‘stations‘, ‘1002‘, ‘info:name‘, ‘NENJIANG‘
hbase> put ‘stations‘, ‘1002‘, ‘info:countryCode‘, ‘CH‘
3、读取、删除数据
hbase> scan ‘stations‘ --读取表中所有数据 hbase> get ‘stations‘,‘1001‘ --得到行键为1001的所有列hbase> get ‘stations‘,‘1002‘,‘info:name‘ --得到行键为1002的info:name列hbase> delete ‘stations‘,‘1001‘,‘info:countryCode‘ --删除1001行的info:countryCode列
4、增加/删除列族
hbase> disable ‘stations‘ hbase> alter ‘stations‘, {NAME=>‘data‘} --增加data列族,可以录入以data:作为prefix的列 hbase> enable ‘stations‘hbase> describe ‘stations‘ --列出表结构 ---删除列族hbase> disable ‘stations‘hbase> alter ‘stations‘,{NAME=>‘data‘, METHOD=>‘delete‘} --删除stations里面的data列族,列族下面的列将被全部删除
5、删除表
hbase> disable ‘stations‘ --需要把表disable hbase> drop ‘stations‘
通过http://hbase-master:60010/ 可查看hbase状态信息