【运维】yarn高可用配置详解

文章目录

    • 一. 架构
      • 1. RM故障转移( Failover)
        • 1.1. 手动切换故障转移
        • 1.2. 自动故障转移
        • 1.3. RM故障转移的客户端:ApplicationMaster和NodeManager
      • 2. 恢复以前的活动RM的状态
    • 二、部署方式
      • 1. 配置说明
      • 2. 配置实例
      • 3. Admin commands
        • a. 检查状态
        • b. 手动切换主备

本文主要描述了:

  1. yarn HA架构细节:active/standby、故障转移的方式、故障转移客户端
  2. 怎么恢复之前提交的任务
  3. 怎么部署配置YARN HA
  4. 手动切换主备

一. 架构

在这里插入图片描述

 

1. RM故障转移( Failover)

ResourceManager HA通过Active / Standby体系结构实现-在任何时间,RM之一都处于活动状态,并且一个或多个 RM处于Standby模式,等待切换为active。启用自动故障转移后,通过admin(通过CLI:手动)或 failover-controller (自动) 将RM转换为active。

 

1.1. 手动切换故障转移

如果未启用自动故障转移,管理员必须通过手动的方式将其中一个RM转换为Active。要从一个RM到另一个RM进行故障转移,应该先将Active-RM转换为Standby,然后将Standby-RM转换为Active。所有这些可以使用“ yarn rmadmin ” CLI完成

 

1.2. 自动故障转移

RM可以选择嵌入基于Zookeeper的ActiveStandbyElector来确定哪个RM是Active。当Active发生故障或无响应时,另一个RM被自动选为Active,然后接管。请注意,无需像HDFS那样运行单独的ZKFC守护程序,因为嵌入在RM中的ActiveStandbyElector充当了故障检测器和领导选举人,而不是单独的ZKFC守护进程。

 

1.3. RM故障转移的客户端:ApplicationMaster和NodeManager

当有多个RM时,预计客户端和节点使用的配置(yarn-site.xml)会列出所有RM。客户端,ApplicationMaster(AM)和NodeManager(NM)尝试以循环方式连接到RM,直到它们到达活动RM。如果活动服务器出现故障,他们将继续轮询,直到命中“新”活动服务器为止。

 

默认重试逻辑实现为org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider
可以通过实现org.apache.hadoop.yarn.client.RMFailoverProxyProvider并设置yarn.client.failover-proxy-provider:(实现类名)来覆盖默认重试逻辑。

 

2. 恢复以前的活动RM的状态

启用yarn.resourcemanager.recovery.enabled(ResourceManagerRestart)后,RM变为active后,它会加载RM的内部状态,并尽可能地处理之前active未处理的请求。
对于之前提交给RM的托管任务,晋升的RM都会重新尝试运行这些任务。
 
Applications可以定期检查来避免丢失任何任务。

RMStateStore

  • Active RM和Standby RM要都能访问状态存储。
  • 目前,对RMStateStore的实现有两种FileSystemRMStateStore和ZKRMStateStore。
  • ZKRMStateStore隐式允许在任何时间点对单个RM进行写访问,因此建议在HA群集中使用该存储。使用ZKRMStateStore时,无需使用单独的防护机制来解决潜在的裂脑情况,在这种情况下,多个RM可以潜在地充当主动角色。

tips

使用ZKRMStateStore时,建议不要在Zookeeper群集上设置“ zookeeper.DigestAuthenticationProvider.superDigest ”属性,以确保Zookeeper管理员无法访问YARN应用程序/用户凭证信息。

 

二、部署方式

1. 配置说明

