hadoop高可用搭建(需要安装zookeeper)

目录

一.创建多台虚拟机

1.1查看虚拟机名称

1.2修改计算机名称

二.开始配置

2.1修改网络信息

vim /etc/sysconfig/network-scripts/ifcfg-ens33

2.2重启网络服务

2.3同步时间

2.4设置集群中每台机器的/etc/hosts

2.5配置免密登陆

2.6将本机的公钥拷贝到要免密登陆的目标机器

2.7 测试免密登陆是否成功

三.在ant151机器运行自动安装jdk脚本autoinstall.sh

教程

刷新资源

把JDK180发送到每一台虚拟机上面

 把JDK环境变量拷贝到每一台虚拟机

解压zookeeper

改名zookeeper

进入conf

修改zoo_cfg

创建目录

设置标识在datas里面创建myid用于标识便于找到ant151这台机器

删除datas里面的所有数据

把zk345拷贝到其余机器上面


一.创建多台虚拟机

这里以四台虚拟机为例  ant151  /  ant152   /  ant153 / ant154

1.1查看虚拟机名称

[root@localhost ~]# hostname


1.2修改计算机名称


三台虚拟机修改名称

[root@localhost ~]# hostnamectl set-hostname ant151

[root@localhost ~]# hostnamectl set-hostname ant152

[root@localhost ~]# hostnamectl set-hostname ant153

[root@localhost ~]# hostnamectl set-hostname ant154

快速生效
[root@localhost ~]# bash

二.开始配置

2.1修改网络信息


vim /etc/sysconfig/network-scripts/ifcfg-ens33

 按前面编号写入以下代码

 4  BOOTPROTO=static
15 ONBOOT=yes
16 IPADDR=192.168.78.*
17 GATEWAY=192.168.78.2
18 NETMASK=255.255.255.0
19 DNS1=8.8.8.8

2.2重启网络服务

两种方法:

systemctl restart network.service
service network restart

关闭和禁用每台机的防火墙


[root@ant151 ~]# systemctl stop firewalld
[root@ant151 ~]# systemctl disable firewalld

2.3同步时间


同步时间的下面操作三台机都需要

安装ntpdate
[root@ant151 soft]# yum install -y ntpdate

定时更新时间
[root@ant151 soft]# crontab -e

每五分钟更新一次时间

*/5 * * * * /usr/sbin/ntpdate -u time.windows.com
启动定时任务
[root@ant151 soft]# service crond start

2.4设置集群中每台机器的/etc/hosts


[root@ant151 opt]# vim /etc/hosts

下面加入

IP地址 计算机名称

例如:

192.168.111.111    ant151
192.168.111.111    ant152
192.168.111.111    ant153

把hosts拷贝发送到每一台虚拟机
[root@ant151 opt]# scp /etc/hosts root@ant152:/etc/
[root@ant151 opt]# scp /etc/hosts root@ant153:/etc/

并且在windows界面c盘的system32目录下配置hosts文件

再次加入以下代码

192.168.111.111    ant151
192.168.111.111    ant152
192.168.111.111    ant153

2.5配置免密登陆


[root@ant151 ~]# ssh-keygen -t rsa -P ''
[root@ant151 ~]# cd .ssh/

把id_rsa.pub追加到au...下面


[root@ant151 .ssh]# cat id_rsa.pub >> ./authorized_keys

2.6将本机的公钥拷贝到要免密登陆的目标机器

