一、HA介绍
HA是为解决HDFS中单点故障。
高可用通过主备NameNode来解决问题,如果当NameNode(active)发生故障,则切换到备用NameNode(standby)上。

DateNode中数据时间等发生变化(不断)都要跟NameNode汇报,为了防止单点故障,所以我们用HA高可用方式。
我们准备两台NameNode,一台正在工作(active)的NameNode,一台备用(standby)的NameNode。如果NameNode(active)故障了,standby状态的NameNode变为active状态的NameNode,active状态的NameNode变为standby状态的NameNode。这一种转换是由JournalNode管理。
JournalNode是用来管理NameNode资源共享。当JournalNode发现NameNode有问题,就切换NameNode的当前状态。
JournalNode不放一台:JournalNode如果一台出故障了,跟只有一台NameNode一样,数据都没有了,也不安全。
JournalNode放三台:过半原则。
ZooKeeper管理JournalNode,NameNode。不用手动改变它们standy和active状态。并且它有两个进程:Failover Controller Active和Failover Controller Standby监视NameNode。
如果NameNode(active )挂了,Failover Controller Active就汇报给ZooKeeper,ZooKeeper发现NameNode(active )挂了,就检查Failover Controller是不是standby准备好了,如果准备好了就将NameNode(active )自动切换成NameNode(standby)。每个NameNode都有一个ZooKeeperFailoverController监视。
我们的安装方案如下图。只有三台的,将NN-2也放在node01,DN在node02,node03

二、前期准备!!!
准备
四台虚拟机,且四台虚拟机能相互ping通。可根据这个链接学习https://blog.youkuaiyun.com/Dlychee/article/details/106756219
并且要将
Xshell和Xftp连接虚拟机,可根据这个链接学习https://blog.youkuaiyun.com/Dlychee/article/details/106756519
知识点1:按“i”编辑文件,编辑完内容后,按“Esc”键,然后输入“:wq”为保存编辑内容并退出,输入“:q!”为不保存编辑内容并退出。
知识点2:在敲当前目录下文件名的时候可以按 Tab 键,它会自动帮你补全文件名。
(一)、安装jdk
这里给一个jdk-7u67-linux-x64.rpm
网盘链接: https://pan.baidu.com/s/1cwuoJLPcclQEKwJSqaNMIQ
提取码:688f
我们将四台虚拟机都开启且与Xshell连接上。

首先配置node01虚拟机的jdk,在node01上操作以下步骤
1.将在Windows中的jdk.rpm文件传输给node01。 (rpm相当于Windows的exe文件)
(
右边部分为虚拟机中root目录下)
首先,单击“新建文件传输”。然后,在左边部分找到在Windows下jdk-7u67-linux-x64.rpm文件,右键,单击“传输”。

2.输入命令
rpm -i jdk-7u67-linux-x64.rpm

3.查询jdk安装路径
whereis java

4.配置全局环境变量
(1)进入profile中进行编辑的命令,“vi + 文件路径”表示打开文件,并将光标置于最后一行首 。
vi + /etc/profile
按“i”编辑文件,编辑完内容后,按“Esc”键,然后输入“:wq”为保存编辑内容并退出,输入“:q!”为不保存编辑内容并退出。(后面将不再重复此知识点。)
(2)在它最后插入:
export JAVA_HOME=/usr/bin/java
export PATH=$PATH:$JAVA_HOME/bin

5.使环境变量生效(每次修改过/etc/profile文件后记得一定要source一下)
source /etc/profile
6.输入命令jps,如果出现-bash: jps: command not found

(1)此时更改环境变量,输入命令:
vi + /etc/profile
(2)更改刚刚前面输入的内容:
export JAVA_HOME=/usr/bin/java
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin
(3)使环境变量生效
source /etc/profile
(4)再次输入命令jps,查看是否出现Jps

这时候我们虚拟机中 node01中的jdk安装成功。
开始配置node02,node03,node04虚拟机的jdk
7.现在我们将node01中的jdk分发给node02,node03,node04中。
在虚拟机node01中,我们cd到存放jdk.rpm文件的目录下(这里我们的jdk刚刚放在了根目录中,所以cd ~),然后输入以下命令将jdk发送给node02:
scp jdk-7u67-linux-x64.rpm node02:'pwd'
scp是发送命令,pwd是当前目录。即将jdk-7u67-linux-x64.rpm文件发送给node02的当前目录下。
不要忘了还要发送给node03,node04。
scp jdk-7u67-linux-x64.rpm node03:'pwd'
scp jdk-7u67-linux-x64.rpm node04:'pwd'

8.查看node02,node03,node04是否接收到jdk-7u67-linux-x64.rpm。
(1)我们将Xshell软件的右下角的 “三” 图标单击一下,然后选择全部会话。

(2)在Xshell全部会话框中输入 ll ,然后按“Enter”键。来查看jdk是否传输成功。

当每台虚拟机中都出现jdk-7u67-linux-x64.rpm,则证明传输成功。

如果没有显示jdk-7u67-linux-x64.rpm,有可能是虚拟机之间不能ping通。
9.分别在node02,node03,ndoe04上执行rpm安装命令。
rpm -i jdk-7u67-linux-x64.rpm

10.在node01上cd /etc,在此目录下把profile文件分发到node02、node03、node04上。
scp profile node02:`pwd`
scp profile node03:`pwd`
scp profile node04:`pwd`

11.看node02、node03、node04这三台机子的jdk是否装好
(1)利用Xshell全部会话栏输入source /etc/profile
(2)利用Xshell全部会话栏输入jps
在每台虚拟机中我们可以看到 jps 进程启动,则四台虚拟机的jdk安装成功。

(二)、同步所有服务器时间
1.查看每台虚拟机当前时间。(时间不能差太大,否则集群启动后某些进程跑不起来。)
利用Xshell全部会话栏输入命令 date,看四台虚拟机当前时间,一不一样。

2.时间不同步,我们可以做一下操作。(不管时间同步同步,这里建议都执行一遍以下操作。)
(1)用yum安装时间同步器。
利用Xshell全部会话栏输入
yum -y install ntp
当最后显示“Complete!”安装完成。
(2)执行时间同步命令。
这里我们做和阿里云第一台服务器时间同步。(做这个的前提是虚拟机ping外网能ping通,例如ping www.baidu.com能成功。)
利用Xshell全部会话栏输入
ntpdate time1.aliyun.com
3.再次查看每台虚拟机当前时间。
利用Xshell全部会话栏输入命令 date,看四台虚拟机当前时间,一不一样。
(三)、配置文件检查
1.查看四台虚拟机的HOSTNAME是否正确。
cat为查看命令,我们的hostname存放在/etc/sysconfig/network路径中。
利用Xshell全部会话栏输入命令
cat /etc/sysconfig/network
这里给出node01和node02截图


如果不正确可以输入命令vi /etc/sysconfig/network来更改。
2.查看四台虚拟机IP映射是否正确。
利用Xshell全部会话栏输入命令
cat /etc/hosts
这里给出node01和node02截图,查看最后四行,IP和主机名是否一一对应。

如果不正确,可以输入命令vi /etc/hosts来更改。
3.查看四台虚拟机中SELINUX=disabled
利用Xshell全部会话栏输入命令
cat /etc/sysconfig/selinux

如果不正确,可以输入命令vi /etc/sysconfig/selinux来更改。
4.查看

最低0.47元/天 解锁文章
1663

被折叠的 条评论
为什么被折叠?



