hadoop集群基础上安装ZooKeeper和HBase

11 篇文章 0 订阅
2 篇文章 0 订阅

之前的文章已经介绍了如何搭建hadoop集群,以及在hadoop集群之上搭建spark集群。可以点击如下链接查看:

一、centos7+hadoop2.8.0+VMware搭建完全分布式集群

二、hadoop完全分布式基础上搭建spark集群


本篇文章记录的是在上述hadoop集群上安装HBase和ZooKeeper的过程,以备后续参考!

软件版本和系统环境

①HBase,1.2.5,下载链接 http://archive.apache.org/dist/hbase/1.2.5/hbase-1.2.5-bin.tar.gz

②ZooKeeper,3.4.8,下载链接 http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

 

安装配置ZooKeeper

①将下载的zookeeper压缩包上传到/opt/hadoop目录下并解压(这个目录是自己创建的用来存放相关软件安装包的)

在/opt/hadoop目录下执行解压命令:tar -zxf zookeeper-3.4.8.tar.gz

②进入zookeeper安装包的conf目录下,复制一份zoo_sample.cfg文件到zoo.cfg文件

③配置zoo.cfg

④创建dataDir对应的目录

因为上一步配置了dataDir的目录此时并不存在,因此需要创建。

进入/root/hadoop目录,执行命令:mkdir -p zookeeper/data

⑤进入data文件夹,新建myid文件并且写入“1” 

命令:vi myid

⑥配置zookeeper安装目录下的conf文件夹中的日志文件log4j.properites,修改如下两处

⑦bin目录下的zkEnv.sh文件,配置日志路径,修改如下两处

⑧将master节点上配置好的zookeeper文件传到slave1和slave2节点的/opt/hadoop目录下

命令:scp -r  ....

⑧像步骤④一样,在slave1和slave2节点分别创建dataDir对应的目录,以及创建并编辑myid文件

区别是,myid文件的内容分别改为“2”和“3”,slave1对应2,slave2对应3

命令:mkdir -p zookeeper/data

⑨在所有机器上分别配置zookeeper环境变量

命令:vi /etc/profile,添加如下两行

⑩在每台机器上都运行zookeeper,并查看状态

下面三张图依次是我的启动顺序,status状态会根据集群启动情况动态选举leader和follower。

jps查看进程,看到所有节点都有QuorumPeerMain进程

注意:zookeeper的启动顺序不需要按照myid值的顺序依次启动。

如果觉得每次启动zookeeper集群都有在所有节点上执行start命令比较麻烦,可以参考下面链接进行设置,这样只需要在master节点的相关目录下执行startzk.sh即可启动集群。

https://blog.csdn.net/loopeng1/article/details/79012989

 

安装配置HBase

①将hbase压缩包上传到master节点的/opt/hadoop目录下并解压

②配置/opt/hadoop/hbase-1.2.5/conf目录下的一系列文件

主要是配置这三个文件hbase-env.shhbase-site.xml和 regionservers

hbase-env.sh

export JAVA_HOME=/opt/java/jdk1.8.0_181

export HBASE_CLASSPATH=/opt/hadoop/hbase-1.2.5

export HBASE_MANAGES_ZK=false(因为要使用自己安装的zookeeper,所以这里设置成false来禁止使用hbase自带的)

export HBASE_PID_DIR=/root/hadoop/pids(这是用来存放pid的目录,需要自己创建)

hbase-site.xml

在<configuration></configuration>中添加如下内容

    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <!-- 如果hadoop是HA模式,那么rootdir可以改成对应的名称。同时需要将hadoop的core-site.xml和hdfs-site.xml复制到hbase的conf目录下,否则会报找不到ns1的错误 -->
    <!--
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://ns1/hbase</value>
    </property>
    -->
    <!-- 启用分布式模式 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <!-- 指定独立Zookeeper安装路径 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/hadoop/zookeeper-3.4.8</value>
    </property>

    <!-- 指定ZooKeeper集群端口 -->
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>

    <!-- 指定Zookeeper集群位置 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
    </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>60000000</value>
    </property>
    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>

regionservers

添加节点主机名

③创建pid存放目录

在步骤②中,我们设置了HBASE_PID_DIR=/root/hadoop/pids,但当前并不存在此目录,因此需要手动创建此目录

命令:midir /root/hadoop/pids

④在/etc/profile文件中配置hbase的环境变量

⑤将master节点上配置好的hbase-1.2.5安装包发送到slave1和slave2节点

在/opt/hadoop路径下依次执行下面两行命令

scp -r ./hbase-1.2.5 slave1:/opt/hadoop
scp -r ./hbase-1.2.5 slave2:/opt/hadoop

⑥在master节点上启动hbase

在此之前,先启动hadoop和zookeeper。

在master节点上执行命令:start-hbase.sh来启动hbase,并用jps查看进程

在slave节点查看进程

注意:启动HBase之前应该保证Hadoop集群和zookeeper已经启动,并且在主节点执行start-hbase.sh启动HBase集群,否则HMaster进程将在启动几秒后消失,看日志可能会看的如下错误

zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

而备用的HMaster进程需要在备用主节点单独启动,命令是:./hbase-daemon.sh start master

⑦登录web页面查看

hbase1.0版本以后web默认的端口是16010,也可以自己在hbase.site.xml中设置

 

输入网址:masterip:16010 即可

 

 

 

hbase安装时遇到的问题汇总:

1.后面在尝试安装2.1.8版本的hbase时,还遇到了下面的错 

java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder

网上找到解决方法,执行下面的命令即可解决

cp $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar $HBASE_HOME/lib/

 

2.hbase必须依赖于hdfs,也就是说如果Hadoop集群的DataNode没有启动起来的话,也会导致hmaster启动失败:

 ERROR [master/flink1:16000:becomeActiveMaster] master.HMaster: ***** ABORTING master flink1,16000,1576915484267: Unhandled exception. Starting shutdown. *****
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.

3.hbase集群高可用安装时,对集群节点的时间差有要求,因此尽可能的保持各节点时间同步,否则可能会报下面的错(时间差超过最大限制时,虽然主节点可以启动hredionserver,但是其他与主节点时间差较大的有可能启动不了),解决时间同步问题可以看这篇

ERROR [regionserver/flink2:16020] regionserver.HRegionServer: Master rejected startup because clock is out of sync
org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.hadoop.hbase.ClockOutOfSyncException: Server flink2,16020,1576888135093 has been rejected; Reported time is too far out of sync with master.  Time difference of 52153513ms > max allowed of 30000ms

4.集群服务起来后,周末两天没管,周一再看web页面的时候看到dead regionserver有好多,regionserver全都死掉了。然后hbase shell中执行一些命令的时候也会报master is initializing的错误,查看master日志看到有下面这句报错:

WARN  [master/flink1:16000:becomeActiveMaster] master.HMaster: hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1576939135821, server=flink1,16020,1576769049468}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

网上找了一些,发现解决办法是删除掉zk中对应的hbase路径然后重启hbase即可:

[zk: 172.21.89.128:2181(CONNECTED) 2] ls /
[zookeeper, yarn-leader-election, hbase, hadoop-ha, rmstore]
[zk: 172.21.89.128:2181(CONNECTED) 3] rmr /h

hbase       hadoop-ha
[zk: 172.21.89.128:2181(CONNECTED) 3] rmr /hbase

5.启动的时候还有可能报下面的错

The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so.

这可以通过在hbase-site.xml文件中增加以下配置解决

<property>
  <name>hbase.unsafe.stream.capability.enforce</name>
  <value>false</value>
</property>

 

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值