目录
独立模式
伪分布式
完全分布式
使用独立安装的zookeeper
现有三台机器,主机名分别为hmaster1,hslave1,hslave2,并且已经搭建了完全分布式hdfs集群
在独立模式下,HBase产生的数据存储于本地文件系统,所以并不能保证HBase的高可靠安全运行。这适用于本地开发和测试用例,其中集群故障的成本得到很好的控制。它不适合生产部署,最终会丢失数据。
1、安装jdk
2、上传hbase-1.3.1-bin.tar.gz至虚拟机中家目录下的apps目录并解压,并创建一个名为hbase的软链接指向解压后的目录
3、在~/.bash-profile中配置环境变量
HBASE_HOME=/home/jinge/apps/hbase
PATH=$HBASE_HOME/bin:$PATH
export HBASE_HOME PATH
注意source以下该文件
4、在hbase的环境变量文件{$HBASE_HOME}/conf/hbase-env.sh下配置JAVA_HOME
export JAVA_HOME=/home/jinge/apps/jdk
5、编辑HBase配置文件{$HBASE_HOME}/conf/hbase-site.xml
hbase.rootdir
file:///home/jinge/data/hbase
hbase.zookeeper.property.dataDir
/home/jinge/data/zookeeper
hbase.unsafe.stream.capability.enforce
false
6、启动hbase
start-hbase.sh
此时多了一个HMaster进程
通过 hbase shell 可以连接hbase会开启Main进程
可以通过 stop-hbase.sh 停止hbase
伪分布模式意味着HBase仍然在单个主机上完全运行,但每个HBase守护程序(HMaster,HRegionServer和ZooKeeper)作为一个单独的进程运行:在独立模式下,所有守护进程都在一个jvm进程运行。
在独立默认的基础上
1、修改HBase配置文件hbase-site.xml
hbase.rootdir
hdfs://hmaster1:9000/hbase
hbase.zookeeper.property.dataDir
/home/jinge/data/zookeeper
hbase.cluster.distributed
true
hbase.cluster.distributed
true
2、通过 start-dfs.sh 启动集群
3、通过 start-hbase.sh 启动hbase,进程如下
开启顺序:zookeeper->master->regionserver
HRegionServer为HBase区域服务器进程,HQuorumPeer为管理HBase的zk进程
此时可以通过50070端口观察到根目录下多了一个hbase目录
高可用
在伪分布式中的高可用是没有多大意义的,毕竟是在同一台机器上。
开启备份master(backup-master)
HMaster服务器控制HBase集群
local-master-backup.sh start 2 3 5
数字参数表示的是该备用master的端口偏移量的参数。每个HMaster使用两个端口(默认为16000和16010)。因此若使用偏移量2,备份HMaster将使用端口16002和16012,上面这行命令开启了3个备份master。最多可以启用9个备用master,即一共10个master。在伪分布式中启动备用master没有多大意义,毕竟是在同一台机器上。
不同备份master进程之间的PID是不同的,可以通过PID杀死备用master.PID存储在名为/tmp/hbase-USER-X-master.pid的文件中
cat /tmp/hbase-jinge-1-master.pid | xargs kill -9
或者记录主master的PID后通过kill -9杀死
开启多个区域服务器
HRegionServer按照HMaster的指示管理其StoreFiles中的数据。通常,一个HRegionServer在群集中的每个节点上运行。在同一系统上运行多个HRegionServers对于以伪分布式模式进行测试非常有用。
每个RegionServer需要两个端口,默认端口为16020和16030,类似的,开启命令中参数为端口偏移量
local-regionservers.sh start 2 3 5
不过HRegionServer的关闭可以通过命令指定偏移端口号关闭
local-regionservers.sh stop [offset]
在完全分布式配置中,群集包含多个节点,每个节点运行一个或多个HBase守护程序。这些包括主要和备用主实例,多个ZooKeeper节点和多个RegionServer节点。
可以这样设置完全分布式的体系结构
节点名称 | Master | zookeeper | RegionServer |
---|---|---|---|
hmaster1 |
是 |
是 |
否 |
hslave1 |
备用 |
是 |
是 |
hslave2 |
否 |
是 |
是 |
在伪分布式的基础上,确保设置了ssh无密登录
1、配置regionserver所在的节点信息,修改{$HBASE_HOME}/conf/regionservers,原文件内容为localhost
hslave1
hslave2
2、配置高可用备份master
在conf下创建backup-masters文件并添加备用master节点信息
hslave1
3、配置zookeeper服务所在的节点,在hbase-site.xml下添加
hbase.zookeeper.quorum
hslave1,hslave2
4、确保每个节点都有相同的配置文件,可以通过scp发送conf目录到各个节点对应位置
5、同上开启hdfs,开启hbase
hmaster1中的进程:
hslave1中的进程:
hslave2中的进程:
并且开启顺序为:zookeeper->master->regionserver->back-up master
自带的zookeeper和hbase绑定在一起,这种部署模式存在一定的问题。因为当一个集群中有很多组件都需要zookeeper的时候,自然是采用一个独立安装的zookeeper更为妥当。
1、修改hbase-env.sh文件,添加
export HBASE_MANAGES_ZK=false
false表示使用独立安装的zookeeper
2、将zookeeper的配置文件zoo.cfg复制到hbase的CLASSPATH(conf目录下)
cp ~/apps/zookeeper/conf/zoo.cfg ~/apps/hbase/conf
3、注意hbase-env.sh中hbase.zookeeper.property.dataDir属性应该与zoo.cfg中的dataDir路径相同
然后重启hbase即可