您好,欢迎访问一九零五行业门户网

YARN ResourceManager HA配置的图文代码详解

yarn中的资源管理器(resource manager)负责整个系统的资源管理和调度,并内部维护了各个应用程序的applictionmaster信息,nodemanager信息,资源使用信息等。在2.4版本之后,hadoop common同样提供了ha的功能,解决了这样一个基础服务的可靠性和容错性问题
yarn中的资源管理器(resource manager)负责整个系统的资源管理和调度,并内部维护了各个应用程序的applictionmaster信息,nodemanager信息,资源使用信息等。在2.4版本之后,hadoop common同样提供了ha的功能,解决了这样一个基础服务的可靠性和容错性问题。其架构如下:
rm ha与nn ha有诸多相同之处(namenode ha配置详解 ):
(1). active/standby架构,同一时间只有一个rm处于活动状态(如上图所示)。
(2). 依赖zookeeper实现。手动切换使用yarn rmadmin命令(类似hdfs haadmin命令),而自动故障转移使用zkfailovercontroller。但不同的是,zkfc只作为rm中一个线程而非独立的守护进程来启动。
(3). 当存在多个rm时,客户端使用的yarn-site.xml需要指定rm的列表。 客户端, applicationmasters (ams)和nodemanagers (nms) 会以轮训的方式寻找活动状态的rm,也就是说am
s和nms需要自己提供容错机制。如果当前活动状态的rm挂掉了,那么会继续使用轮训的方式找到新的rm。这种逻辑的实现需要在yarn.client.failover-proxy-provider中指定使用的类:org.apache.hadoop.yarn.client.rmfailoverproxyprovider
此外,新的rm可以恢复之前rm的状态(详见resourcemanger restart )。当启动rm restart,重启后的rm就加载之前活动rm的状态信息并继续之前rm的操作,这样应用程序定期执行检查点操作,就可以避免工作内容的丢失。在active/standby的rm中,活动rm的状态数据需要active和standby都能访问,使用共享文件系统方法(filesystemrmstatestore )或者zookeeper方法(zkrmstatestore)。后者在同一时间只允许一个rm有写入权限。
一个常见的yarn rm ha配置如下:
yarn.resourcemanager.ha.enabled true yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 debugo01 yarn.resourcemanager.hostname.rm2 debugo02 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.zkrmstatestore yarn.resourcemanager.zk-address debugo01:2181,debugo02:2181,debugo03:2181 for multiple zk services, separate them with comma yarn.resourcemanager.cluster-id yarn-ha yarn.resourcemanager.ha.automatic-failover.enabled true enable automatic failover; by default, it is enabled only when ha is enabled. yarn.resourcemanager.ha.automatic-failover.zk-base-path /yarn-leader-election optional setting. the default value is /yarn-leader-election yarn.client.failover-proxy-provider org.apache.hadoop.yarn.client.rmfailoverproxyprovider
同时,yarn rm服务监听地址的设置要修改成下面的方式:
yarn.resourcemanager.address.rm1 debugo01:8132 yarn.resourcemanager.address.rm2 debugo02:8132 yarn.resourcemanager.scheduler.address.rm1 debugo01:8130 yarn.resourcemanager.scheduler.address.rm2 debugo02:8130 yarn.resourcemanager.resource-tracker.address.rm1 debugo01:8131 yarn.resourcemanager.resource-tracker.address.rm2 debugo02:8131 yarn.resourcemanager.webapp.address.rm1 debugo01:8188 yarn.resourcemanager.webapp.address.rm2 debugo02:8188
启动rm
start-yarn.sh
在standby的节点单独启动rm(也可使用start-yarn.sh脚本)
检查状态:
$ yarn rmadmin -getservicestate rm1 active $ yarn rmadmin -getservicestate rm2 standby
访问rm2节点的nodemanager会提示
this is standby rm. redirecting to the current active rm: http://debugo01:8188/cluster/apps
下面kill掉rm1的resourcemanager
[hadoop@debugo01 logs]$ yarn rmadmin -getservicestate rm2 active [hadoop@debugo01 logs]$ yarn rmadmin -getservicestate rm1 14/09/14 03:08:23 info ipc.client: retrying connect to server: debugo01/192.168.46.201:8033. already tried 0 time(s); retry policy is retryuptomaximumcountwithfixedsleep(maxretries=1, sleeptime=1000 milliseconds) operation failed: call from debugo01/192.168.46.201 to debugo01:8033 failed on connection exception: java.net.connectexception: connection refused; for more details see: http://wiki.apache.org/hadoop/connectionrefused
以上就是yarn resourcemanager ha配置的图文代码详解的内容。
其它类似信息

推荐信息