Hadoop从入门到进阶 HDFS高可用集群 && Yarn高可用集群 搭建(四)

1 Hadoop 高可用概述

1)Active NameNode 和 Standby NameNode:两台 NameNode 形成互备,一台处于 Active 状态,为主 NameNode,另外一台处于 Standby 状态,为备 NameNode,只有主 NameNode 才能对外提供读写服务。
2)主备切换控制器 ZKFailoverController:ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换,当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换。
3)Zookeeper 集群:为主备切换控制器提供主备选举支持。
4)JounalNode:用于Active NameNode,Standby NameNode同步数据,本身由一组JounnalNode结点组成,该组结点基数个,支持Paxos协议,保证高可用,是CDH5唯一支持的共享方式(相对于CDH4 促在NFS共享方式)
在这里插入图片描述

2 高可用搭建

2.1 环境准备

#node1,node2免登陆其余节点
node1  jdk hadoop zookeeper  NameNode  zkfc  ResourceManager  
node2  jdk hadoop            NameNode  zkfc  ResourceManager  
node3  jdk hadoop            DataNode  NodeManager  JournalNode
node4  jdk hadoop            DataNode  NodeManager  JournalNode
node5  jdk hadoop            DataNode  NodeManager  JournalNode

2.2 安装单机节点zookeeper(比较easy安装步骤略)

在这里插入图片描述

2.3 修改core-site.xml

cd /usr/local/hadoop-2.8.5/etc/hadoop
vim core-site.xml
<configuration>
         <!--namenode名称-->
         <property>
            <name>fs.defaultFS</name>
            <value>hdfs://nameservice/</value>
         </property>
        <!-- 指定zookeeper地址 -->
        <property>
             <name>ha.zookeeper.quorum</name>
             <value>node1:2181</value>
        </property>
</configuration>

2.4 修改hdfs-site.xml

vim hdfs-site.xml

<configuration>
<!--指定hdfs的nameservice为bi,需要和core-site.xml中的保持一致 -->
<property>
        <name>dfs.nameservices</name>
        <value>nameservice</value>
</property>
<!-- nameservice下面有两个NameNode,分别是nn1,nn2 -->
<property>
        <name>dfs.ha.namenodes.nameservice</name>
        <value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
        <name>dfs.namenode.rpc-address.nameservice.nn1</name>
        <value>node1:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
        <name>dfs.namenode.http-address.nameservice.nn1</name>
        <value>node1:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
        <name>dfs.namenode.rpc-address.nameservice.nn2</name>
        <value>node2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
        <name>dfs.namenode.http-address.nameservice.nn2</name>
        <value>node2:50070</value>
</property>
<!--nameNode的edits元数据在机器本地磁盘的存放位置 -->
<property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/data/namenode</value>
</property>
<property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/data/datanode</value>
</property>
<!-- 指定NameNode的共享edits元数据在JournalNode上的存放位置 -->
<property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node3:8485;node4:8485;node5:8485/nameservice</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/data/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
        <name>dfs.client.failover.proxy.provider.nameservice</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
        <name>dfs.ha.fencing.methods</name>
        <value>
        sshfence
        shell(/bin/true)
        </value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
</property>

</configuration>

2.5 修改mapred-site.xml

vim mapred-site.xml
<configuration>
        <!--提交job时在yarn上计算-->
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
       </property>
</configuration>

2.6 修改yarn-site.xml

vim yarn-site.xml
<configuration>
<!-- 开启RM高可用 -->
<property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yrc</value>
</property>
<!-- 指定RM的逻辑名字 -->
<property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>node1</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>node2</value>
</property>
<!-- 指定zk集群地址 -->
<property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>node1:2181</value>
</property>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
</configuration>

2.7 修改slaves

#node1
vim slaves

node3
node4
node5

2.8 把当前节点配置文件复制到其它节点上

#node1把配置文件复制到其它节点上
cd /usr/local/hadoop-2.8.5/etc
scp -r  ./hadoop node2:/usr/local/hadoop-2.8.5/etc
scp -r  ./hadoop node3:/usr/local/hadoop-2.8.5/etc
scp -r  ./hadoop node4:/usr/local/hadoop-2.8.5/etc
scp -r  ./hadoop node5:/usr/local/hadoop-2.8.5/etc

2.9 启动

1)启动zk
在这里插入图片描述
2)启动journalnode

#必须先启动journalnode,node3 node4 node5。
cd /usr/local/hadoop-2.8.5/sbin
./hadoop-daemon.sh start journalnode
#查看
jps

在这里插入图片描述
3)格式化namenode

#node1
cd /usr/local/hadoop-2.8.5/bin
./hadoop namenode -format
#为了保持node2和node1数据一致那么把namenode1的格式化数据复制过去
cd /usr/local/data
scp -r  namenode/ node2:/usr/local/data/

4)格式化zkfc

#node1
cd /usr/local/hadoop-2.8.5/bin
#格式化
./hdfs zkfc -formatZK

在这里插入图片描述
在这里插入图片描述
5)启动hdfs集群5)启动hdfs集群

#进入目录
cd  /usr/local/hadoop-2.8.5/sbin
#开启hdfs集群
./start-dfs.sh

在这里插入图片描述
6)查看web界面

http://192.168.0.38:50070
http://192.168.0.39:50070

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7)启动yarn

#node1
cd  /usr/local/hadoop-2.8.5/sbin
./start-yarn.sh
#node2
cd  /usr/local/hadoop-2.8.5/sbin
./yarn-daemon.sh start resourcemanager

在这里插入图片描述
8)关闭acitve机器
node2 jps 杀进程,node1变成了主节点
在这里插入图片描述
在这里插入图片描述
9)恢复node2

#恢复挂掉相关日志
cd /usr/local/hadoop-2.8.5/bin
./hadoop namenode -recover
cd /usr/local/hadoop-2.8.5/sbin
./hadoop-daemon.sh start namenode
#访问URL
http://192.168.0.38:50070/dfshealth.html#tab-overview

在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

响彻天堂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值