[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant151
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant152
[root@ant151 .ssh]# ssh-copy-id -i ./id_rsa.pub -p22 root@ant153

每一台机器都要执行

2.7 测试免密登陆是否成功

[root@ant151 .ssh]# ssh -p22 root@ant151
[root@ant151 .ssh]# ssh -p22 root@ant152
[root@ant151 .ssh]# ssh -p22 root@ant153

三.在ant151机器运行自动安装jdk脚本autoinstall.sh

教程

[root@ant153 shellfile]# ./autoinstall.sh 

刷新资源

[root@ant153 shellfile]# source /etc/profile

[root@ant153 shellfile]# javac

把JDK180发送到每一台虚拟机上面

[root@ant151 opt]# scp -r ./soft/jdk180/ root@ant152:/opt/soft/
[root@ant151 opt]# scp -r ./soft/jdk180/ root@ant153:/opt/soft/

 把JDK环境变量拷贝到每一台虚拟机

[root@ant151 zk345]# scp /etc/profile root@ant152:/etc/

[root@ant151 zk345]# scp /etc/profile root@ant153:/etc/

把zookeeper拷贝到虚拟机里面
可用xftp直接拉进去


解压zookeeper


[root@ant151 install]# tar -zxf zookeeper-3.4.5-cdh5.14.2.tar.gz  -C ../soft

改名zookeeper


[root@ant151 install]# mv /opt/soft/zookeeper-3.4.5-cdh5.14.2/ /opt/soft/zk345
可以不改,改名便于操作

进入conf


[root@ant151 soft]# cd /opt/soft/zk345/conf

把zoo_sample.cfg,copy一份改名为zoo.cfg

修改zoo_cfg


[root@ant151 conf]# vim ./zoo.cfg 

:set nu查看行号

修改12行用于存放数据

在最后加上server.0=ant151:22887:3387

创建目录


[root@ant151 conf]# mkdir /opt/soft/zk345/datas

设置标识
在datas里面创建myid用于标识便于找到ant151这台机器

[root@ant151 conf]# cd /opt/soft/zk345/datas/

[root@ant151 datas]# echo "0" > myid

配置环境变量
[root@ant151 zk345]# vim /etc/profile

把环境变量拷贝到其余机器

[root@ant151 zk345]# scp /etc/profile root@ant152:/etc/

[root@ant151 zk345]# scp /etc/profile root@ant153:/etc/

#ZK
export ZOOKEEPER_HOME=/opt/soft/zk345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
从 解压 开始到 配置环境变量 的操可提取到一个脚本里面直接操作

操作方法类似JDK   教程

 
#! /bin/bash
echo 'auto install begining....'
 
#global var
zk=true
 
hostname=`hostname`
 
if  [ "$zk" = true ];then
    echo 'zookeeper install  set true'
    echo 'setup zookeeper-3.4.5-cdh5.14.2.tar.gz'
    tar -zxf /opt/install/zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft/
    mv /opt/soft/zookeeper-3.4.5-cdh5.14.2 /opt/soft/zk345
    cp /opt/soft/zk345/conf/zoo_sample.cfg  /opt/soft/zk345/conf/zoo.cfg
    mkdir -p  /opt/soft/zk345/datas
    sed -i '12c dataDir=/tmp/zookeeper/datas'   /opt/soft/zk345/conf/zoo.cfg
    echo "server.0='$hostname':2287:3387" >> /opt/soft/zk345/conf/zoo.cfg
    echo "0" > /opt/soft/zk345/datas/myid
    sed -i '73a\export PATH=$PATH:$ZOOKEEPER_HOME/bin' /etc/profile
    sed -i '73a\export ZOOKEEPER_HOME=/opt/soft/zk345' /etc/profile
    sed -i '73a\#ZK' /etc/profile
    echo 'setup zookeeper success!!!'
fi

TIP:

如果start出现下面问题

 只需 kill 掉这个process即可

[root@ant151 soft]# kill -9 92810

再次启动则会正常 

启动zookeeper
[root@ant151 zk345]# ./bin/zkServer.sh start

查看zookeeper状态
[root@ant151 zk345]# ./bin/zkServer.sh status

停止zookeeper
[root@ant151 soft]# zkServer.sh stop

 搭建zookeeper集群
[root@ant151 zk345]# vim ./conf/zoo.cfg 

在最下面加上

server.0=ant151:2287:3387
server.1=ant152:2287:3387
server.2=ant153:2287:3387

这里只能是奇数,不能是偶数,因为要投票选举,如果是偶数则会出现平票的情况,所有只能是偶数

删除datas里面的所有数据


[root@ant151 zk345]# rm -rf /opt/soft/zk345/datas/*

把zk345拷贝到其余机器上面


[root@ant151 zk345]# scp -r ../zk345/ root@ant152:/opt/soft
[root@ant151 zk345]# scp -r ../zk345/ root@ant153:/opt/soft

设置标识
注意:目录要在datas下面,上面有一步把ant151里面的datas删除了,所有这里还要设置

ant151  [root@ant151 datas]#  echo "0" > myid

ant152  [root@ant152 datas]#  echo "1" > myid

ant153  [root@ant153 datas]#  echo "2" > myid

这里设置的标识要与上面的zoo.cfg下面设置的对应

刷新资源 



再次启动zookeeper
[root@ant151 datas]# zkServer.sh start

[root@ant152 datas]# zkServer.sh start

[root@ant153 datas]# zkServer.sh start

三台机器都要启动

查看zookeeper状态


[root@ant153 datas]# zkServer.sh status

ant151:follower

ant152:leader

 ant153:follower

启动/关闭所有zookeeper/查看所有zookeeper状态
在opt下面创建一个shell目录,在创建一个zkop.sh文件用于存放脚本

创建目录

[root@ant151 opt]# mkdir shell

进入shell

[root@ant151 opt]# cd ./shell

创建zkop.sh并编辑


[root@ant151 shell]# vim zkop.sh

修改权限
[root@ant151 shell]# chmod 733 zkop.sh 

zkop.sh脚本
#! /bin/bash
case $1 in
"start"){
        for i in ant151 ant152 ant153
          do
            ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh start "
          done
};;
"stop"){
    for i in ant151 ant152 ant153
          do
            ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh stop "
          done
};;
"status"){
        for i in ant151 ant152 ant153
          do
            ssh $i "source /etc/profile; /opt/soft/zk345/bin/zkServer.sh status "
          done
};;
esac