配置属性描述
hadoop.zk.addressZK仲裁的地址。用于状态存储和leader选举。
yarn.resourcemanager.ha.enabled启用RM HA。
yarn.resourcemanager.ha.rm-idsRM的逻辑ID列表。例如“ rm1,rm2”。
yarn.resourcemanager.hostname.rm-id对于每个_rm-id_,指定RM对应的主机名。或者,可以设置RM的每个服务地址。
yarn.resourcemanager.address.rm-id对于每个rm-id,请指定host:port以便客户端提交作业。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名。rm-id
yarn.resourcemanager.scheduler.address.rm-id对于每个rm-id,为ApplicationMasters指定调度程序host:port以获得资源。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名。rm-id
yarn.resourcemanager.resource-tracker.address.rm-id对于每个rm-id,请指定host:port以供NodeManagers连接。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名。
yarn.resourcemanager.admin.address.rm-id对于每个rm-id,为管理(administrative)命令指定host:port。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名。
yarn.resourcemanager.webapp.address.rm-id对于每个rm-id,指定RM Web应用程序对应的host:port。如果将yarn.http.policy设置为HTTPS__ONLY,则不需要此选项。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名。rm-id
yarn.resourcemanager.webapp.https.address.rm-id对于每个_rm-id_,请指定RM https Web应用程序对应的host:port。你不需要这个,如果你设置yarn.http.policy到HTTP_ONLY。如果设置,将覆盖yarn.resourcemanager.hostname中设置的主机名。
yarn.resourcemanager.ha.id在集合中标识RM。可选,不是必须;但是,如果已设置,必须确保所有的RM在配置中都具有自己的ID。
yarn.resourcemanager.ha.automatic-failover.enabled启用自动故障转移;默认情况下,仅在启用HA时启用它。
yarn.resourcemanager.ha.automatic-failover.embedded启用自动故障转移后,请使用leader-elector选择active RM。默认情况下,仅在启用HA时启用它。
yarn.resourcemanager.cluster-id标识集群。由选民使用,以确保RM不会接替另一个群集的活动状态。
yarn.client.failover-proxy-provider客户端,AM和NM用于故障转移到活动RM的类。
yarn.client.failover-no-ha-proxy-providerFailoverProxyProvider应该尝试故障转移的最大次数。
yarn.client.failover-sleep-base-ms用于计算故障转移之间指数延迟的睡眠基准(以毫秒为单位)。
yarn.client.failover-sleep-max-ms故障转移之间的最大睡眠时间(以毫秒为单位)。
yarn.client.failover-retries每次尝试连接到ResourceManager的重试次数。
yarn.client.failover-retries-on-socket-timeouts套接字超时时每次尝试连接到ResourceManager的重试次数。
yarn.client.failover-max-attempts故障转移最多尝试次数。

 

2. 配置实例

<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>master1</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm2</name><value>master2</value>
</property>
<property><name>yarn.resourcemanager.webapp.address.rm1</name><value>master1:8088</value>
</property>
<property><name>yarn.resourcemanager.webapp.address.rm2</name><value>master2:8088</value>
</property>
<property><name>hadoop.zk.address</name><value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

 

3. Admin commands

yarn rmadmin有几个关于RM状态、健康状况、切换Active/Standby的命令:

HA id 由 yarn.resourcemanager.ha.rm-ids 设置决定

a. 检查状态
 $ yarn rmadmin -getServiceState rm1active$ yarn rmadmin -getServiceState rm2standby
b. 手动切换主备
 $ yarn rmadmin -transitionToStandby rm1

Automatic failover is enabled for org.apache.hadoop.yarn.client.RMHAServiceTarget@1d8299fd
Refusing to manually manage HA state, since it may cause a split-brain scenario or other incorrect state. If you are very sure you know what you are doing, please specify the forcemanual flag.

RMHAServiceTarget 不允许手动管理HA状态,因为这样可能造成脑裂。如果你确定,可以使用强制切换标识 forcemanual ,来切换主备。

 

参考: https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316201.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2017 搭建opencv工程

VS2017 搭建opencv工程 opencv在处理图像方面具有很强的能力&#xff0c;在使用opencv之前先需要造好轮子。 1、opencv 官网 &#xff0c;下载对应的资源文件包。 根据自身选择。下载包之后&#xff0c;解压。分为build和sources source目录下分别存放&#xff1a; modules: …

