Hadoop高可用(主备切换)---配合Zookeeper

这篇具有很好参考价值的文章主要介绍了Hadoop高可用(主备切换)---配合Zookeeper。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Hadoop高可用(Hadoop High Availability)概述

HA(High Available), 高可用,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,分为活动节点(Active)及备用节点(Standby)。通常把正在执行业务的称为活动节点(Active),而作为活动节点的一个备份的则称为备用节点(Standby)。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。

hadoop2.x之后,Cloudera提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法(分布式一致性算法)实现的HDFS HA方案,它给出了一种较好的解决思路和方案。

QJM主要优势如下:
1.不需要配置额外的高共享存储,降低了复杂度和维护成本。
2.消除spof(单点故障)。
3.系统鲁棒性(Robust)的程度可配置、可扩展。

2. 高可用服务

框架以及原理

请简述zookeeper如何实现对hadoop主备切换,hadoop,zookeeper,大数据,学习,架构

在HA架构里面SecondaryNameNode已经不存在了,为了保持standby NN实时的与Active NN的元数据保持一致,他们之间交互通过JournalNode进行操作同步。

任何修改操作在 Active NN上执行时,JournalNode进程同时也会记录修改log到至少半数以上的JN中,这时 Standby NN 监测到JN 里面的同步log发生变化了会读取 JN 里面的修改log,然后同步到自己的目录镜像文件里面

当发生故障时,Active的 NN 挂掉后,Standby NN 会在它成为Active NN 前,读取所有的JN里面的修改日志,这样就能高可靠的保证与挂掉的NN的目录镜像文件一致,然后无缝的接替它的职责,维护来自客户端请求,从而达到一个高可用的目的。

在HA模式下,datanode需要确保同一时间有且只有一个NN能命令DN。为此:每个NN改变状态的时候,向DN发送自己的状态和一个序列号。

DN在运行过程中维护此序列号,当failover时,新的NN在返回DN心跳时会返回自己的active状态和一个更大的序列号。DN接收到这个返回则认为该NN为新的active。

如果这时原来的active NN恢复,返回给DN的心跳信息包含active状态和原来的序列号,这时DN就会拒绝这个NN的命令。

JournalNode进程作用: 任何修改操作在 Active NN上执行时,JournalNode进程同时也会记录修改log到至少半数以上的JN中,这时 Standby NN 监测到JN 里面的同步log发生变化了会读取 JN 里面的修改log,然后同步到自己的目录镜像文件里面

DFSZKFailoverController进程作用:
1. 健康监测:周期性的向它监控的NN发送健康探测命令,从而来确定某个NameNode是否处于健康状态,如果机器宕机,心跳失败,那么zkfc就会标记它处于一个不健康的状态。
2.会话管理:如果NN是健康的,zkfc就会在zookeeper中保持一个打开的会话,如果NameNode同时还是Active状态的,那么zkfc还会在Zookeeper中占有一个类型为短暂类型的znode,当这个NN挂掉时,这个znode将会被删除,然后备用的NN将会得到这把锁,升级为主NN,同时标记状态为Active。
3.master选举:通过在zookeeper中维持一个短暂类型的znode,来实现抢占式的锁机制,从而判断那个NameNode为Active状态。
4.当宕机的NN新启动时,它会再次注册zookeper,发现已经有znode锁了,便会自动变为Standby状态,如此往复循环,保证高可靠。

Failover Controller

HA模式下,会将FailoverController部署在每个NameNode的节点上,作为一个单独的进程用来监视NN的健康状态。

Failover Controller主要包括三个组件:

HealthMonitor: 监控NameNode是否处于unavailable或unhealthy状态。当前通过RPC调用NN相应的方法完成。
ActiveStandbyElector: 监控NN在ZK中的状态。
ZKFailoverController: 订阅HealthMonitor 和ActiveStandbyElector 的事件,并管理NN的状态,另外zkfc还
负责解决fencing(也就是脑裂问题)。

每台服务器上的节点/服务

HDFS
NN: NameNode
DN: DataNode
YARN
RM: ResourceManager
NM: NodeManager
Zookeeper
JN: JournalNode
ZK: ZooKeeper
ZKFC: DFSZKFailoverController
请简述zookeeper如何实现对hadoop主备切换,hadoop,zookeeper,大数据,学习,架构

3. 启动Hadoop高可用环境

命令启动

# 1.先恢复快照到高可用环境

# 2.三台服务器启动zookeeper服务
[root@node1 ~]# zkServer.sh start
[root@node2 ~]# zkServer.sh start
[root@node3 ~]# zkServer.sh start

# 3.在node1中启动hadoop集群
[root@node1 ~]# start-all.sh

# 4.检查服务
[root@node1 ~]# jps
[root@node2 ~]# jps
[root@node3 ~]# jps

每台虚拟机上的服务进程
请简述zookeeper如何实现对hadoop主备切换,hadoop,zookeeper,大数据,学习,架构

4. NameNode高可用

web链接:

node1:50070

node2:50070

可以使用kill -9 NN进程号把其中主服务杀掉,观察效果,然后使用 hdfs --daemon start namenode 重启,再次观察效果
请简述zookeeper如何实现对hadoop主备切换,hadoop,zookeeper,大数据,学习,架构

5. ResourceManager高可用

web链接:

node1:8088

node2:8088

