搭建Hadoop HA 高可用集群——四台虚拟机(CentOS)

  刚经过一个阶段的大数据学习,详细的记录了一下搭建Hadoop HA 高可用集群的全过程━(`∀´)ノ亻找bug的过程好心酸啊,但学习到新知识还是感觉好开心hhhh
  你是真的真的真的真的真的很不错 ! 👍

一、Hadoop 系统架构

1. Hadoop1.x 和Hadoop 2.x

   hadoop 1.x是由分布式计算框架MapReduce和分布式存储系统HDFS两个分支构成的。其中HDFS由一个Namenode和多个DateNode组成。只有一个Namenode,所有元数据由唯一的Namenode负责管理,可想而之,当这个NameNode挂掉时,整个集群基本也就不可用了。

   Hadoop 2.x由HDFS、MapReduce和YARN三个分支构成。在 1.x 版本的基础上,提出HDFS Federation,并引入资源管理框架Yarn,负责集群资源管理和调度。HA机制也是从hadoop2.0开始,之前的版本中并没有HA机制,HDFS的HA机制通过引入双NameNode架构( NN Federation联邦),每个NameNode管理不同文件的元数据,解决了单点故障问题,实现HDFS 的高可用。

  所谓HA,即高可用(7*24小时不中断服务),实现高可用最关键的是消除单点故障。hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

2. HDFS 的 HA 机制

HDFS 的HA机制 2.x ,解决了HDFS 1.x 中 单点故障内存受限问题

解决单点故障:

​  •主备NameNode(如果主NameNode发生故障,则切换到备NameNode上

​       --主NameNode对外提供服务,备NameNode同步主元数据,以待切换

       --所有DataNode同时向两个汇报数据块信息

解决内存受限问题:

​  •HDFS Federation(联邦)

​  •水平扩展,支持多个NameNode;

      --每个NameNode分管一部分目录,把单个namenode的负载分散到多个节点中,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。

      --所有NameNode共享所有DataNode存储资源

主NameNode和备NameNode之间的切换:

​  •手动切换 :通过命令实现主备之间的切换。

​  •基于Zookeeper的自动切换 :

      --ZooKeeper Failover Controller:监控NameNode健康状态,部署在每个NameNode的节点上,作为一个demon进程,它会周期性的向它监控的NN发送健康探测命令,从而来确定某个NameNode是否处于健康状态,如果机器宕机,心跳失败,那么zkfc就会标记它处于一个不健康的状态如果NN是健康的,zkfc就会在zookeeper中保持一个打开的会话,如果NameNode同时还是Active状态的,那么zkfc还会在Zookeeper中占有一个类型为短暂类型的znode, 当这个NN挂掉时,这个znode将会被删除,然后备用的NN,将会得到这把锁,升级为主NN,同时标记状态为Active。当宕机的NN新启动时,它会再次注册zookeper,发现已经有znode锁了,便会自动变为Standby状态,如此往复循环,保证高可靠。

   ZKFC为NameNode竞争锁,获得ZKFC 锁的NameNode变为active。如上就涉及到了master选举,通过在zookeeper中维持一个短暂类型的znode,来实现抢占式的锁机制,从而判断那个NameNode为Active状态。

HA 架构图

二、HA 安装方案及配置

配置:

​    VMware Workstation Pro (安装好CentOS-6.5 的linux操作系统)

​    纯净版虚拟机(CentOS 6 64位)

    通过克隆 CentOS 6 64位 虚拟机,得到四台虚拟机CentOS-node01,02,03,04 ,如下图:

HA安装方案

接下来我们将利用VMware搭建四个节点的集群hadoop,其各个节点分布如下:(将严格按照以下安装方案

*带星的地方表示该台机子上需要安装该配置

三、配置CentOS-node01

1. 配置IP:

命令:

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

配置情况如下:

执行:service network restart

重启网络服务命令,要出来如下图全是OK,则配置成功

测试:ping www.baidu.com

ping一下百度,看下是否成功

成功则一直在加载64 bytes …的语句,按 CTRL+C停止加载

2. 配置主机名

命令:

 vi /etc/sysconfig/network

配置情况如下:

3. 配置hosts

命令:

vi /etc/hosts

配置情况如下:
我们是配置四台机子的集群,所以在下面添加了四台机子的信息,由上也可以看出,四台机子分别的子网IP是多少。

4. 关机 拍摄快照

关机命令:poweroff

给CentOS-node01关机,拍摄快照,存一个非常干净的Linux版本。

走完所有的安装过程,我总结,一定要有拍摄快照这个好习惯,关键时候能起到很大的作用呢 !

四、设置机子之间的互相访问

1.给CentOS-node02配置,配置过程同给CentOS-node01配置

该机子IP配置如下:

*注意红圈,node01 为31 ;node02 为32 ;node03 为33 ;node04为 34

2.配置完CentOS-node02 ,两台机子互相ping一下看是否能ping通

具体操作:

​   在 CentOS-node01 中输入命令: ping CentOS-node02

​   在CentOS-node02 中输入命令: ping CentOS-node01

能ping通则指两台机子彼此之间可以访问

3.将余下的CentOS-node03 和CentOS-node04 都配置好

配置过程一定要仔细,不要直接复制网页命令,自己动手敲敲吧

4.使四台机子彼此之间都能访问

5.让windows和虚拟机之间也能访问

修改Windows上的hosts文件

路径 : C:/Windows/System32/drivers/etc
用Notepad++ 或什么都可以,只要能打开软件对其进行修改保存
我这里是用Notepad++ 打开的文档,在最后添加和上面一样的四台机子的信息
*Notepad++修改保存时,点击保存后,该页面会刷新一下,需再次点击保存才是真的保存好了

五、xftp软件和xshell软件

   xftp 软件 是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。 直接搜索xftp安装压缩包,傻瓜式安装即可。
  xshell 软件 是一个终端模拟软件,而且是远程近程都可以。 就是模拟服务器所在的linux,在xshell中可以输入命令, 就像在服务器的linux中输入命令一样。一般用于远程 连接。在本次安装过程中我将会使用xshell连接虚拟机进行操作,免去了鼠标在windows和linux之间来回切换的不便性。

也可直接在xshell命令打开xftp软件,在windows和linux之间进行文件的传输。
也会用到下面的xshell的全部会话框去输命令,避免重复在每个机子上都要输一次命令

六、Hadoop伪分布式安装

1. 安装jdk

使用rpm命令进行安装 (rpm相当于windows里的exe文件)

rpm -i jdk-7u67-linux-x64.rpm
whereis java  //查看java的存放路径

vi + /etc/profile       //修改etc下的profile如下图

source /etc/profile

source一下,刷新该文件。

如果出现-bash: jps: command not found

​ 改: export JAVA_HOME=/usr/bin/java
​ export PATH=$PATH:/usr/java/jdk1.7.0_67/bin

2. 免密钥(自身)

在家目录下 , ll -a 看有无**.ssh**文件
若无,则先 ssh localhost一下 (每次ssh登录 ,都别忘了要exit)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  //生成密钥

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

//把id_dsa.pub 追加到 ~/.ssh/authorized_keys 下

ssh localhost  //验证是否仍需要密码登录
ssh CentOS-node01 

3. 安装Hadoop

安装命令:

tar xf hadoop-2.6.5.tar.gz -C /opt/HXW   //解压放在opt下以名字大写字母命名的文件夹中
cd /opt/HXW/hadoop-2.6.5    //到/opt/HXW目录下去看一下是否解压好了

实现在任意目录下启动hadoop,就要在配置文件里做些修改。

vi + /etc/profile

配置信息如下:

 export JAVA_HOME=/usr/bin/java
 export HADOOP_HOME=/opt/HXW/hadoop-2.6.5
 export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

当在命令行上输入hd按Tab键可以自动补全为hdfs
输入start-d按Tab键可以自动补全为start-dfs.
就表示配置成功了

4. 修改hadoop配置文件信息

配置操作统一在下列路径下运行命令:

cd /opt/HXW/hadoop-2.6.5/etc/hadoop

注:以上路径的etc可不是根目录下的etc

vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh 

给这三个文件里的JAVA_HOME都改成绝对路径/usr/java/jdk1.7.0_67

配置 vi core-site.xml

配置代码如下:

<configuration>
<property>
  <name>fs.defaultFS</name>    //配置主节点信息
  <value>hdfs://mycluster</value>
</property>

<property>
   <name>hadoop.tmp.dir</name>  //将NN的元数据信息和DN的数据文件默认存放的临时tmp文件的路径修改掉,更安全
   <value>>/var/HXW/hadoop/pseudo</value>
</property>

</configuration>

配置 vi core-site.xml

配置代码如下:

<property>
        <name>dfs.replication</name>  //Block的副本数,默认为3
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>CentOS-node01:50090</value>  //配secondary NameNode 
</property>

配置slaves文件

vi slaves 
CentOS-node01

5. 格式化 hdfs

hdfs namenode -format  

只能格式化一次,再次启动集群不要执行,否则clusterID变了
之前/var/HXW/hadoop/pseudo这个文件不存在,格式化后就存在了,检查一下看存在没,可以进入到这个文件里去了

6.启动集群

start-dfs.sh

jps 去查看都有哪些集群被启动了

在浏览器里打开CentOS-node01:50070(别用360浏览器!)能出现以下界面则有效

创建目录

hdfs dfs  -mkdir -p  /user/root

在 user下创建root目录,在上述浏览器界面可直接查看是否创建目录成功,如下:

上传文件

hdfs dfs -put  a.txt   /user/root

7. 停止集群

停止集群命令:

stop-dfs.sh

七、配置另外三台机子

7.1 安装jdk

1.分发jdk到另外三台机子

在CentOS-node01上输入下列命令,进行发送:

scp jdk-7u67-linux-x64.rpm CentOS-node02:`pwd`
scp jdk-7u67-linux-x64.rpm CentOS-node03:`pwd`
scp jdk-7u67-linux-x64.rpm CentOS-node04:`pwd`

在Xshell的全部会话栏里一起ll,看jdk是否发送成功。
注意:` 这一符号是数字1左边这个键

2.分别在 CentOS-node02、03、04上执行rpm安装命令

rpm -i jdk-7u67-linux-x64.rpm

3.在node03上cd /etc,在此目录下把profile文件分发到 CentOS-node02、03、04上。

scp profile node04:`pwd`

4.利用Xshell全部会话栏,刷新这个文件,修改才会生效 , 这一步不能忘记 !

source /etc/profile

5.利用Xshell全部会话栏,jps,看04、05、06这三台机子的jdk是否装好。

7.2 同步所有服务器的时间

date   //查看机子当前的时间。

时间不能差太大,否则集群启动后某些进程跑不起来。

*若时间不同步,怎么办?

1.yum进行时间同步器的安装

yum -y install ntp

2.执行同步命令

ntpdate time1.aliyun.com   //和阿里云服务器时间同步

7.3 装机前的配置检查

仔细点,真的要细心(扶额)不然有你哭的hhh

cat /etc/sysconfig/network   //查看HOSTNAME是否正确
cat /etc/hosts     //查看IP映射是否正确,若不正确,进行修改
cat /etc/sysconfig/selinux    //查看该selinux里是否  SELINUX=disabled
service iptables status    //查看防火墙是否关闭,配置过程中是要求关闭防火墙的

7.4 免密钥(彼此之间)

7.4.1 第一台NN和其他三台机子的免密钥设置

1. 在家目录下 ll –a看下有无.ssh文件,如果没有就ssh loalhost一下
2. cd .ssh ,到.ssh目录下,ll查看一下
3. 把CentOS-node01的公钥发给其他三台机子

scp id_dsa.pub CentOS-node02:`pwd`/CentOS-node01.pub

将CentOS-node01的公钥发给CentOS-node02的pwd下 并重命名为CentOS-node01.pub

4. 在CentOS-node02的.ssh目录下看是否有CentOS-node01.pub
​ 如果有,那就追加到authorized_keys

cat CentOS-node01.pub >> authorized_keys

5. 在CentOS-node01上ssh CentOS-node02看是否免密钥了(每次ssh一定要记得exit

6. 同理,给其他节点发送公钥并在各个节点上把CentOS-node01的公钥追加上,并测试看ssh CentOS-node01要不要密钥

scp id_dsa.pub  CentOS-node03:`pwd`/CentOS-node01.pub
cat CentOS-node01.pub >> authorized_keys
ssh CentOS-node01
exit    //!!!一定要exit

scp id_dsa.pub  CentOS-node04:`pwd`/CentOS-node01.pub
cat CentOS-node01.pub >> authorized_keys
ssh CentOS-node01
exit   //!!!一定要exit
7.4.2 两个NN之间互相免密钥

  需实现两台NameNode ( CentOS-node01与CentOS-node02 ) 之间互相免密钥,我们已经实现CentOS-node01可免密钥登录CentOS-node02,那现需CentOS-node02上能免密钥登CentOS-node01,所以

1. 在CentOS-node02上:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  //生成公钥

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2.ssh localhost验证一下

3. 分发到CentOS-node01上:

scp id_dsa.pub  CentOS-node01:`pwd`/CentOS-node02.pub

4. 在CentOS-node01的.ssh目录下,

cat CentOS-node02.pub >> authorized_keys,

5. 在CentOS-node02上 验证一下可否免密钥登录

ssh CentOS-node01 
7.4.3 CentOS-node03和CentOS-node04之间免密钥

 由于CentOS-node03和CentOS-node04都是resourcemanager,所以它俩应该相互免密钥

CentOS-node03上免密钥登录CentOS-node04:

1.在CentOS-node03的.ssh目录下生成密钥

 ssh-keygen -t dsa -P '' -f ./id_dsa

2.追加到自己authorized_keys

 cat id_dsa.pub >> authorized_keys

3.用 ssh localhost 验证看是否需要密码,别忘了exit!

4. 将CentOS-node03的公钥分发到CentOS-node04

 scp id_dsa.pub CentOS-node04:`pwd`/CentOS-node03.pub

5.在CentOS-node04的.ssh目录下,追加CentOS-node03.pub

 cat CentOS-node03.pub >> authorized_keys

6. 在CentOS-node03上 ssh CentOS-node04 ,看是否免密钥

同理设置 CentOS-node04 上免密钥登录CentOS-node03,这里过程我就不赘述了,将上面03和04互相换位进行操作即可。

7.5 修改NameNode的一些配置信息

vi hdfs-site.xml

配置结果如下:

<configuration>
	<!--指定HDFS副本的数量,不能超过机器节点数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- 为namenode集群定义一个services name -->
	<property>
  		<name>dfs.nameservices</name>
  		<value>mycluster</value>
	</property>
	<!-- nameservice 包含哪些namenode,为各个namenode起名 -->	
	<property>
  		<name>dfs.ha.namenodes.mycluster</name>
  		<value>nn1,nn2</value>
	</property>
	<!-- 名为nn1和nn2的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->	
	<property>
  		<name>dfs.namenode.rpc-address.mycluster.nn1</name>
  		<value>CentOS-node01:8020</value>
	</property>
	<property>
  		<name>dfs.namenode.rpc-address.mycluster.nn2</name>
  		<value>CentOS-node02:8020</value>
	</property>
	<!--名为nn1和nn2的namenode的http地址和端口号,用来和web客户端通讯 -->
	<property>
  		<name>dfs.namenode.http-address.mycluster.nn1</name>
  		<value>CentOS-node01:50070</value>
	</property>
	<property>
  		<name>dfs.namenode.http-address.mycluster.nn2</name>
  		<value>CentOS-node02:50070</value>
	</property>
	<!-- namenode间用于共享编辑日志的journal节点列表 -->
	<property>
  		<name>dfs.namenode.shared.edits.dir</name>
 		<value>qjournal://CentOS-node01:8485;CentOS-node02:8485;CentOS-node03:8485/mycluster</value>
	</property>
	<!-- journalnode 上用于存放edits日志的目录 -->
	<property>
  		<name>dfs.journalnode.edits.dir</name>
  		<value>/var/HXW/hadoop/ha/jn</value>
	</property>
	<!-- 配置失败自动切换实现方式 -->
	<property>
  		<name>dfs.client.failover.proxy.provider.mycluster</name>
 		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	<!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->
	<property>
  		<name>dfs.ha.fencing.methods</name>
  		<value>sshfence</value>
	</property>
	<!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
	<property>
  		<name>dfs.ha.fencing.ssh.private-key-files</name>
  		<value>/root/.ssh/id_dsa</value>
	</property>
	<!-- 指定该集群出现故障时,是否自动切换到另一台namenode -->
	<property>
   		<name>dfs.ha.automatic-failover.enabled</name>
   		<value>true</value>
 	</property>
</configuration>

vi core-site.xml

配置结果如下:

<configuration>
	<!– 集群名称mycluster-->
	<property>
 		<name>fs.defaultFS</name>
  		<value>hdfs://mycluster</value>
	</property>
	<!– zookeeper布署的位置-->
	<property>
   		<name>ha.zookeeper.quorum</name>
   		<value>CentOS-node02:2181,CentOS-node03:2181,CentOS-node04:2181</value>
	</property>
</configuration>

vi slaves

CentOS-node02
CentOS-node03
CentOS-node04

MapReduce做准备, mapreduce是在yarn运行的

把mapred-site.xml.template留个备份,并且改下名字

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

vi mapred-site.xml (添加参数)

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

vi yarn-site.xml (添加参数)

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>CentOS-node03</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>CentOS-node04</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>CentOS-node02:2181,CentOS-node03:2181,CentOS-node04:2181</value>
 </property>

7.6 拷贝Hadoop到其他机子

  1. cd /opt ,到opt目录下,将其下的HXW目录分发到CentOS-node02、03、04
scp –r HXW/ CentOS-node02:`pwd`
scp –r HXW/ CentOS-node03:`pwd`
scp –r HXW/ CentOS-node04:`pwd`
  1. 将hdfs-site.xml和core-site.xml分发到CentOS-node02、03、04
scp hdfs-site.xml core-site.xml CentOS-node02:`pwd`
scp hdfs-site.xml core-site.xml CentOS-node03:`pwd`
scp hdfs-site.xml core-site.xml CentOS-node04:`pwd`
  1. 把mapred-site.xml和yarn-site.xml 分发到CentOS-node02、03、04
scp mapred-site.xml yarn-site.xml CentOS-node02:`pwd`
scp mapred-site.xml yarn-site.xml CentOS-node03:`pwd`
scp mapred-site.xml yarn-site.xml CentOS-node04:`pwd`

八、安装zookeeper

  1. 命令解压安装zookeeper(在CentOS-node02上)
tar xf zookeeper-3.4.6.tar.gz -C /opt/HXW
  1. 修改zookeeper的配置文件
cd /opt/HXW/zookeeper-3.4.6/conf
  1. 给zoo_sample.cfg改名,以防在后面出现错误,我们复制该文件并重命名为zoo.cfg,不直接将文件改名
cp zoo_sample.cfg zoo.cfg
  1. 修改zoo.cfg 文件
vi zoo.cfg

改 **dataDir=/var/HXW/zk ** , 并在末尾追加

server.1=CentOS-node02:2888:3888
server.2=CentOS-node03:2888:3888
server.3=CentOS-node04:2888:3888

其中2888主从通信端口,3888是当主挂断后进行选举机制的端口

  1. 把zookeeper分发到其他节点
 scp -r zookeeper-3.4.6/ CentOS-node03:`pwd`
 scp -r zookeeper-3.4.6/ CentOS-node04:`pwd`

并用 ll /opt/HXW 检查下看分发成功没

  1. 给每台机子创建刚配置文件里的路径
mkdir -p /var/HXW/zk

**对CentOS-node02来说: **

 echo 1 > /var/HXW/zk/myid
 cat /var/HXW/zk/myid

**对CentOS-node03来说: **

 echo 2 > /var/HXW/zk/myid
 cat /var/HXW/zk/myid

**对CentOS-node04来说: **

 echo 3 > /var/HXW/zk/myid
 cat /var/HXW/zk/myid
  1. 在/etc/profile里面配置
export ZOOKEEPER_HOME=/opt/ldy/zookeeper-3.4.6
export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
  1. 然后在把/etc/profile分发到其他CentOS-node03、CentOS-node04
scp /etc/profile CentOS-node03:/etc
scp /etc/profile CentOS-node04:/etc
  1. 在CentOS-node02、03、04里source /etc/profie这步千万别忘 ! ! !

验证source这句是否完成,输入zkCli.s,按Tab可以把名字补全zkCli.sh

  1. 启动zookeeper

在全部会话中输入:zkServer.sh start 把三台机子的zookeeper都启起来


接着用zkServer.sh status查看每个zookeeper节点的状态

CentOS-node02、03、04 三台安装了zookeeper,只要是一台状态为leader,两台为follower则成功

* 注意:如果启动不起来,请把/etc/profile里的JAVA_HOME改成绝对路径。

九、启动journalnode

启动journalnode是为了使两台NameNode间完成数据同步。

下一次启动hdfs集群的时候还需要用hadoop-daemon.sh start journalnode命令启动journalnode吗?

不需要,只要start-dfs.sh就可以了。这里我们启动journalnode是为了同步两个namenode之间的信息。

在01、02、03三台机子上分别把journalnode启动起来

 hadoop-daemon.sh start journalnode

jps 检查下进程启起来了没

NameNode 要是没起来的话去 /opt/HXW/hadoop-2.6.5/logs (如下图)下查看相应的NameNode的.log文件,看哪里报错。(以后什么东西没启起来都可以到这里去查看)

十、格式化一台NN并给另一NN同步数据

( 这里需严格按步骤操作 ! !)
随意挑一台namenode上执行,另一台namenode不用执行,否则clusterID变了,找不到集群了。

hdfs namenode –format

然后,启动刚刚格式化的那台namenode

hadoop-daemon.sh start namenode

另一台namenode同步一下数据,用以下命令

hdfs namenode -bootstrapStandby

十一、格式化zkfc

( 这里需严格按步骤操作 ! !)
在CentOS-node01上:

hdfs zkfc -formatZK  

在CentOS-node02上:

zkCli.sh         //打开zookeeper客户端

打开zookeeper客户端查看hadoop-ha是否打开

十二、启动hdfs集群

启动zookeeper,全部会话中

zkServer.sh start

若zookeeper启动不成功,可能是前面一步zkfc格式化没成功,不要做太快,每一步都看清楚做仔细,回头去仔细看看报的什么错误吧

在CentOS-node01上启动集群

start-dfs.sh


如果哪个节点没起来到hadoop目录下去看那个node的日志文件log
然后全部会话jps看一下都起来些什么进程

用浏览器访问CentOS-node01:50070和CentOS-node02:50070 如下,一个为active,一个为standby
在这里插入图片描述
在CentOS-node01上启动yarn

start-yarn.sh

在CentOS-node03、04上分别启动resourcemanager

 yarn-daemon.sh start resourcemanager

看进程全不全,全部会话jps
在这里插入图片描述在这里插入图片描述
可在浏览器访问Cent-node03:8088,查看resourcemanager管理的内容

十三、关闭hdfs集群

关闭集群命令

stop-dfs.sh      //在CentOS-node01上

关闭yarn , 停止nodemanager

stop-yarn.sh     //在CentOS-node01上

在CentOS-node03,CentOS-node04上

yarn-daemon.sh stop resourcemanager

在CentOS-node02、03、04上,关闭zookeeper命令

zkServer.sh stop

呼 ~ 搭建完成,去跑一个wordcount试试吧

最后 ! 不仔细不认真就像是自己给自己埋雷,最后埋了一地的雷,排雷排的累死你hhhh
PS: 以上就是Hadoop高可用集群的搭建过程了 , 希望能对看到这篇文章的你有所帮助 ~

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Hadoop是一个分布式计算框架,它的可用性非常重要。在Hadoop集群中,如果一个节点宕或出现故障,会影响整个集群的运行。因此,为了保证Hadoop集群的可用性,需要搭建可用集群。以下是Hadoop可用集群搭建的步骤: 1. 安装ZooKeeper ZooKeeper是Hadoop集群可用性的核心组件。在Hadoop 2.x版本中,ZooKeeper是必须的。因此,需要先安装ZooKeeper。 2. 配置ZooKeeper 在ZooKeeper中,需要配置一些参数,如集群节点的IP地址、端口号等。这些参数将用于确保ZooKeeper在Hadoop集群中的正常运行。 3. 配置HadoopHadoop中,需要配置一些参数以确保Hadoop与ZooKeeper的正确交互。需要修改hdfs-site.xml和core-site.xml文件。 4. 配置NameNode的可用性 NameNode是Hadoop集群中的关键组件之一。为了确保NameNode的可用性,需要将其配置为Active-Standby模式。这意味着在一个节点宕时,另一个节点将成为Active节点,继续处理请求。 5. 配置ResourceManager的可用性 ResourceManager是YARN的关键组件之一,它管理着整个集群的资源。为了确保ResourceManager的可用性,需要将其配置为Active-Standby模式。这意味着在一个节点宕时,另一个节点将成为Active节点,继续处理请求。 6. 测试集群 最后,需要测试Hadoop集群的可用性。可以通过关闭某个节点来模拟节点宕的情况,然后观察Hadoop集群的行为。 以上是Hadoop可用集群搭建的步骤。通过这些步骤,可以确保Hadoop集群的可用性,提整个集群的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值