hadoop 高可用集群搭建(HA)学期总结(如有错误请给予纠正)

hadoop 高可用集群搭建(HA)学期总结(如有错误请给予纠正),第1张

hadoop 高可用集群搭建(HA)学期总结(如有错误请给予纠正) (一)准备工作:

Linux使用的是CentOS-7-x86

官网下载地址:https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/

虚拟机VMware  Workstation 16 Pro

这个网站上去搞懂得都懂

Hadoop安装包版本:hadoop-2.7.6

官网下载地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.6/

jdk安装版本:jdk-8u211-linux-x64

官网下载地址:Java Archive | Oracle

ZooKeeper安装版本:ZooKeeper 3.4.12

官网下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/

Xshell 安装版本:Xshell 7

官网下载地址:https://www.netsarang.com/zh/free-for-home-school/

(1)家庭和学校用户的免费许可证,免费授权页面:

    https://www.netsarang.com/zh/free-for-home-school/

(2)在上述页面填写姓名和邮件地址,然后单击“下载”按钮。

(3)进入邮箱,单击收到邮件中的超链接,即可免费下载和使用。
 

(二)网络配置:

1,打开VMware 编辑-虚拟网络编辑器-选择NAT模式,查看子网IP我这里是192.168.20.0,各个设备都不相同依照自己的,再打开NAT设置查看网关,下面网络设置需要用到

2,虚拟机打开网卡配置选项

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

3,更改网络配置(ip和网关一定要根据上面的自己设置)

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_onLY="no"
BOOTPROTO="static"  #static为静态IP dhcp为动态IP
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="ea26c532-6b6f-4450-bb36-27e516bf031b"
DEVICE="ens33"
onBOOT="yes"            #开机自动启用以下配置
IPADDR=192.168.20.201    #ip根据上面的子网自行设置
PREFIX=24        #子网掩码,与NETMASK=255.255.255.0等价
GATEWAY=192.168.20.2        #网关,根据上面的填写

设置完毕使用刷新网络(可以多刷新几遍)

service network restart 

设置完毕ping一下外部网络(这里是ping的百度服务器的ip)

ping 180.76.76.76 

完成后可以尝试重启虚拟机查看IP是否是你设置的(以下为查看IP的命令)

ifconfig

3,关闭防火墙

查看防火墙状态(not running为关闭,running为开启)

firewall-cmd --state

关闭防火墙

 systemctl stop firewalld.service

禁止防火墙开机自启(一定要关闭防火墙!!!,可以重启确认一下)

systemctl disable firewalld.service 

4,使用Xshell连接虚拟机(主机是你的IP地址,连接后会提醒你连接使用的用户和密码)

连接成功(后续的 *** 着都可以在Xshell上进行)

(三)JDK安装 1,打开opt文件
cd /opt/

2,将文件拖入Xshell(会d出个对话框完成后使用ls查看是否上传到该文件夹下)

 3,解压文件

tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/

4,设置Java环境

vi /etc/profile

