region是存放在不同的region server上的。
一个region里能存放一个列族或多个列族,一个列族(如果大的话)可以存放在多个region中
hbase的rowkey是按顺序存储的
一个时间点只有一个HMaster在运行
HMaster是总的管理者,但一个HRegionServer挂了后,HMaster会把该HRegionServer下的Region挂在到其它HRegionServer下。
当一个Region不断的变大,该Region会分裂成多个Region,HMaster根据负载情况,将Region挂在到相应的HRegionServer下
安装hbase
1.去官网下载hbase
hbase.apache.org
2解压,将HBASE_HOME/bin设置到环境变量中
3修改HBASE_HOME/conf/hbase-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
hbase自己管理zookeeper,如果你另外搭建了zookeeper集群,请把这个选项设置为false
export HBASE_MANAGES_ZK=true
4修改HBASE_HOME/conf/hbase-site.xml
在<configuration></configuration>中增加
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://wuke01:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>wuke01</value>
</property>
</configuration>
如果hadop不认识hbase
启动hbase
start-hbase.sh
启动hbase控制台
hbase shell
输入list查看所有表
搭建hbase集群模式
wuke01:namenode datanode HMaster HRegionServer
wuke02:datanode HRegionServer
wuke05:zookeeper
wuke06:zookeeper
wuke07:zookeeper
1.去官网下载hbase
hbase.apache.org
2解压,将HBASE_HOME/bin设置到环境变量中
3修改HBASE_HOME/conf/hbase-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
4修改HBASE_HOME/conf/hbase-site.xml
在<configuration></configuration>中增加
wuke01
wuke02
如果是hbase1.3
修改hbase-site.xml
<configuration>
<property>
<name>hbase.tmp.dir</name>
<value>/app/hbase-1.3.0/tmp</value>
</property>
<property >
<name>hbase.rootdir</name>
<value>hdfs://cluster1/hbase</value>
</property>
<property >
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>bdpp01,bdpp02,bdpp03</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>600000</value>
<description>in case of timeout when scan data is large</description>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>600000</value>
</property>
问题:hbase 不认识hadoop集群的nameservice
解决:将hadoop的core-site.xml hdfs-site.xml拷贝到hbase的conf目录下
hbase1.3启动验证
http://bdpp03:60010/procedures.jsp
常见错误
hbase shell
查看所有表
list
查看表的结构
# 语法:describe <table>
# 例如:查看表t1的结构
describe ‘t1’
注意:记得要加单引号
|
hbase客户端命令
名称
|
命令表达式
|
创建表
|
create '表名称', '列族名称1','列族名称2','列族名称N'
|
添加记录
|
put '表名称', '行名称', ''列族名称:列名称', '值'
|
查看记录
|
get '表名称', '行名称'
|
查看表中的记录总数
|
count '表名称'
|
删除记录
|
delete '表名' ,'行名称' , '列名称'
|
删除一张表
|
先要屏蔽该表,才能对该表进行删除,第一步
disable '表名称' 第二步
drop '表名称'
|
查看所有记录
|
scan "表名称"
|
查看某个表某个列中所有数据
|
scan "表名称" , {COLUMNS=>'列族名称:列名称'}
|
更新记录
|
就是重写一遍进行覆盖
|
create "stu","cf1","cf2"
put "stu","rowkey1",,"cf1:name","zhangsan"
get "stu","rowkey1"
下面给出的语法来改变列家族单元的最大数目。
alter 'stu' ,NAME=>'cf1',VERSIONS=>5
put 'stu','xiaoming','cf1:age','23'
put 'stu','xiaoming','cf1:age','24'
put 'stu','xiaoming','cf1:age','25'
put 'stu','xiaoming','cf1:age','26'
查询
get 'stu','xiaoming','cf1:age'
只会出现最后一次插入的数据cf1:age =26
如果想要看到全部的版本(5个版本)
get 'stu','xiaoming',{COLUMN=>'cf1:age',VERSIONS=>5}
get 'stu','xiaoming',{COLUMN=>'cf1:age',TIMESTAMP=>XXX}
scan 'stu',{LIMIT=>10}