配置集群:主机master、从机s1、s2
``
需要的文件
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的版本冲突
这里首先创建master主机
由于我们经常使用主机master进行命令 *** 作,copy到从机
从机只是后台运行挂起,最大磁盘大小最好大一点,这里我设置为30G
从机磁盘的大小就可以小一点,这里我设置为20G
如果你的电脑配置不好,最好配置和我一样
(个人建议,因为我的内存条是两条4G的,虚拟机的运行内存过大,同时启动三台虚拟机的话你的电脑会严重卡顿,我的就是卡到只能长按开机重启。。血的教训。。)
最后直接点击完成,启用虚拟机,我的虚拟机配置结果——如图所示
从机的安装流程和master主机基本一致,区别在于,磁盘大小用默认20GB大小即可
进入虚拟机后,首先需要配置语言
接着是安装位置
——这里我安装目标位置需要点击两次
然后是打开网络
这里如果网络配置打不开也无所谓,因为我们后面需要自己手动去配置静态网络的
最后选择软件选择,这里我选择GNOME桌面安装,如果是Linux大牛的话,可以跳过
小白最好选择桌面,最小安装对新手不是特别友好
配置ROOT密码并确认后,重启虚拟机
设置这台电脑的用户名并输入你的开机密码
注意是开机密码!!!开机密码!!!开机密码!!!
而不是终端切换管理员权限的密码
同意协议后进入初始页面
配置root用户
配置静态网络
电脑密码zhang2001
进入root用户su root
密码111111
cd /etc/sysconfig/network-scripts/
进入ifcfg-ens33文件编辑修改配置vi ifcfg-ens33
小知识
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网关在虚拟机“编辑”->“虚拟网络编辑器”中查看
点击“更改设置”
点击“NAT设置”查看GATWAY
DNS1备用网络看百度DNS
具体如图所示
*** 作完成后执行命令service network restart运行配置
ping www.baidu.com 查看是否连上网络
报错:主机能ping外网,能ping到从机
从机slave1、slave2 ping不上百度,能ping上主机master
解决:从机不是必须要ping通外网,因为我们主要使用的是master
systemctl stop firewalld
systemctl disable firewalld
查看当前防火墙的状态 输入命令
systemctl status firewalld
看到Active: inactive (dead),说明防火墙已关闭
Active: active (live)说明防火墙还没有关闭,返回以上 *** 作
切换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
如图所示
作用是让所有的虚拟机可以互相连接
打开ssh,新建会话
点击确定
点击接受并保存
结果如下图所示
配置好会话后,开始ssh传输文件
yum install lrzsz -y
-y的作用是,默认全部回答为yes
rz传输本地文件到linus虚拟机系统
master可以远程连接s1、s2
ssh s1 ssh s2
结果如图所示
cd ~
在各个机器下输入命令
ssh-keygen -b 1024 -t rsa
然后一直回车,结果如图所示
在~/.ssh/目录下生成文件id_rsa、id_rsa.pub
(ls是不会显示隐藏文件的,/.ssh中的“.”就是隐藏文件
输入命令ls –all显示全部文件)
结果如图所示
免密码登录
需要把master的id_rsa.pub公钥发送到s1、s2中
s1、s2接收了master的id_rsa.pub公钥,master就可以免密码登录
把master的公钥放到s1、s2的authorized_keys文件里
输入命令ssh-copy-id s1(s2同上)
结果如图所示
s1、s2配置免密码登录
s1的公钥发给s2
结果如图所示
s2的公钥发给s1
结果如图所示
完成以上 *** 作后,结果如图所示
master给master配置免密码登录
切换到ssh目录下 cd .ssh
输入命令 ssh-copy-id master
结果如图所示
配置权限
chmod 600 authorized_keys
chmod 修改权限的命令
600 参数含义请参考菜鸟教程
具体查看chmod命令
s1、s2同样的 *** 作
(注:xshell中的粘贴不是ctrl+v,而是shift+insert)
cd ~
tar –xvzf 待解压压缩包名字–C 目标存放路径
tar –czvf 目标压缩文件名 文件或目录
结果如图所示
下载vim
yum install vim –y
vi 编辑文件内容,没有该文件时会新建文件
vim 编辑文件时会有高亮显示
结果如图所示
输入命令 vim .bash_profile
进入 .bash_profile文件进行添加JAVA_HOME
export JAVA_HOME=/root/jdk1.8.0_171
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
结果如图所示
配置完成后,执行命令 source .bash_profile应用配置
结果如图所示
然后将master配置好的java文件发送到s1、s2
输入命令 scp -r jdk1.8.0_171 root@s1:~/
结果如图所示
(hadoop配置文件只需先在master主机上配置,后面直接scp复制到从机即可)
进入hadoop配置文件目录下cd /hadoop/etc/hadoop
输入命令vim hadoop-env.sh
修改如下:
export JAVA_HOME=/root/jdk1.8.0_171
截图如下:
输入命令vim yarn-env.sh
修改如下:
JAVA_HOME=/root/jdk1.8.0_171
截图如下:
输入命令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>
截图如下:
输入命令vim hdfs-site.xml
修改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
截图如下:
输入命令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>
截图如下:
输入命令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
截图如下:
输入命令vim slaves
修改如下:
s1
s2
截图如下:
完成以上 *** 作后切换到root目录下
输入命令scp -r hadoop s1:~/
将配置好的hadoop配置文件,直接将hadoop文件夹发送到s1、s2
截图如下:
各个机器都需要在文件尾配置追加
切换到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
截图如下:
完成后需要输入命令source .bash_profile应用配置
截图如下:
各个机器创建都是一样的数据目录
切换到root目录下
输入命令:
mkdir /root/hadoopdata
截图如下:
格式化文件系统,只能格式化一次
如果多次格式化文件系统,DataNode或NameNode或两个都启动不了
在master主机上的root目录下
输入命令:
hdfs namenode –format
截图如下:
一步启动hadoop集群服务
切换到hadoop的安装目录中的sbin文件夹中
cd $HADOOP_HOME/sbin
命令./start-all.sh
或
分步启动hadoop集群服务
切换到hadoop的安装目录中的bin文件夹下
cd $HADOOP_HOME/bin
命令start-dfs.sh start-yarn.sh
一步关闭hadoop集群服务
~/hadoop/sbin/stop-all.sh
或
分步关闭hadoop集群服务
stop-yarn.sh stop-dfs.sh
记录:使用一次启动所有hadoop集群服务命令start-all.sh
jps查看时少了DataNode
解决:
关闭集群服务
分步启动hadoop集群服务
切换的/opt目录下,创建data文件夹(存放ZooKeeper、hbase的数据文件夹)、server文件夹(ZooKeeper、hbase的安装文件夹)、soft文件夹 (ZooKeeper、hbase的压缩包文件夹)
1、上传并解压ZooKeeper压缩包cd /opt/soft -> rz上传压缩包
cd /opt/server -> tar –xvzf * -C *解压压缩包到指定文件夹路径下
切换路径cd /opt/server/zookeeper/conf
输入命令cp zoo_sample.cfg zoo.cfg copy一份到当前目录下,并命名为zoo.cfg
输入命令vim zoo.cfg修改zoo.cfg文件
配置如图所示
需要在文件尾部追加以下文件
server.1=master:2888:3888
server.2=s1:2888:3888
server.3=s2:2888:3888
结果如图所示
配置ZooKeeper的环境变量
vim /etc/profile
添加以下信息
export ZOOKEEPER =/opt/server/zookeeper
后面需要改成以下内容,方便切换ZooKeeper安装目录
export ZOOKEEPER_HOME =/opt/server/zookeeper
export PATH=$PATH:$ZOOKEEPER/bin
结果如图所示
完成以上 *** 作后输入命令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查看是否启动成功
启动成功的截图如图所示
我的截图如图所示
配置ZooKeeper环境变量时
vim /etc/profile上添加环境变量信息
/etc/profile文件是配置ZOOKEEPER_HOME、HBASE_HOME
可以方便切换ZooKeeper、hbase的安装目录
方便启动集群服务
export ZOOKEEPER=/opt/server/zookeeper
export PATH=
P
A
T
H
:
PATH:
PATH:ZOOKEEPER/bin
出现报错,截图如下
原因:在/etc/profile文件中某处多了个p(我也不道啊。。我就是歌姬吧QAQ)
三、hbase安装 (1)上传下载好的压缩包hbase-1.2.1-bin.tar.gz到/opt/soft/,解压到 /opt/servercd /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的conf目录下进行
cd /opt/server/hbase/conf
配置信息如下
<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>
2、vim hbase-env.sh
(1)注释掉export JAVA_HOME=/root/jdk1.8.0_171并修改成JAVA_HOME的路径
(2)去掉注释,将true改为false
export HBASE_MANAGES_ZK=false
注册需要启动hbase的主机名
cat regionservers运行一下
报错三[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
修改为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.ClientCnxn
S
e
n
d
T
h
r
e
a
d
.
r
u
n
(
C
l
i
e
n
t
C
n
x
n
.
j
a
v
a
:
1081
)
2020
−
06
−
2011
:
31
:
30
,
652
I
N
F
O
[
m
a
i
n
−
S
e
n
d
T
h
r
e
a
d
(
n
o
d
e
2
:
2181
)
]
z
o
o
k
e
e
p
e
r
.
C
l
i
e
n
t
C
n
x
n
:
O
p
e
n
i
n
g
s
o
c
k
e
t
c
o
n
n
e
c
t
i
o
n
t
o
s
e
r
v
e
r
n
o
d
e
2
/
10.211.55.60
:
2181.
W
i
l
l
n
o
t
a
t
t
e
m
p
t
t
o
a
u
t
h
e
n
t
i
c
a
t
e
u
s
i
n
g
S
A
S
L
(
u
n
k
n
o
w
n
e
r
r
o
r
)
2020
−
06
−
2011
:
31
:
30
,
652
E
R
R
O
R
[
m
a
i
n
]
z
o
o
k
e
e
p
e
r
.
R
e
c
o
v
e
r
a
b
l
e
Z
o
o
K
e
e
p
e
r
:
Z
o
o
K
e
e
p
e
r
c
r
e
a
t
e
f
a
i
l
e
d
a
f
t
e
r
4
a
t
t
e
m
p
t
s
2020
−
06
−
2011
:
31
:
30
,
652
E
R
R
O
R
[
m
a
i
n
]
m
a
s
t
e
r
.
H
M
a
s
t
e
r
C
o
m
m
a
n
d
L
i
n
e
:
M
a
s
t
e
r
e
x
i
t
i
n
g
j
a
v
a
.
l
a
n
g
.
R
u
n
t
i
m
e
E
x
c
e
p
t
i
o
n
:
F
a
i
l
e
d
c
o
n
s
t
r
u
c
t
i
o
n
o
f
M
a
s
t
e
r
:
c
l
a
s
s
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
.
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
.
c
o
n
s
t
r
u
c
t
M
a
s
t
e
r
(
H
M
a
s
t
e
r
.
j
a
v
a
:
2486
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
C
o
m
m
a
n
d
L
i
n
e
.
s
t
a
r
t
M
a
s
t
e
r
(
H
M
a
s
t
e
r
C
o
m
m
a
n
d
L
i
n
e
.
j
a
v
a
:
231
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
C
o
m
m
a
n
d
L
i
n
e
.
r
u
n
(
H
M
a
s
t
e
r
C
o
m
m
a
n
d
L
i
n
e
.
j
a
v
a
:
137
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
u
t
i
l
.
T
o
o
l
R
u
n
n
e
r
.
r
u
n
(
T
o
o
l
R
u
n
n
e
r
.
j
a
v
a
:
70
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
u
t
i
l
.
S
e
r
v
e
r
C
o
m
m
a
n
d
L
i
n
e
.
d
o
M
a
i
n
(
S
e
r
v
e
r
C
o
m
m
a
n
d
L
i
n
e
.
j
a
v
a
:
127
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
.
m
a
i
n
(
H
M
a
s
t
e
r
.
j
a
v
a
:
2496
)
C
a
u
s
e
d
b
y
:
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
Z
o
o
K
e
e
p
e
r
C
o
n
n
e
c
t
i
o
n
E
x
c
e
p
t
i
o
n
:
m
a
s
t
e
r
:
600000
x
0
,
q
u
o
r
u
m
=
n
o
d
e
1
:
2181
,
n
o
d
e
2
:
2181
,
n
o
d
e
3
:
2181
,
b
a
s
e
Z
N
o
d
e
=
/
h
b
a
s
e
U
n
e
x
p
e
c
t
e
d
K
e
e
p
e
r
E
x
c
e
p
t
i
o
n
c
r
e
a
t
i
n
g
b
a
s
e
n
o
d
e
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
z
o
o
k
e
e
p
e
r
.
Z
o
o
K
e
e
p
e
r
W
a
t
c
h
e
r
.
c
r
e
a
t
e
B
a
s
e
Z
N
o
d
e
s
(
Z
o
o
K
e
e
p
e
r
W
a
t
c
h
e
r
.
j
a
v
a
:
206
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
z
o
o
k
e
e
p
e
r
.
Z
o
o
K
e
e
p
e
r
W
a
t
c
h
e
r
.
<
i
n
i
t
>
(
Z
o
o
K
e
e
p
e
r
W
a
t
c
h
e
r
.
j
a
v
a
:
187
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
r
e
g
i
o
n
s
e
r
v
e
r
.
H
R
e
g
i
o
n
S
e
r
v
e
r
.
<
i
n
i
t
>
(
H
R
e
g
i
o
n
S
e
r
v
e
r
.
j
a
v
a
:
594
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
.
<
i
n
i
t
>
(
H
M
a
s
t
e
r
.
j
a
v
a
:
420
)
a
t
s
u
n
.
r
e
f
l
e
c
t
.
N
a
t
i
v
e
C
o
n
s
t
r
u
c
t
o
r
A
c
c
e
s
s
o
r
I
m
p
l
.
n
e
w
I
n
s
t
a
n
c
e
0
(
N
a
t
i
v
e
M
e
t
h
o
d
)
a
t
s
u
n
.
r
e
f
l
e
c
t
.
N
a
t
i
v
e
C
o
n
s
t
r
u
c
t
o
r
A
c
c
e
s
s
o
r
I
m
p
l
.
n
e
w
I
n
s
t
a
n
c
e
(
N
a
t
i
v
e
C
o
n
s
t
r
u
c
t
o
r
A
c
c
e
s
s
o
r
I
m
p
l
.
j
a
v
a
:
62
)
a
t
s
u
n
.
r
e
f
l
e
c
t
.
D
e
l
e
g
a
t
i
n
g
C
o
n
s
t
r
u
c
t
o
r
A
c
c
e
s
s
o
r
I
m
p
l
.
n
e
w
I
n
s
t
a
n
c
e
(
D
e
l
e
g
a
t
i
n
g
C
o
n
s
t
r
u
c
t
o
r
A
c
c
e
s
s
o
r
I
m
p
l
.
j
a
v
a
:
45
)
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
C
o
n
s
t
r
u
c
t
o
r
.
n
e
w
I
n
s
t
a
n
c
e
(
C
o
n
s
t
r
u
c
t
o
r
.
j
a
v
a
:
423
)
a
t
o
r
g
.
a
p
a
c
h
e
.
h
a
d
o
o
p
.
h
b
a
s
e
.
m
a
s
t
e
r
.
H
M
a
s
t
e
r
.
c
o
n
s
t
r
u
c
t
M
a
s
t
e
r
(
H
M
a
s
t
e
r
.
j
a
v
a
:
2479
)
.
.
.
5
m
o
r
e
C
a
u
s
e
d
b
y
:
o
r
g
.
a
p
a
c
h
e
.
z
o
o
k
e
e
p
e
r
.
K
e
e
p
e
r
E
x
c
e
p
t
i
o
n
SendThread.run(ClientCnxn.java:1081) 2020-06-20 11:31:30,652 INFO [main-SendThread(node2:2181)] zookeeper.ClientCnxn: Opening socket connection to server node2/10.211.55.60:2181. Will not attempt to authenticate using SASL (unknown error) 2020-06-20 11:31:30,652 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts 2020-06-20 11:31:30,652 ERROR [main] master.HMasterCommandLine: Master exiting java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster. at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2486) at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:231) at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:137) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:127) at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2496) Caused by: org.apache.hadoop.hbase.ZooKeeperConnectionException: master:600000x0, quorum=node1:2181,node2:2181,node3:2181, baseZNode=/hbase Unexpected KeeperException creating base node at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.createBaseZNodes(ZooKeeperWatcher.java:206) at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.
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
结果如图所示
查看jps截图如图所示
访问master:50070,结果如图所示
进入hadoop端口界面
发现都没有问题
报错五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.
截图如图所示:
原因:
没有配置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
结果截图如图所示:
在给从机s1、s2追加内容后,出现新报错
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
截图如图所示:
重启服务重启虚拟机后,出现新的报错信息
2022-05-06 08:54:02,490 ERROR [main] client.ConnectionManager$HConnectionImplementation: Can’t get connection to ZooKeeper: KeeperErrorCode = ConnectionLoss for /hbase
截图如图所示:
去搜索了不同的解决办法
方法不适用,问题没有解决
原因:
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的节点状态
结果首次运行报错,原因是主节点master正在初始化
一会再重新输入命令就可以成功运行了
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
从字面可以知道,主节点正在初始化
解决方案
https://blog.csdn.net/a_drjiaoda/article/details/88697894
如图所示
192.168.137.140:16010
查看hbase web网页界面
问题解决
有不同意见的大佬可在评论区相互交流哦!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)