设为首页 收藏本站
查看: 2672|回复: 0

[经验分享] 【Hadoop学习】Apache Hadoop ResourceManager HA

[复制链接]

尚未签到

发表于 2015-8-2 09:36:02 | 显示全部楼层 |阅读模式
  
  
  
  
  

简介

  
  本向导简述了YARN资源管理器的HA,并详述了如何配置并使用该特性。RM负责追踪集群中的资源,并调度应用程序(如MapReduce作业)。Hadoop2.4以前,RM是YARN集群中的单点故障。HA特性以Active/Standby RM对的形式对集群添加了冗余,从而消除了这种单点故障。
  

架构

  
DSC0000.png

RM故障恢复
  RM HA是通过Active/Standby架构来实现的——任何时刻,有一个RM是活跃的(active),其他RM处于等待模式(Standby),等待当前活跃RM发生故障时可以接管其工作。模式切换的触发源来自管理员(通过CLI)或者通过集成的故障恢复控制器(在自动故障恢复使能时才会启用)。
  

手动切换A/S模式及故障恢复
  当自动故障恢复没有使能时,管理员必须手动把某个RM切换成Active。为了从一个RM恢复到另个上,需要先把活跃的RM切换成Standby模式,再把其他某个Standby-RM切换成Active。所有操作都使用“yarn rmadmin”命令来完成。
  

自动故障恢复
  RM有一个选项可以嵌入ZooKeeper-based ActiveStandbyElector来确定应该激活哪个RM。当活跃的RM宕机或者无响应时,另一个RM就会自动被选出来成为活跃RM并接管集群。注意,对于HDFS HA的情形,无需运行独立的ZKFC进程,因为嵌入在RM中的ActiveStandbyElector会取代独立的ZKFC进程来检查故障并选举leader。
  

RM故障恢复期间,客户端、AM和NodeManager的行为
  存在多个RM时,客户端和节点所用的配置(yarn-site.xml)中列出了所有RM。客户端、AM和NodeManager都会以轮询的方式尝试连接这些RM直至找到活跃的RM为止。如果活跃的RM宕机了,那么它们就会继续轮询所有RM直至找到新的活跃RM为止。这种默认的重试逻辑是以org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider来实现的。你可以覆盖该逻辑,只需实现org.apache.hadoop.yarn.client.RMFailoverProxyProvider并设置属性yarn.client.failover-proxy-provider的值为你所实现的类名。
  

恢复先前活跃RM的状态
  在使能了ResourceManager Restart的情况下, 新的活跃RM加载RM内部状态,并根据RM 重启特性尽可能从先前的活跃RM退出时的位置继续执行。重新尝试抓取之前已提交给RM的每一个受管理的应用程序。应用程序可以周期性地检查以免丢失任何工作。状态存储必须对Active/Standby RM都是可见的。当前,有两种RMStateStore用于持久化——FileSystemRMStateStore和ZKRMStateStore。ZKRMStateStore隐含地允许在任何时刻写访问到单个RM,因此,它是HA集群中推荐使用的存储。使用ZKRMStateStore时,there is no need for a separate fencing mechanism to address a potential split-brain situation where multiple RMs can potentially assume the Active role.
  

部署

  

配置
  大部分故障恢复功能都可以使用各种配置属性来调整。下面是必要属性和重要属性列表。yarn-default.xml包含了完整的属性列表。详见yarn-default.xml,其中包含各属性的默认值。查看文档ResourceManger Restart 也可以获得有关创建state-store的指令。

配置属性描述
yarn.resourcemanager.zk-address ZK-quorum判决域主机地址。 用于state-store和嵌入式leader-election。
yarn.resourcemanager.ha.enabled 使能RM HA
yarn.resourcemanager.ha.rm-ids RM的逻辑ID列表。如,"rm1,rm2"
yarn.resourcemanager.hostname.rm-id为每一个rm-id与其相应的RM主机名。可以轮流设置每一个RM服务地址。
yarn.resourcemanager.ha.id 用于标识集群中的RM。该参数是可选的;然而,如果设置了该参数,管理员就必须确保所有RM都配置了各自的ID。
yarn.resourcemanager.ha.automatic-failover.enabled 使能自动故障恢复;默认情况下,只在HA使能时,它才会使能。
yarn.resourcemanager.ha.automatic-failover.embedded 当自动故障恢复被使能时,使用嵌入式leader-elector选出活跃的RM。默认情况下,只在HA使能时,它才会使能。
yarn.resourcemanager.cluster-id 标识集群。由elector用于确保当前集群的RM不会接管另一个集群的活跃RM的工作。
yarn.client.failover-proxy-provider 由客户端、AM和NM用于故障恢复为活跃RM时的类。
yarn.client.failover-max-attempts FailoverProxyProvider尝试故障恢复的最大次数。
yarn.client.failover-sleep-base-ms 用于计算两次故障恢复之间延时的休眠时间基数。单位毫秒。
yarn.client.failover-sleep-max-ms 两次故障恢复之间的最大休眠时间
yarn.client.failover-retries 每次尝试连接ResourceManager的重试次数。
yarn.client.failover-retries-on-socket-timeouts 每次尝试在socket超时时连接ResourceManager的重试次数。

示例配置
  以下是创建RM故障恢复最少所需的属性配置。




yarn.resourcemanager.ha.enabled
true


yarn.resourcemanager.cluster-id
cluster1


yarn.resourcemanager.ha.rm-ids
rm1,rm2


yarn.resourcemanager.hostname.rm1
master1


yarn.resourcemanager.hostname.rm2
master2


yarn.resourcemanager.zk-address
zk1:2181,zk2:2181,zk3:2181

  
  

管理命令
  “yarn rmadmin ”命令用几个与HA相关的选项来检查RM的健康状态,并切换Active/Standby模式。HA命令采用由yarn.resourcemanager.ha.rm-ids属性所设置的RM服务ID作为参数。



$ yarn rmadmin -getServiceState rm1
active
$ yarn rmadmin -getServiceState rm2
standby
  
  如果自动故障恢复被使能了,那么你就可以不用手动切换命令了。



$ 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.
  
  详见YarnCommands。
  

ResourceManager Web UI服务
  假设一个Standby RM上线并运行,那么该Standby RM会自动重定向所有的web请求到活跃的RM,除了RM各自的“About”页面。
  

Web 服务
  假设一个Standby RM上线并运行,那么以ResourceManager REST APIs描述的RM web服务在Standby RM上唤醒时,会被重定向到活跃的RM。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93203-1-1.html 上篇帖子: PHP+MySql+Apache +wordpress 安装 下篇帖子: Linux下安装、配置、启动Apache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表