Mysqld的关键优化参数

skip-name-resolve 现象 mysql连接很慢&#xff0c;登陆到服务器上查看服务器日志都是正常的&#xff0c;无可疑记录&#xff0c;登陆到mysql服务器上&#xff0c;查看下进程&#xff0c;发现有很多这样的连接&#xff1a; 218 | unauthenticated user | 192.168.10.6:44500 |…

el-radio-button自适应充满盒子的写法

业务场景&#xff1a;当盒子较宽时&#xff0c;希望 el-radio-button 自适应充满盒子。 el-radio-button 自适应充满盒子的写法 <el-form :inline"true" :model"searchForm"><el-form-item style"display: flex; align-items: center;"…

CSS animation动画和关键帧实现轮播图效果HTML

CSS animation动画和关键帧实现轮播图效果HTML 这轮播图效果使用h5和css3实现效果&#xff0c;不需要js控制&#xff0c;但是其中的缺点就是不能使用鼠标进行切换效果。 具有代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset&quo…

软件工程期末总结

软件工程期末总结 软件危机出现的原因软件生命周期软件生命周期的概念生命周期的各个阶段 软件开发模型极限编程 可行性研究与项目开发计划需求分析结构化分析的方法结构化分析的图形工具软件设计的原则用户界面设计结构化软件设计面向对象面向对象建模 软件危机出现的原因 忽视…

贵州贵阳二手房数据集可视化大屏全屏系统毕业设计应用

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

Python入门第09篇(conda虚拟环境)

前言 一开始默认安装了最新的Python3.12&#xff0c;搞的倒也顺手&#xff0c;看别人会有不兼容的问题&#xff0c;在我这开始没出现。不过坑总会踩到的&#xff0c;这不就出问题了。pip install一个包一直不行&#xff0c;问了下度娘&#xff0c;说由于这个包使用了一些新技术…

yolov5 损失函数

yolov5有三个损失函数分别是回归损失、置信度损失、分类损失 回归损失用的是CIOU loss 置信度和分类损失用的是BCE loss &#xff08;1&#xff09;对比L2损失&#xff0c;Iou和GIou具有尺度不变性&#xff0c;不会说输入的框子大loss就越大。 &#xff08;2&#xff09;对比…

OpenGL纹理转换谜团:纹理写入FRAMEBUFFER后的镜像现象

在OpenGL中&#xff0c;最近将一个 GL_TEXTURE_2D 纹理写入到 GL_FRAMEBUFFER &#xff0c;然后从GL_FRAMEBUFFER读取为GL_TEXTURE_2D纹理后&#xff0c;发现GL_TEXTURE_2D纹理变为了输入纹理的镜像纹理。效果图如下图所示。 本文将探讨这个问题的原因&#xff0c;并提出两种解…

Django(五)

员工管理系统 1.新建项目 2.创建app python manage.py startapp app012.1 注册app 3. 设计表结构&#xff08;django&#xff09; from django.db import modelsclass Department(models.Model):""" 部门表 """title models.CharField(verbos…

M3u8视频地址如何转为mp4视频

在当今数字化的时代&#xff0c;视频格式的转换已成为日常需求。M3u8格式的视频由于其分段的特性&#xff0c;常常给播放和编辑带来不便。而MP4格式则因其通用性和高质量而广受欢迎。那么&#xff0c;如何将M3u8视频地址转换为MP4格式呢&#xff1f;接下来&#xff0c;我们将为…

安装elasticsearch、kibana、IK分词器、扩展IK词典

安装elasticsearch、kibana、IK分词器、扩展IK词典 后面还会安装kibana&#xff0c;这个会提供可视化界面方面学习。 需要注意的是elasticsearch和kibana版本一定要一样&#xff01;&#xff01;&#xff01; 否则就像这样 elasticsearch 1、创建网络 因为我们还需要部署k…