配置集群:主机master、从机s1、s2
``

`一、安装hadoop

需要的文件
VMware
Xshell
jdk 1.8.0_171
CentOS-7-x86_64-DVD-2003.iso
hadoop2.7.7
zookeeper3.6.3
hbase1.3.1
文件已上传百度网盘,密码1024

CentOS-7-x86_64-DVD-2003.iso文件清华镜像网下载

注意hadoop、ZooKeeper和hbase的版本冲突

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml

1、先确定使用本地DHCP服务将IP地址分配到虚拟机(即自动分配动态IP地址),但是后面需要配置静态地址,这里先勾上

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_02

2、进入VMware开始新建虚拟机

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_03


hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_04

这里首先创建master主机

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_05


由于我们经常使用主机master进行命令操作,copy到从机

从机只是后台运行挂起,最大磁盘大小最好大一点,这里我设置为30G

从机磁盘的大小就可以小一点,这里我设置为20G

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_06


如果你的电脑配置不好,最好配置和我一样

(个人建议,因为我的内存条是两条4G的,虚拟机的运行内存过大,同时启动三台虚拟机的话你的电脑会严重卡顿,我的就是卡到只能长按开机重启。。血的教训。。)

最后直接点击完成,启用虚拟机,我的虚拟机配置结果——如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_07


hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_08


hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_09


从机的安装流程和master主机基本一致,区别在于,磁盘大小用默认20GB大小即可

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_10


hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_11


进入虚拟机后,首先需要配置语言

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_12


接着是安装位置

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_13


——这里我安装目标位置需要点击两次

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_14


然后是打开网络

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_15


这里如果网络配置打不开也无所谓,因为我们后面需要自己手动去配置静态网络的最后选择软件选择,这里我选择GNOME桌面安装,如果是Linux大牛的话,可以跳过

小白最好选择桌面,最小安装对新手不是特别友好

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_16

配置ROOT密码并确认后,重启虚拟机

设置这台电脑的用户名并输入你的开机密码

注意是开机密码!!!开机密码!!!开机密码!!!

而不是终端切换管理员权限的密码

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_17

同意协议后进入初始页面

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_18

配置root用户

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_19

3、进入虚拟机终端配置相关配置信息

配置静态网络

电脑密码zhang2001

进入root用户su root

密码111111

cd /etc/sysconfig/network-scripts/

进入ifcfg-ens33文件编辑修改配置vi ifcfg-ens33

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_20


小知识

cd etc相对路径

cd /etc 绝对路径

cd etc是在当前文件夹下寻找名字为etc的文件夹并切换到该目录下

cd /etc是不管你在哪个目录下,都是切换到“/”目录下名字为etc的文件夹目录下

配置具体如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=85698115-0678-42bc-bac6-cc6294b8d285
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.137.110
NETWORK=255.255.255.0
GATWAY=192.168.137.2
DNS1=180.76.76.76

ip地址最后小数点后随意设置(有时候会出现ip冲突,意思就是说有人用你想用的ip,换一个就好

network网关在虚拟机“编辑”->“虚拟网络编辑器”中查看

点击“更改设置”

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_21

点击“NAT设置”查看GATWAY

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_22

DNS1备用网络看百度DNS

具体如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_23

操作完成后执行命令service network restart运行配置
ping www.baidu.com 查看是否连上网络

报错:主机能ping外网,能ping到从机
从机slave1、slave2 ping不上百度,能ping上主机master
解决:从机不是必须要ping通外网,因为我们主要使用的是master

4、关闭防火墙 输入两条命令

systemctl stop firewalld
systemctl disable firewalld

查看当前防火墙的状态 输入命令

systemctl status firewalld

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_24

看到Active: inactive (dead),说明防火墙已关闭
Active: active (live)说明防火墙还没有关闭,返回以上操作

5、配置主机

切换root目录cd ~ 输入命令 hostnamectl set-hostname master
然后执行重启虚拟机应用 输入命令reboot

重启后,修改hosts文件
cd /etc/hosts
添加以下配置:

192.168.137.140 master
192.168.137.141 s1
192.168.137.142 s2

如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_25


hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_26


作用是让所有的虚拟机可以互相连接

6、使用ssh传输文件

打开ssh,新建会话

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_27

点击确定

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_28


点击接受并保存

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_29


hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_30

结果如下图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_31

配置好会话后,开始ssh传输文件

yum install lrzsz -y

-y的作用是,默认全部回答为yes
rz传输本地文件到linus虚拟机系统

master可以远程连接s1、s2

ssh s1 ssh s2

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_32

7、ssh配置免密码登录

cd ~

在各个机器下输入命令

ssh-keygen -b 1024 -t rsa

然后一直回车,结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_33


在~/.ssh/目录下生成文件id_rsa、id_rsa.pub

(ls是不会显示隐藏文件的,/.ssh中的“.”就是隐藏文件

输入命令ls –all显示全部文件)

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_34

免密码登录

需要把master的id_rsa.pub公钥发送到s1、s2中

s1、s2接收了master的id_rsa.pub公钥,master就可以免密码登录

把master的公钥放到s1、s2的authorized_keys文件里

输入命令ssh-copy-id s1(s2同上)

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_35

s1、s2配置免密码登录

s1的公钥发给s2

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_36


s2的公钥发给s1

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_37


完成以上操作后,结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_38

master给master配置免密码登录

切换到ssh目录下 cd .ssh

输入命令 ssh-copy-id master

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_39


配置权限

chmod 600 authorized_keys

chmod 修改权限的命令

600 参数含义请参考菜鸟教程 具体查看chmod命令

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_40


s1、s2同样的操作

(注:xshell中的粘贴不是ctrl+v,而是shift+insert)

8、解压jdk和hadoop并安装

cd ~

tar –xvzf 待解压压缩包名字–C 目标存放路径

tar –czvf 目标压缩文件名 文件或目录

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_41

下载vim

yum install vim –y

vi 编辑文件内容,没有该文件时会新建文件

vim 编辑文件时会有高亮显示

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_42

输入命令 vim .bash_profile

进入 .bash_profile文件进行添加JAVA_HOME

export JAVA_HOME=/root/jdk1.8.0_171

export PATH=hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_43PATH

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_44

配置完成后,执行命令 source .bash_profile应用配置

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_45

然后将master配置好的java文件发送到s1、s2

输入命令 scp -r jdk1.8.0_171 root@s1:~/

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_46

9、配置hadoop文件

(hadoop配置文件只需先在master主机上配置,后面直接scp复制到从机即可)
进入hadoop配置文件目录下cd /hadoop/etc/hadoop

(1) hadoop-env.sh

输入命令vim hadoop-env.sh
修改如下:

export JAVA_HOME=/root/jdk1.8.0_171

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_47

(2) yarn-env.sh

输入命令vim yarn-env.sh
修改如下:

JAVA_HOME=/root/jdk1.8.0_171

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_48

(3) core-site.xml

输入命令vim core-site.xml
修改如下:

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopdata</value>
</property>
</configuration>

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_49

(4) hdfs-site.xml

输入命令vim hdfs-site.xml
修改如下:

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_50

(5) yarn-site.xml

输入命令vim yarn-site.xml
修改如下:

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux.services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_51

(6) mapred-site.xml. template

输入命令vim mapred-site.xml. template
修改如下:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

修改完成后,需要改名成mapred-site.xml
mv mapred-site.xml.template mapred-site.xml

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_52

(7)hadoopMaster节点配置slaves

输入命令vim slaves

修改如下:

s1

s2

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_53

完成以上操作后切换到root目录下

输入命令scp -r hadoop s1:~/

将配置好的hadoop配置文件,直接将hadoop文件夹发送到s1、s2

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_54


hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_55

10、配置hadoop启动的系统环境变量

各个机器都需要在文件尾配置追加
切换到root目录下
输入命令vim .bash_profile
修改如下:

PATH=$PATH:$HOME/bin

export JAVA_HOME=/root/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/root/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_56

完成后需要输入命令source .bash_profile应用配置

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_57

11、创建数据目录

各个机器创建都是一样的数据目录

切换到root目录下

输入命令:

mkdir /root/hadoopdata

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_58

12、启动hadoop集群

格式化文件系统,只能格式化一次

如果多次格式化文件系统,DataNode或NameNode或两个都启动不了

在master主机上的root目录下

输入命令:

hdfs namenode –format

截图如下:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_59

(1)启动服务

一步启动hadoop集群服务
切换到hadoop的安装目录中的sbin文件夹中
cd $HADOOP_HOME/sbin
命令./start-all.sh

分步启动hadoop集群服务
切换到hadoop的安装目录中的bin文件夹下
cd $HADOOP_HOME/bin
命令start-dfs.sh start-yarn.sh

(2)关闭服务

一步关闭hadoop集群服务
~/hadoop/sbin/stop-all.sh

分步关闭hadoop集群服务
stop-yarn.sh stop-dfs.sh

报错一

记录:使用一次启动所有hadoop集群服务命令start-all.sh
jps查看时少了DataNode

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_60


解决:

关闭集群服务

分步启动hadoop集群服务

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_61

二、安装ZooKeeper

切换的/opt目录下,创建data文件夹(存放ZooKeeper、hbase的数据文件夹)、server文件夹(ZooKeeper、hbase的安装文件夹)、soft文件夹 (ZooKeeper、hbase的压缩包文件夹)

1、上传并解压ZooKeeper压缩包

cd /opt/soft -> rz上传压缩包
cd /opt/server -> tar –xvzf * -C *解压压缩包到指定文件夹路径下

2、配置zoo.cfg

切换路径cd /opt/server/zookeeper/conf

输入命令cp zoo_sample.cfg zoo.cfg copy一份到当前目录下,并命名为zoo.cfg

输入命令vim zoo.cfg修改zoo.cfg文件

配置如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_62

更新

需要在文件尾部追加以下文件
server.1=master:2888:3888
server.2=s1:2888:3888
server.3=s2:2888:3888

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_63

配置ZooKeeper的环境变量
vim /etc/profile
添加以下信息
export ZOOKEEPER =/opt/server/zookeeper

后面需要改成以下内容,方便切换ZooKeeper安装目录

export ZOOKEEPER_HOME =/opt/server/zookeeper
export PATH=$PATH:$ZOOKEEPER/bin

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_64


完成以上操作后输入命令source /etc/profile应用配置

1)tickTime:通信心跳数,Zookeeper服务器心跳时间,单位毫秒
Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
2)initLimit:LF初始通信时限
集群中的follower跟随者服务器(F)与leader领导者服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
投票选举新leader的初始化时间
Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。
Leader允许F在initLimit时间内完成这个工作。
3)syncLimit:LF同步通信时限
集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,
Leader认为Follwer死掉,从服务器列表中删除Follwer。
在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。
如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为这个F已经不在线了。
4)dataDir:数据文件目录+数据持久化路径
保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。
5)clientPort:监听客户端连接的端口

主要修改了dataDir文件夹的路径和添加了dataLogDir文件夹的路径

完成后,启动ZooKeeper

切换到bin目录下输入命令./zkServer.sh start

jps查看是否启动成功

启动成功的截图如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_65


我的截图如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_66

报错二

配置ZooKeeper环境变量时
vim /etc/profile上添加环境变量信息
/etc/profile文件是配置ZOOKEEPER_HOME、HBASE_HOME
可以方便切换ZooKeeper、hbase的安装目录
方便启动集群服务

export ZOOKEEPER=/opt/server/zookeeper

export PATH=hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_67ZOOKEEPER/bin

出现报错,截图如下

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_68

原因:在/etc/profile文件中某处多了个p(我也不道啊。。我就是歌姬吧QAQ)

三、hbase安装

(1)上传下载好的压缩包hbase-1.2.1-bin.tar.gz到/opt/soft/,解压到 /opt/server

cd /opt/soft
rz命令上传压缩包

tar –xvzf hbase-1.2.1-bin.tar.gz –C /opt/server

命令解压压缩包

(2)软连接

ln -s /root/hadoop/etc/hadoop/core-site.xml /opt/server/hbase/conf/core-site.xml
ln -s /root/hadoop/etc/hadoop/hdfs-site.xml /opt/server/hbase/conf/hdfs-site.xml

截图如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_69

(3)配置hbase文件

在hbase的conf目录下进行
cd /opt/server/hbase/conf

1、vim hbase-site.xml

配置信息如下

<configuration>
<property>
    <name>hbase.rootdir</name>
        <!-- hbase存放数据目录 -->
    <value>hdfs://master:9000/hbase</value>
        <!-- 端口要和Hadoop的fs.defaultFS端口一致 -->
</property>
<property>
    <name>hbase.cluster.distributed</name>
        <!-- 是否分布式部署 -->
    <value>true</value>
</property>
<!-- 0.98后的新变动,之前版本没有.port,默认端口为60000 -->
<property>
    <name>hbase.master.port</name>
    <value>16000</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
        <!-- zookeeper服务启动的节点,最好为奇数个 -->
    <value>master,s1,s2</value>
</property>
<property>
        <!-- zookeeper配置、日志等的存储位置,必须为已存在 -->
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/opt/data/zookeeper</value>
</property>
</configuration>

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_70

2、vim hbase-env.sh

(1)注释掉export JAVA_HOME=/root/jdk1.8.0_171并修改成JAVA_HOME的路径

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_71

(2)去掉注释,将true改为false

export HBASE_MANAGES_ZK=false

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_72

3、vim regionservers

注册需要启动hbase的主机名

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_73

cat regionservers运行一下

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_74

报错三

[root@master bin]# ./start-hbase.sh

/opt/server/hbase/bin/hbase:行437: /root/java/jdk1.8.0_181-amd64/bin/java: 没有那个文件或目录

running master, logging to /opt/server/hbase/bin/…/logs/hbase-root-master-master.out

/opt/server/hbase/bin/…/bin/hbase:行437: /root/java/jdk1.8.0_181-amd64/bin/java: 没有那个文件或目录

s2: running regionserver, logging to /opt/server/hbase/bin/…/logs/hbase-root-regionserver-s2.out

master: running regionserver, logging to /opt/server/hbase/bin/…/logs/hbase-root-regionserver-master.out

s1: running regionserver, logging to /opt/server/hbase/bin/…/logs/hbase-root-regionserver-s1.out

s2: /opt/server/hbase/bin/…/bin/hbase:行437: /root/java/jdk1.8.0_181-amd64/bin/java: 没有那个文件或目录

master: /opt/server/hbase/bin/…/bin/hbase:行437: /root/java/jdk1.8.0_181-amd64/bin/java: 没有那个文件或目录

s1: /opt/server/hbase/bin/…/bin/hbase:行437: /root/java/jdk1.8.0_181-amd64/bin/java: 没有那个文件或目录

解决:

问题出自与配置文件hbase-env.sh中的java目录的路径

由于java解压后的文件夹不是正常的jdk1.8.0_171,如图所示

这是报错时的配置文件截图

导致找不到JAVA_HOME

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_75


修改为java的安装目录

报错四

在启动HBase之前要先把三台机的zookeeper给启动起来,不然会出现刚启动hbase的进程就消失,我通过查看日志文件,找出的原因是zookeeper没有启动。报错信息如下:

020-06-20 11:31:30,550 INFO [main-SendThread(node1:2181)] zookeeper.ClientCnxn: Opening socket connection to server node1/10.211.55.59:2181. Will not attempt to authenticate using SASL (unknown error)
2020-06-20 11:31:30,550 WARN [main-SendThread(node1:2181)] zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: 拒绝连接
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
at org.apache.zookeeper.ClientCnxnhbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_76ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:783)
at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.createNonSequential(RecoverableZooKeeper.java:565)
at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.create(RecoverableZooKeeper.java:544)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1204)
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createWithParents(ZKUtil.java:1182)

总结来说,出现错误有很大几率是因为配置文件时的粗心大意,可能漏了个标点符号,也可能失手摁多了个字母

启动hbase shell报错

ERROR: Can’t get master address from ZooKeeper; znode data == null

结果如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_77

查看jps截图如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_78

访问master:50070,结果如图所示

进入hadoop端口界面

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_79

发现都没有问题

报错五

2022-05-05 21:15:32,815 ERROR [main] client.ConnectionManager$HConnectionImplementation: The node /hbase is not in ZooKeeper. It should have been written by the master. Check the value configured in ‘zookeeper.znode.parent’. There could be a mismatch with the one configured in the master.

截图如图所示:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hbase_80

原因:
没有配置ZooKeeper集群,ZooKeeper只在master主机上启动运行

解决办法:

切换到ZooKeeper的安装目录下

cd $ZOOKEEPER_HOME

输入命令vim zoo.cfg

在zoo.cfg文件尾部追加以下内容:

server.1=master:2888:3888

server.2=s1:2888:3888

server.3=s2:2888:3888

结果截图如图所示:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_81

报错六

在给从机s1、s2追加内容后,出现新报错

ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

截图如图所示:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_82

重启服务重启虚拟机后,出现新的报错信息

2022-05-06 08:54:02,490 ERROR [main] client.ConnectionManager$HConnectionImplementation: Can’t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase

截图如图所示:

hbase和zookeeper的版本关系 zookeeper hbase hadoop_hadoop_83


去搜索了不同的解决办法

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_84


方法不适用,问题没有解决原因:

ZooKeeper只在master启动服务,s1、s2没有配置与master一步启动集群服务,导致ZooKeeper服务启动命令只在master主机上输入,只有master启动了ZooKeeper服务

解决办法:

先在ZooKeeper的服务关闭,再去master把hbase服务关闭

再分别去s1、s2启动ZooKeeper服务

cd $ZOOKEEPER_HOME 切换ZooKeeper安装目录

cd bin

./zkServer.sh status查看ZooKeeper的节点状态

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_85


hbase和zookeeper的版本关系 zookeeper hbase hadoop_xml_86

结果首次运行报错,原因是主节点master正在初始化
一会再重新输入命令就可以成功运行了

ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
从字面可以知道,主节点正在初始化

解决方案


如图所示

hbase和zookeeper的版本关系 zookeeper hbase hadoop_zookeeper_87

192.168.137.140:16010
查看hbase web网页界面

hbase和zookeeper的版本关系 zookeeper hbase hadoop_vim_88


问题解决