关闭所有 zookeeper

 开启所有zookeeper

 查看所有zookeeper状态

查看所有zookeeper服务启动情况
在opt下面创建一个shell目录,在创建一个showjps.sh文件用于存放脚本

创建showjps.sh并编辑


[root@ant151 shell]# vim showjps.sh

修改权限
[root@ant151 shell]# chmod 733 showjps.sh 

showjps.sh脚本
# showalljps.sh
#! /bin/bash
for i in ant151 ant152 ant153
do
    echo ---------- $i 服务启动状态 -------------
        ssh $i  "source /etc/profile; /opt/soft/jdk180/bin/jps "
done
[root@ant151 shell]# ./showjps.sh  

集群配置图
ant151         ant152         ant153          ant154
NameNode       NameNode
DataNode       DataNode       DataNode        DataNode
NodeManager    NodeManager    NodeManager     NodeManager
                              ResourceManager ResourceManager
JournalNode    JournalNode    JournalNode
DFSZKFConler   DFSZKFConler
zk0                zk1             zk2
JobHistory





集群首次启动
1.启动zk集群
2.启动ant151,ant152,ant153的journalnode服务:hdfs --daemon start journalnode
3.在ant151格式化hdfs namenode: hdfs namenode -format
4.在ant151启动namenode服务:hdfs --daemon start namenode
5.在ant152机器上同步namenode信息 [root@ant152 soft]# hdfs namenode -bootstrapStandby
6.在ant152启动namenode服务:hdfs --daemon start namenode
   查看namenode节点状态:hdfs haadmin -getServiceState nn1|nn2
7.关闭所有dfs有关的服务[root@ant151 soft]# stop-dfs.sh
8.格式化zk:[root@ant151 soft]# hdfs zkfc -formatZK
9.启动dfs: [root@ant151 soft]# start-dfs.sh 
10.启动yarn: [root@ant151 soft]# start-yarn.sh 
   查看resourcemanager节点状态:yarn rmadmin -getServiceState rm1|rm2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值