hbase的安装与配置(三台集群分布式)

=============================================================

一  安装前准备

=============================================================

下载hbase-2.2.5的JAR包后发现,lib中自带的是hadoop2.8.5和zookeeper-3.4.10版本,
下载hbase-2.3.0的JAR包后发现,lib中自带的是hadoop2.10和zookeeper-3.5.7版本,
因此这几个版本肯定是比较好的,不过本人不打算用这个默认的
hbase-2.2.5==>hadoop2.8.5和zookeeper-3.4.10
hbase-2.3.0==>hadoop2.10和zookeeper-3.5.7

本人的安装版本推荐:

HBASE2.2.X+ <==> Hadoop3.1.x+

hbase2.2.5 <==> Hadoop3.1.2


1. 下载地址

建议镜像地址: https://mirror.bit.edu.cn/apache/hbase/2.2.5/hbase-2.2.5-bin.tar.gz

2. 规划3个集群节点:
hosts主机都已经配置好映射,映射主机名分别为master,slave1,slave2,
且已经进行ssh免密配置,确保端口互通,防火墙关闭

=============================================================
二   安装过程:

=============================================================

1.解压
tar -zxvf hbase-2.2.5-bin.tar.gz -C ../

2. 配置环境变量
转到root用户,首先进入到 /etc/profile 目录,添加相应的配置信息:

#set HBASE environment
export HBASE_HOME=/opt/soft/hbase-2.2.5/
export PATH=$PATH:$HBASE_HOME/bin

3. 然后通过如下命令使得环境变量生效:

source /etc/profile


=============================================================
三    配置过程:

=============================================================

cd conf

1. vim hbase-env.sh
hbase-env.sh添加内容如下

注意:这里的JAVA_HOME请配置成你自己的:
export JAVA_HOME=/opt/soft/jdk1.8.0_261
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=false

第一行指定jdk位置
第二行指定额外的classpath元素
第三行是关于jvm的可以不需要
第四行,true表示使用hbase自带的zookeeper,false表示使用自己的zookeeper(推荐,趁此学一下zookeeper,学了hbase后面的storm跟spark也会去学,后面很多都要使用zookeeper,一劳永逸)。

2. hbase-site.xml内容如下:

<configuration>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>是否是分布式的,当然</description>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>


<property>
<name>hbase.master</name>
<value>master:60000</value>
<description>指定hbase的主节点与端口号</description>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>时间同步允许的时间差</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<description>hbase共享目录,持久化hbase数据,这个需要看你hadoop的核心文件里面配置的是不是master:9000不是的话得改成自己的hadoop里面写的,参照你的Hadoop的namenode的fs.defaultFS这个参数端口配置,我的hadoop的namenode是放在master上</description>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
<description>指定zookeeper,我的zookeeper集群就是在这三台机器的</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/soft/hbase-2.2.5/zkdata</value>
<description>zookeeper配置信息快照的位置,目录会自己创建的</description>
</property>
</configuration>


补充说明:
hbase.rootdir:HBase的数据存储目录,由于HBase数据存储在HDFS上,所以要写HDFS的目录,注意路径端口要和Hadoop的fs.defaultFS端口一致。配置好后,HBase数据就会写入到这个目录中,且目录不需要手动创建,HBase启动的时候会自动创建。


hbase.cluster.distributed:设置为true代表开启分布式。
hbase.zookeeper.quorum:设置依赖的ZooKeeper节点,此处加入所有ZooKeeper集群即可。
hbase.zookeeper.property.dataDir:设置ZooKeeper的配置、日志等数据存放目录。
另外,还有一个属性hbase.tmp.dir是设置HBase临时文件存放目录,不设置的话,默认存放在/tmp目录,该目录重启就会清空。


3. regionservers里面添加从节点机器名
slave1
slave2

=============================================================

四. 将按照配置好的hbase上传到其他机器

=============================================================

scp -r /opt/soft/hbase-2.2.5/ hadoop@slave1:/opt/soft/
scp -r /opt/soft/hbase-2.2.5/ hadoop@slave2:/opt/soft/

=============================================================
五: 启动

=============================================================


1.
cd ../bin 转到bin目录

start-hbase.sh
停止用start-hbase.sh


2. 启动后jps查看是否新增了进程
xxxx HMaster

注:启动起来的前提需要启动hadoop和zookeeper,最后启动的话,那么master机器上会多出HMaster进程,slave1和slave2上多出了HRegionServer。

 


3. Web端UI界面访问Master-status:
浏览器访问HMaster所在节点的16010端口(http://master:16010)即可查看HBase集群的运行状态

 

=============================================================

六   可能出现的问题

=============================================================


出现问题启动不起来Hbase时

1.需要关闭DFS安全模式

手动关闭安全模式命令如下:

hdfs dfsadmin -safemode leave
2.测试HRegionServer上下线
单独启动HRegionServer节点:

启动集群中所有的regionserver
./hbase-daemons.sh start regionserver
启动某个regionserver
./hbase-daemon.sh start regionserver
3.如果关闭虚拟机后需要先启动

(1)[root@hadoop01 ~]# start-dfs.sh
(2)[root@hadoop01 ~]# zkServer.sh start
(3)[root@hadoop01 ~]# start-hbase.sh
查看jps是否存在即可。

原文地址:https://www.cnblogs.com/sea520/p/13503209.html