在文件最后添加(根据需要自行修改

export JAVA_HOME=/opt/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 刷新配置文件

source /etc/profile

查看JDK(如图所示就成功了)

java -version

 (四)克隆虚拟机与配置

1,关闭虚拟机   虚拟机-管理-克隆(最后一项选择完整克隆并命名为hadoop-02)

 2,同理克隆出hadoop-03

3,依次开启三个虚拟机

4,修改hadoop-02和hadoop-03的主机名(三个的主机名依次是hadoop-01,hadoop-02,hadoop-03)

vi /etc/hostname 

 5,修改hadoop-02和hadoop-03的IP地址(三个虚拟机的IP地址必须修改为连续的我这里的三个分别是192.168.20.201,192.168.20.202,192.168.20.203)

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

6,重启使主机名生效

reboot

7,添加主机映射(三台虚拟机都要添加)

vi /etc/hosts

 添加内容如下

192.168.20.201  hadoop-01
192.168.20.202  hadoop-02
192.168.20.203  hadoop-03

 检验在各个结点ping一下检验是否添加映射成功

(五)集群各节点SSH免密码登录

1,分别在各个节点中执行以下命令声测生成密钥文件(要按三个回车)

ssh-keygen 

 2,在各个节点中使用(将自身公钥复制到各个节点中,三条命令都要在各个节点中执行一遍)

 ssh-copy-id hadoop-01
 ssh-copy-id hadoop-02
 ssh-copy-id hadoop-03

 完成后可实现各节点无密码切换(ssh 主机名)

(六)ZooKeeper安装配置

1,在hadoop-01进入opt文件夹下,使用Xshell传入安装包

2,解压ZooKeeper

 tar -zxvf zookeeper-3.4.12.tar.gz -C /opt/

3,进入ZooKeeper文件夹

cd /opt/zookeeper-3.4.12/

4,创建data和logs两个文件夹

mkdir data
mkdir logs

5,进入data文件

cd data

6,新建名叫myid文件并写入id为1

echo '1'>myid

7,进入ZooKeeper安装目录下的conf文件将zoo_sample.cfg复制重命名为zoo.cfg 

cd /opt/zookeeper-3.4.12/conf/
cp zoo_sample.cfg zoo.cfg 

8,修改zoo.cfg在原本的代码中寻找“dataDir=”修改为

dataDir=/opt/zookeeper-3.4.12/data

 在代码最后添加以下代码

dataLogDir=/opt/zookeeper-3.4.12/logs
server.1=hadoop-01:2888:3888
server.2=hadoop-02:2888:3888
server.3=hadoop-03:2888:3888

 9,将hadoop-01的ZooKeeper分发给其余两个节点

scp -r /opt/zookeeper-3.4.12 root@hadoop-02:/opt/
scp -r /opt/zookeeper-3.4.12 root@hadoop-03:/opt/

10,设置环境变量

vi /etc/profile

在最后添加

export ZOOKEEPER_HOME=/opt/zookeeper-3.4.12
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

 刷新文件

source /etc/profile

11,修改hadoop-02和hadoop-03的myid分别为2和3

vi /opt/zookeeper-3.4.12/data/myid

12,在三个节点依次执行命令启动ZooKeeper

 zkServer.sh start

13,检验 ZooKeeper安装是否成功

三个节点分别输入以下代码 

zkServer.sh status

 效果图

 

 

 (七)Hadoop安装配置

1,用Xshell将Hadoop安装包传入hadoop-01进去

2,解压Hadoop

tar -zxvf hadoop-2.7.6.tar.gz -C /opt/

 3,修改core-site.xml

进入core-site.xml所在文件夹·

cd /opt/hadoop-2.7.6/etc/hadoop/

进入core-site.xml

vi core-site.xml 

将原有的删除插入以下


        
        
                fs.defaultFS
                hdfs://cluster
        

        
        
                ha.zookeeper.quorum
                hadoop-01:2181,hadoop-02:2181,hadoop-03:2181
        

4,进入hdfs-site.xml修改配置(以下几个都要把标签删除再插入)

vi hdfs-site.xml

        
        
                dfs.replication
                3
        
        
        
                dfs.nameservices
                cluster
        
        
        
                dfs.ha.namenodes.cluster
                nn01,nn02
        
        
        
                dfs.namenode.rpc-address.cluster.nn01
                hadoop-01:9000
        
        
        
                dfs.namenode.http-address.cluster.nn01
                hadoop-01:50070
        
        
        
                dfs.namenode.rpc-address.cluster.nn02
                hadoop-02:9000
        
        
        
                dfs.namenode.http-address.cluster.nn02
                hadoop-02:50070
        
        
        
                dfs.namenode.shared.edits.dir
                qjournal://hadoop-01:8485;hadoop-02:8485;hadoop-03:8485/cluster
        
    
        
                dfs.journalnode.edits.dir
                /opt/hadoop-2.7.6/journaldata
        
        
        
                dfs.ha.automatic-failover.enabled.cluster
                true
        
        
        
        dfs.client.failover.proxy.provider.cluster
                org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
        
        
        
                dfs.ha.fencing.methods
                
                        sshfence
                        shell(/bin/true)
                
        
        
        
                dfs.ha.fencing.ssh.private-key-files
                /root/.ssh/id_rsa
        
        
        
                dfs.ha.fencing.ssh.connect-timeout
                30000
        
        
                dfs.name.dir
                /opt/hadoop-2.7.6/tmp/dfs/name
                 
        
        
                dfs.data.dir
                /opt/hadoop-2.7.6/tmp/dfs/data
                 
        

5,修改mapred-site.xml,最开始是没有这个文件的需要将mapred-site.xml.template复制重命名为mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

        
        
                mapreduce.framework.name
                yarn
        

6,修改yarn-site.xml

vi yarn-site.xml

        
        
                yarn.resourcemanager.ha.enabled
                true
        
        
        
                yarn.resourcemanager.cluster-id
                yrc
        
        
        
                yarn.resourcemanager.ha.rm-ids
                rm1,rm2
        
        
        
                yarn.resourcemanager.hostname.rm1
                hadoop-01
        
        
        
                yarn.resourcemanager.hostname.rm2
                hadoop-02
        
        
        
                yarn.resourcemanager.zk-address
                hadoop-01:2181,hadoop-02:2181,hadoop-03:2181
        
        
        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        

7,修改slaves(hadoop3.0以后slaves更名为workers)

vi slaves

将原有内容删除插入以下内容

hadoop-01
hadoop-02
hadoop-03

8,分别在hadoop-env.sh 、 mapred-env.sh 、 yarn-env.sh 中加入JAVA_HOME环境变量(最好添加到最后):

export JAVA_HOME=/opt/jdk1.8.0_221

9,将文件复制到其余两个节点上

 scp -r /opt/hadoop-2.7.6 root@hadoop-02:/opt/
 scp -r /opt/hadoop-2.7.6 root@hadoop-03:/opt/

10,配置Hadoop环境变量,在三个节点个分别执行以下 *** 作

vi /etc/profile
export HADOOP_HOME=/opt/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib

让环境变量立即生效

source /etc/profile
 (八)启动Hadoop

1,在三个节点分别启动journalnode(第一次需要手动启动,后面就不需要了)

hadoop-daemon.sh start journalnode

 也可以使用jps查看进程是否存在(如果之前没有启动ZooKeeper也需要启动ZooKeeper)

 2,在hadoop-01格式namenode

hdfs namenode -format

看到INFO common.Storage: Storage directory /opt/hadoop-2.7.6/tmp/dfs/name has been successfully formatted.说明格式化成功

 3,将hadoop-01的namenode格式化生成的文件发送到hadoop-02

scp -r /opt/hadoop-2.7.6/tmp/ root@hadoop-02:/opt/hadoop-2.7.6

4,格式化ZKFC(只需要要hadoop-01上执行)

 hdfs zkfc -formatZK

 看到出现以下内容说明成功了

INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/cluster in ZK.

INFO zookeeper.ZooKeeper: Session: 0x30000082aa70000 closed

 INFO zookeeper.ClientCnxn: EventThread shut down

 5,启动hdfs(只需要要hadoop-01上执行)

 start-dfs.sh

 

6,启动DFSZKFailoverController(hadoop-01和hadoop-02上执行)

 hadoop-daemon.sh  start zkfc

 

7,启动yarn(只需要要hadoop-01上执行)

start-yarn.sh

 (九)检验Hadoop是否配置完成

1, 检查使用jps查看进程

 

 

 2,电脑浏览器输入hadoop-01的IP地址加上:8088查看

 3,查看两个namenode状态分别使用hadoop-01和hadoop-02的IP加上50070(状态必须是有一个为active(存活)另一个为standby(备用))

 

 4,检验高可用是否成功(这里才是正真检验高可用是否成功的关键,能否实现故障转移)

使用jps查看namenode进程并杀死hadoop-01的namenode

 停止进程(命令是kill -9  后面数字是进程号我这里是3429,每个设备不一样哦)

kill -9 3429

停止后jps就看不到这个进程了

 同时hadoop-01的web端也会变成这样

 如果hadoop-02的web端变成了这样就表示成功了

 再启动hadoop-01就变为备用节点(如果感兴趣可以互相杀杀,邪笑嘿嘿)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存