1. 简介
Apache HBase™是Hadoop数据库,这是一个分布式,可扩展的大数据存储。
当你需要随机、实时读取/写入海量数据时使用Apache HBase™。hbase的目标是托管非常大的表(数十亿行 × 百万列)在商业硬件集群上。 Apache HBase是一个开源的,分布式的,版本化的非关系数据库模型,它是在Chang等人的Google Bigtable:结构化数据分布式存储系统之后建立的。就像Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供了类似Bigtable的功能。
2. HBase特性
- 没有真正的索引:行是顺序存储的,每行中的列也是,所以不存在索引膨胀的问题,而且插入性能和表的大小无关。
- 自动分区:在表增长的时候,表会自动分裂成区域,并分布到可用的节点上。
- 线性扩展和对于新节点的自动处理:增加一个节点,把它指向现有集群并运行regionserver。区域自动重新进行平衡,负载均匀分布。
- 普通商用硬件支持:
- 容错:大量节点意味着每个节点的重要性并不突出。并不担心单个节点失效。
- 批处理:MapReduce集成功能使我们可以用全并行的分布式作业根据"数据的位置"来处理他们。
3. 下载安装
前提条件:安装hbase前需要先安装jdk,hadoop,zookeeper。
cd /opt
#大家在官网上下载一个稳定版本的就行了,我这里是1.2.6版本的。
wget http://mirrors.hust.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz
#解压
tar -zxvf hbase-1.2.6-bin.tar.ge
4. 集群配置
#我们需要配置三个文件:hbase-env.sh,hbase-site.xml,regionservers
cd hbase-1.2.6
#打开hbase-env.sh文件,修改如下两项,保存退出就OK了
vim conf/hbase-env.sh
export JAVA_HOME=/opt/jdk1.8.0_131 # jdk的路径
export HBASE_MANAGES_ZK=false # 不使用hbase自带的zookeeper
#打开文件hbase-site.xml,在文件的最后添加以下内容,之后保存退出。
#hbase.zookeeper.quorum的值是zookeeper集群的主机名
#hbase.zookeeper.property.dataDir的值是zookeeper 数据保存的目录
#hbase.rootdir 的值是在HDFS的NameNode的位置上存储数据的目录
#hbase.cluster.distributed设为true表示启用集群模式
vim conf/hbase-site.xml
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>example1,example2,example3</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://example1:9000/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
</configuration>
#打开文件regionservers,在里面填上slaves节点的主机名,每行一个
#example1是master,example2,example3是slaves。
vim conf/regionservers
example2
example3
#这样就全部配置完了
最后我们可以设置一下环境变量
vim /etc/profile
export NBASE_HOME=/opt/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin
保存退出之后别忘了执行source /etc/profile
命令
之后,我们可以把这个hbase-1.2.6文件夹复制到集群中的其他机器上去。
scp -r hbase-1.2.6 root@example2:/opt
scp -r hbase-1.2.6 root@example3:/opt
5. 启动集群
我们在example1上执行命令:bin/start-hbase.sh
,停止集群的话请使用bin/stop-hbase.sh
命令。
使用jps
命令看一下example1是否有HMaster
,example2和example3是否有HRegionServer
,有的话就表示集群搭建成功了。
在地址栏上输入网址http://example1:60010
就可以进入hbase的UI界面看到更详细的信息了。
6. hbase基础命令
#进入到hbase的交互模式下,使用help命令可以看到所有的帮助信息,使用exit命令退出交互模式。
bin/hbase shell
#如果不小心敲错字符了,我们需要按Ctri+Backspace来进行回退。
status #查看当前运行服务器状态
version #版本查询
create 'test','info' #创建一张表test,该表有一个列簇为info
exits '表名字' #判断表存在
list #列出所有的表
scan 'test '#查看表内容
describe 'test' #查看表结构
put 'test','0001','info:username','henry' #插入一条数据,rowkey为0001,在info列簇中的username列的值为henry
get 'test','0001','info:username' #查询rowkey为0001,在info列簇中的username列的值
delete 'test','0001','info:username' #删除rowkey为0001,在info列簇中的username列的数据
count 'test' #查看总共有多少条记录
is_enabled 'test' #查看表状态,是否是active状态
truncate 'test' #清空表中的数据
disable 'test' #把表标记为失活状态
drop 'test' #删除表,删除之前需执行disable命令
END