hadoop配置文件还原_Hadoop的配置文件设置(HDFS HA)

本文详细介绍了Hadoop HDFS高可用(HA)的配置过程,包括虚拟节点配置、Zookeeper设置、NameNode和DataNode的启动与管理,以及如何进行HA的测试和故障切换。
摘要由CSDN通过智能技术生成

本文为上述配置的一部分,为方便阅读,故设为独立页面

各虚拟节点配置

YARN

HDFS

hostname

IP

ResourceManager

NodeManager

NameNode

DataNode

Zookeeper

JournalNode

Process

master

192.168.2.1

Y

Y

Y

Y

NameNode

JournalNode

DFSZKFailoverController

QuorumPeerMain

ResourceManager

slave1

192.168.2.2

Y

Y

Y

Y

Y

Y

NameNode

JournalNode

DFSZKFailoverController

DataNode

QuorumPeerMain

ResourceManager

NodeManager

slave2

192.168.2.3

Y

Y

Y

Y

JournalNode

DataNode

QuorumPeerMain

NodeManager

1:原理

hadoop 2.x 中支持NFS及QJM (Quorum Journal Manager), QJM 是由Cloudera 提出的基于Paxos的方案

be553a2161d3a2c86556d0d951cac065.png

Hadoop提供了ZKFailoverController角色,部署在每个NameNode的节点上,作为一个deamon进程, 简称zkfc,示例图如下

ca783ae7436e01dece4fd9c1f3cc95cf.png

ZKFailoverController 主要包括三个组件:

HealthMonitor:              监控NameNode是否处于unavailable或unhealthy状态,当前通过RPC调用NN相应的方法完成

ActiveStandbyElector:       管理和监控自己在ZK中的状态

ZKFailoverController         它订阅HealthMonitor 和ActiveStandbyElector 的事件,并管理NameNode的状态

ZKFailoverController主要职责:

健康监测:周期性的向它监控的NN发送健康探测命令,从而来确定某个NameNode是否处于健康状态,如果机器宕机,心跳失败,那么zkfc就会标记它处于一个不健康的状态

会话管理:如果NN是健康的,zkfc就会在zookeeper中保持一个打开的会话,如果NameNode同时还是Active状态的,那么zkfc还会在Zookeeper中占有一个类型为短暂类型的znode,当这个NN挂掉时,这个znode将会被删除,然后备用的NN,将会得到这把锁,升级为主NN,同时标记状态为Active

当宕机的NN新启动时,它会再次注册zookeper,发现已经有znode锁了,便会自动变为Standby状态,如此往复循环,保证高可靠,需要注意,目前仅仅支持最多配置2个NN

master选举:如上所述,通过在zookeeper中维持一个短暂类型的znode,来实现抢占式的锁机制,从而判断那个NameNode为Active状态

2:配置

Hadoop HA的配置包括2部分,HDFS HA用于NameNode及YARN HA用于ResourceManager, 本节先配置hdfs ha

创建journal临时目录:/home/mytestzk/Hadoop-2.7.4/tmp/journal

修改core-site.xml,增加节点ha.zookeeper.quorum

7f0c792640b1d9895b53654c02d2b102.png

修改hdfs-site.xml

删除节点dfs.namenode.secondary.http-address,并增加以下配置节点(红框内):

0a4de51063e91eefce4d6155cc0bd2d3.png

3:首次启动:

3.1 首先启动zookeeper集群,分别在master, slave1, slave2执行以下命令

./bin/zkServer.sh start

3.2 初始化HA空间,在master namenode节点执行命令,格式化zkfc,在zookeeper中生成znode节点,用来保存HA或failover的数据

./bin/hdfs zkfc -formatZK

3.3 启动journalnode集群,在每个节点用如下命令启日志程序

NameNode将元数据操作日志记录在JournalNode上,主备NameNode通过记录在JouralNode上的日志完成元数据同步

./sbin/hadoop-daemon.sh start journalnode

3.4 格式化主namenode节点

./bin/hdfs namenode -format mycluster

3.5 初始化JournalNode(直接配置HA时不需要这步)

如果是非HA转HA才需要这一步,在其中一个JournalNode上执行以下命令,用namenode的edits初始化JournalNode:

bin/hdfs namenode -initializeSharedEdits

3.6 启动NameNode

在主namenode节点,执行命令启动namenode:./sbin/hadoop-daemon.sh start namenode

在备namenode节点,首先执行命令:./bin/hdfs namenode -bootstrapStandby

这个是把备namenode节点的目录格式化并把元数据从主namenode节点copy过来,并且这个命令不会把journalnode目录再格式化了

然后再执行命令启动备namenode进程:./sbin/hadoop-daemon.sh start namenode

3.7 启动ZKFC,在两个namenode节点都执行以下命令

./sbin/hadoop-daemon.sh start zkfc

3.8 启动datanode,在所有datanode节点都执行以下命令

./sbin/hadoop-daemon.sh start datanode

4:正常启动结束方法:

启动:

下次启动的时候,先启动zookeeper,然后执行以下命令就可以全部启动所有进程和服务了:

./sbin/start-dfs.sh

结束:

停止所有HDFS相关的进程服务,执行以下命令:

./sbin/stop-dfs.sh

5:测试HA的高可用性

在active namenode上执行如下命令关闭namenode: sbin/hadoop-daemon.sh stop namenode

然后访问以下两个地址查看namenode的状态:

http://master:50070/dfshealth.html

http://slave1:50070/dfshealth.html

0dc8e897fdcd4aca20c43b24045ee58a.png

从HDFS Non-HA 升级到 HDFS HA

停止HDFS:./sbin/stop-dfs.sh

修改配置文件 core-site.xml, hdfs-site.xml并覆盖到每台机器上

启动zookeeper

启动journalnode集群,上述第3.3步骤

初始化JournalNode,上述第3.5步骤

启动namenode节点,上述第3.6步骤

启动datanode节点,上述第3.8步骤

上面步骤只是配置了手动failover,在这种模式下,系统不会自动触发failover,即不会将Standby提升为Active,即使Active已经失效。接下来介绍如何实现自动failover。

初始化HA空间,上述第3.2步骤

完成上诉步骤后,就可以正常启动hdfs了,此时hdfs已经具备自动failover功能。

ZKFC和Namenodes守护进程的启动顺序没有关系,ZKFC只是调度Namenode的存活状态,如果不启动ZKFC,此Namenode将无法参与自动failover过程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值