一、概述
1.什么是Hbase
根据官网:https://hbase.apache.org/
Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统
中文简明介绍:
Hbase是分布式、面向列的开源数据库(其实准确的说是面向列族)。HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hbase提供高性能的计算能力,Zookeeper为Hbase提供稳定服务和Failover机制,因此我们说Hbase是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。
2.什么是列式存储
使用网友的图就是:
其中更加深入的内部原理讲解,参考:http://blog.csdn.net/lifuxiangcaohui/article/details/39891099
http://lib.csdn.net/article/datastructure/8951
3.为什么需要Hbase
以下介绍了一种Hbase出现的场景:
更多完整的原因介绍,参考:http://www.thebigdata.cn/HBase/30332.html
与传统数据库的对比如下:
1、传统数据库遇到的问题:
1)数据量很大的时候无法存储
2)没有很好的备份机制
3)数据达到一定数量开始缓慢,很大的话基本无法支撑
2、HBASE优势:
1)线性扩展,随着数据量增多可以通过节点扩展进行支撑
2)数据存储在hdfs上,备份机制健全
3)通过zookeeper协调查找数据,访问速度块。
4.hbase中的角色
1、一个或者多个主节点,Hmaster
2、多个从节点,HregionServer
二、安装与配置
1.上传
这里暂时使用hbase0.99,其他与Hadoop的兼容性问题,参考文档Basic Prerequisites处,另外,此文档有翻译版本:点击查看
这次我们使用sftp来上传(比古老的rz/sz要更快),操作参考之前随笔:http://www.cnblogs.com/jiangbei/p/8041713.html
2.解压
先在一台机器上操作,之后再复制发送到其他集群中的机器
[hadoop@mini1 ~]$ tar -zxvf hbase-0.99.-bin.tar.gz -C apps/
// 之后是可以删除这个压缩包的
3.重命名
[hadoop@mini1 apps]$ mv hbase-0.99./ hbase
//当然,这一步是可选的
4.修改环境变量
[hadoop@mini1 apps]$ sudo vim /etc/profile
增加以下两行
export HBASE_HOME=/home/hadoop/apps/hbase
export PATH=$PATH:$HBASE_HOME/bin
[hadoop@mini1 apps]$ source /etc/profile
5.修改配置文件
现在来看conf/下的文件,基本也能摸索出规律了:
[hadoop@mini1 hbase]$ cd conf/
[hadoop@mini1 conf]$ ls
hadoop-metrics2-hbase.properties hbase-policy.xml regionservers
hbase-env.cmd hbase-site.xml
hbase-env.sh log4j.properties
xxx-site:核心配置文件;xxx-env.sh:环境配置(以防PATH未配);没有后缀名的:配置从节点
修改hbase-env.sh:
# JDK
export JAVA_HOME=/opt/java/jdk1..0_151
# 通过hadoop配置文件,找到hadoop集群,请正确选择配置文件地址!
export HBASE_CLASSPATH=/home/hadoop/apps/hadoop-2.6./etc/hadoop
# 是否使用自带的zookeeper,false表示使用自己的
export HBASE_MANAGES_ZK=false
配置hbase-site.xml:
<configuration>
<!--指定hbase集群主控节点 -->
<property>
<name>hbase.master</name>
<value>mini1:60000</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
<!-- 设置hbase数据库存放数据的目录-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://mini1:9000/hbase</value>
</property>
<!-- 打开hbase分布模式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zookeeper集群节点名,因为是由zookeeper表决算法决定的-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>mini1,mini2,mini3</value>
</property>
<!-- 指zookeeper集群data目录-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/apps/hbase/tmp/zookeeper</value>
</property>
</configuration>
配置regionservers
mini2
mini3
6.分发配置到从节点
如果没有配置免密登录,请先参考这里
scp -r hbase/ mini2:/home/hadoop/apps/
scp -r hbase/ mini3:/home/hadoop/apps/
7.启动
需要先启动hadoop:
[hadoop@mini1 apps]$ start-dfs.sh
一键启动hbase也是非常类似的:
start-hbase.sh
通过Jps可以查看!
悔不该当初通过root装的zookeeper集群,现在启动还得通过root和绝对路径启动!所以这里选择重装zk集群!
// 或者切换到root使用一键启动脚本 startZK.sh
//这里0.99.2版本无法访问mini1:60010端口,不知何解(也不是hadoop安全模式问题),也不是1.0以后版本的问题:点击查看
不过这里web页面也不是重点,具体解决待补充
单独启动与停止脚本与hadoop基本类似:
hbase-daemon.sh start master
hbase-daemon.sh start regionserver
8.配置多master
在任意的安装了hbase的机器上启动hmaster.执行 命令:
local-master-backup.sh start