HBase是参考google的bigtable的一个开源产品, 建立在hdfs之上的一个提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。 是一种介于nosql和RDBMs之间的一种数据库系统, 仅支持通过rowkey和range进行数据的检索,主要存储非结构化数据和半结构化数据。
HBase和Hadoop一样,目标是通过横向扩展,添加普通机器来增加存储性能和计算性能。 HBase特点: 大(一个表可以有上亿行以及百万级的行)、 面向行存储、 稀疏(由于null不占用存储空间,所有表结果可以设计的非常稀疏)。
HBase使用Zookeeper进行集群节点管理,当然HBase自身集成了一个ZK系统,不过一般情况在实际生产环境中不使用。
HBase由master和regionserver两类节点(如果使用HBase自带的zk服务,那么还有HQuorumPeer进程)。Hbase支持提供backup master进行master备份。 其中master节点负责和zk进行通信以及存储regionserver的相关位置信息,regionserver节点实现具体对数据的操作,最终数据存储在hdfs上。
image.png
HBase有三种安装方式,第一种独立模式,第二种是分布式模式(集成zookeeper),第三种是分布式模式(独立zookeeper)。
主要指定JAVA_HOME和hadoop相关信息。其他包括pid存储路径指定和给定指定参数决定是否使用集成zk(默认使用)。
image.png
image.png
主要指定hbase相关资源配置信息和hdfs相关客户端信息。
image.png
主要方便直接执行hbase命令。修改文件~/.base_properties,然后执行命令source ~/.base_properties使命令生效。
image.png
启动集群命令: start-hbase.sh 停止集群命令: stop-hbase.sh 单独启动/停止进程命令: (单独的启动master或者regionserver) hbase-daemon.sh (start|stop) (master|regionserver|zookeeper) hbase-daemons.sh (start|stop) (regionserver|zookeeper)
image.png
image.png
image.png
image.png
如果需要使用hbase的多master结构, 那么需要在conf文件夹下添加backup-masters文件, 然后一行一个主机名,和regionservers是一样的; 或者在hbase-env.sh中添加变量HBASE_BACKUP_MASTERS, 对应value为backup-masters存储路径(启动命令一样)。
1 下载
http://archive.cloudera.com/cdh5/cdh/5/hbase-0.98.6-cdh5.3.6.tar.gz
2 解压
tar -zxvf xxx
3 修改conf/hbase-env.sh
JAVA_HOME=/usr/local/jdk
HBASE_CLASSPATH=hadoophome/etc/hadoop
export HBASE_PID_DIR=/home/hadoop/bd/hbase-0.98.6-cdh5.3.6/hbase/pids
port HBASE_MANAGES_ZK=true
4 修改hbase-site.xml
hbase.rootdir=hdfs://hh/hbase
hbase.cluster.distributed=true
hbase.tmp.dir=/home/hadoop/bd/hbase-0.98.6-cdh5.3.6/hbase/tmp
5 修改regionservers
将主机名添加进去,每行一个
6 修改环境变量
添加HBASE_HOME和PATH
7 启动验证
wget http://archive.cloudera.com/cdh5/cdh/5/hbase-0.98.6-cdh5.3.6.tar.gz
tar zxf hbase-0.98.6-cdh5.3.6.tar.gz
mv hbase-0.98.6-cdh5.3.6 ../bigdater/
cd ../bigdater/hbase-0.98.6-cdh5.3.6/conf
vim hbase-env.sh
vim hbase-site.xml
vim regionservers
vim ~/.bash_profile
source ~/.bash_profile
start-hbase.sh
jps
export JAVA_HOME=/usr/local/jdk
export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop
export HBASE_PID_DIR=/home/hadoop/bigdater/hbase-0.98.6-cdh5.3.6/hbase/pids
export HBASE_MANAGES_ZK=true
<configuration>
<property><name>hbase.rootdir</name><value>hdfs://hh/hbase</value></property>
<property><name>hbase.cluster.distributed</name><value>true</value></property>
<property><name>hbase.tmp.dir</name><value>/home/hadoop/bigdater/hbase-0.98.6-cdh5.3.6/hbase/tmp</value></property>
</configuration>
regionservers
hh
~/.bash_profile
export HBASE_HOME=/home/hadoop/bigdater/hbase-0.98.6-cdh5.3.6/
export PATH=$PATH:$HBASE_HOME/bin