前提条件:
假设Zookeeper、Hadoop服务已经部署完毕且和HBase在同一个集群,没部署完需要先部署Zookeeper、Hadoop。
安装前注意事项:
- 检查HBASE集群每台服务器的时间是否是一致的,不然会导致集群启动异常,检查服务器时间用命令:date -R
安装并修改HBASE配置文件
hbase的配置文件在 HBASE_HOME/conf 下,需要修改的配置文件有:
hbase-env.sh,hbase-site.xml,regionservers,backup-masters(该文件需要手动创建)
假设三台机器ip分别为:10.2.93.164、10.2.93.144、10.2.93.161,实际部署时换成实际IP,机器数量超过3时,操作同理。
在master 10.2.93.164上进行操作:
1、配置hbase-env.sh文件,该文件用于设置HBase的工作环境,包括 JAVA和其他环境变量的配置,该文件的改动需要重启HBase才能生效(默认配置文件中有详细的配置都注释掉了,可以):
|
# JAVA_HOME路径,可用echo $JAVA_HOME获得
export JAVA_HOME=/usr/local/jdk1.8
# 关闭Hbase自带的zookeeper集群
export HBASE_MANAGES_ZK=false
|
2、配置hbase-site.xml文件,HBase主要的配置文件,该文件可覆盖HBase的默认配置,可以在HBase Web UI的HBase配置选项中查看整个集群的有效配置,包括默认和覆盖的:
|
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 这个目录是region服务器共享的目录,用来持久存储HBase的数据,
默认值为:${hbase.tmp.dir}/hbase,如果不修改这个配置,数据将会在集群重启时丢失。 -->
<property>
<name>hbase.rootdir</name>
<!-- hadoop引入JQM负载均衡时,这里配置dfs.nameservices指定的集群逻辑名称 -->
<value>hdfs://mycluster/hbase</value>
<!-- 指定Hadoop master服务器的写法,hbase监听hdfs默认的端口是9000,这里的配置端口只能写9000 -->
<!--<value>hdfs://ip:port/hbase</value>-->
</property>
<!-- 指定hbase集群为分布式集群 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zookeeper集群,有多个用英文逗号分隔 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>10.2.93.164:8181,10.2.93.144:8181,10.2.93.161:8181</value>
</property>
<!-- Zookeeper元数据快照的存储目录(需要和Zookeeper的zoo.cfg 配置文件中的属性一致) -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/aitpm/software/zookeeper-3.4.14/data</value>
</property>
<property>
<name>hbase.master.port</name>
<value>8610</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>8611</value>
</property>
<property>
<name>hbase.regionserver.port</name>
<value>8620</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>8621</value>
</property>
<!-- 指定HBase Master web页面访问端口,默认端口号16010 -->
<!--
<property>
<name>hbase.master.info.port</name>
<value>8601</value>
</property>
-->
<!-- 指定HBase RegionServer web页面访问端口,默认端口号16030 -->
<!--- <property>
<name>hbase.regionserver.info.port</name>
<value>8603</value>
</property>
-->
<!-- 解决启动HMaster无法初始化WAL的问题 -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
|
3、新建 backup-masters文件,添加备份HMaster机器名,该文件不能写注释,启动时会把注释的那行当成服务器列表而导致启动失败:
4、修改regionservers配置文件,添加HBase集群中运行RegionSever的主机名或IP列表,每行一个(分布式部署可以把默认的一行localhost删除掉),该文件不能写注释,启动时会把注释的那行当成服务器列表而导致启动失败:
|
#改成实际机器名
10.2.93.164
10.2.93.144
|
5、Hadoop引入JQM负载均衡机制需要把Hadoop的core-site.xml和hdfs-site.xml两个配置文件拷贝到HBASE的配置文件目录中,不然会导致HBASE集群无法启动。不引入JQM就无须拷贝。
6、把hbase安装目录分发给其他节点,按照官方文档的提示,所有节点的配置文件信息要保持完全一样
|
scp -r /home/aitpm/software/hbase-2.2.5 10.2.93.144:/home/aitpm/software/
scp -r /home/aitpm/software/hbase-2.2.5 10.2.93.161:/home/aitpm/software/
|
启动HBASE服务
在master节点运行启动命令,会同步启动master的备份节点和regionServer节点:
|
cd /home/aitpm/software/hbase-2.2.5/bin
./start-hbase.sh
|
使用jps命令查看hbase进程
master服务器和备用master服务器会启动HMaster,HRegionServer两个进程
slave服务器会启动HRegionServer一个进程
访问web页面查看是否正常:
master:http://10.2.93.164:8611/
backup master:http://10.2.93.144:8611/
region server(三个ip均可):http://10.2.93.164:8621/