可以使用kill -9 RM进程号把其中主服务杀掉,观察效果,然后使用 yarn --daemon start resourcemanager 重启,再次观察效果

注意: 两个服务同时启动,按照上述链接去访问会自动跳到同一个主节点页面

请简述zookeeper如何实现对hadoop主备切换,hadoop,zookeeper,大数据,学习,架构文章来源地址https://www.toymoban.com/news/detail-791501.html

到了这里,关于Hadoop高可用(主备切换)---配合Zookeeper的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文)

    说明: 本篇将详细介绍用二进制安装包部署hadoop等组件,注意事项,各组件的使用,常用的一些命令,以及在部署中遇到的问题解决思路等等,都将详细介绍。 ip hostname 192.168.1.11 node1 192.168.1.12 node2 192.168.1.13 node3 1.2.1系统版本 1.2.2内存建议最少4g、2cpu、50G以上的磁盘容量 本次

    2024年02月12日
    浏览(37)
  • Linux-一篇文章,速通Hadoop集群之伪分布式,完全分布式,高可用搭建(附zookeeper,jdk介绍与安装)。

    文章较长,附目录,此次安装是在VM虚拟环境下进行。文章第一节主要是介绍Hadoop与Hadoop生态圈并了解Hadoop三种集群的区别,第二节和大家一起下载,配置Linux三种集群以及大数据相关所需的jdk,zookeeper,只需安装配置的朋友可以直接跳到文章第二节。同时,希望我的文章能帮

    2024年03月19日
    浏览(37)
  • Hadoop集群 手动主备切换 (Active - Standby)

    手动切换 node01 备用节点 StandbyNameNode 为 主节点 ActiveNameNode,node02为备用节点SNN 查看节点状态 hdfs haadmin -getServiceState nn1 命令切换节点状态 到 hadoop 目录下执行: 1、将 NN2 切换为 Standby 备用节点 bin/hdfs haadmin -transitionToStandby --forcemanual nn2 2、将 NN1 切换为 Active 备用节点 bin/hd

    2024年02月03日
    浏览(24)
  • 82、简述Zookeeper的命名服务、配置管理、集群管理

    通过指定的名字来获取资源或者服务地址。Zookeeper可以创建一个全局唯一的路径,这个路径就可以作为一个名字。被命名的实体可以是集群中的机器,服务的地址,或者是远程的对象等。 一些分布式服务框架(RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根

    2024年02月16日
    浏览(28)
  • 实现高可用的Zookeeper集群:使用Zookeeper和其他开源工具

    作者:禅与计算机程序设计艺术 《79. 实现高可用的Zookeeper集群:使用Zookeeper和其他开源工具》 1.1. 背景介绍 随着分布式系统的广泛应用,如何实现高可用的Zookeeper集群成为了许多开发者关注的问题。Zookeeper作为一款成熟且广泛使用的开源分布式协调系统,以其高性能、高可

    2024年02月15日
    浏览(33)
  • 基于Zookeeper搭建Kafka高可用集群(实践可用)

    目录 一、Zookeeper集群搭建 1.1 下载  解压 1.2 修改配置 1.3 标识节点 1.4 启动集群 1.5 集群验证 二、Kafka集群搭建 2.1 下载解压 2.2 拷贝配置文件 2.3 修改配置 2.4 启动集群 2.5 创建测试主题 2.6 写入数据测试 为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有

    2024年02月09日
    浏览(31)
  • centos 搭建 zookeeper 高可用集群

    主机名 IP地址 spark01 192.168.171.101 spark02 192.168.171.102 spark03 192.168.171.103 1. 升级内核和软件 2. 安装常用软件 3. 关闭防火墙 4. 修改主机名 5. 修改IP地址 参考如下: 6. 修改hosts配置文件 修改内容如下: 7. 重启系统 8. 下载安装JDK和Zookeeper并配置环境变量 在所有主机节点创建软件目

    2024年02月05日
    浏览(39)
  • maxwell 基于zookeeper的高可用方案

    Maxwell版本1.39.2 在 com.zendesk.maxwell.util 包下创建 CuratorUtil 类,后面会使用此类实现高可用 // 类新增属性 public String zookeeperServers; public int sessionTimeoutMs; public int connectionTimeoutMs; public int baseSleepTimeMs; public int maxRetries; 将代码段 全部注释掉,修改为 然后重新打包就能得到基于zk的

    2024年02月14日
    浏览(32)
  • 让Zookeeper更高效:高可用性扩展策略

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着分布式系统的广泛应用,Zookeeper作为一致性系统的核心组件,在分布式系统中发挥着越来越重要的作用。Zookeeper作为一个分布式协调服务,负责协调分布式系统中的各个组件,保证系统的一致性和可用性。 1.2. 文章目的

    2024年02月14日
    浏览(27)
  • zookeeper + hadoop + hbase + phoenix

    IP hostname 192.168.23.130 hadoop01 192.168.23.131 hadoop02 192.168.23.132 hadoop03 jdk-1.8 zookeeper-3.8.1 hadoop-3.2.4 hbase-2.4.15 phoenix-2.4.0-5.1.3 1、关闭防火墙 2、设置主机名 3、配置主机hosts 4、设置ssh免密登录 分发JDK安装包到其他节点 配置JDK环境变量(所有节点都需要执行) 修改zookeeper配置 添加z

    2024年02月06日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包