登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
Kerberos服务介绍与部署
Hadoop HA简介
HDFS手动故障转移
HDFS手动故障转移示例
HDFS自动故障转移
YARN自动故障转移
Hadoop白名单与扩容
HDFS存储优化-纠删码
HDFS冷热存储分离
HDFS慢磁盘监控
HDFS小文件归档
源码分析-NN启动(一)
源码分析-NN启动(二)
源码分析-NN启动(三)
热门推荐>>>
中台架构
中台建设与架构
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Hadoop
>>
YARN自动故障转移
YARN自动故障转移
2020-07-03 23:24:21 星期五 阅读:2266
####原理 跟HDFS HA原理差不多,active和standby的resource manager都依赖zookeeper实时监控两台节点的状态,如果active出现故障,则zookeeper自动将standby 节点拉起 ####详细配置 `vim $HADOOP_HOME/etc/hadoop/yarn-site.xml` ``` <!-- 开启Yarn HA功能 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 定义yarn集群名称 --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yarn-cluster</value> </property> <!-- 开启Yarn HA功能 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!-- 定义两台resource manager(rm)的节点名称 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1, rm2</value> </property> <!-- 定义rm1节点的IP(或host) --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>master1</value> </property> <!-- 定义rm2节点的IP(或host) --> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>master2</value> </property> <!-- 定义rm1节点的web监控页面地址 --> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>master1:8088</value> </property> <!-- 定义rm2节点的web监控页面地址 --> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>master2:8088</value> </property> <!-- 定义zookeeper集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>zk1:2818,zk2:2181,zk3:2181</value> </property> <!-- (可选)开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- (可选)日志保留时间设置7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> ``` ####将配置文件分发到集群所有节点(重要) ####启动yarn 在rm1上启动ResourceManager(或者在rm2上启动也可以) ``` # rm1节点上操作 cd $HADOOP_HOME sbin/start-yarn.sh ``` 注意:此时只启动了rm1节点的进程,还需要去rm2节点启动RM进程 ``` # rm2节点上操作 cd $HADOOP_HOME sbin/yarn-daemon.sh start resourcemanager ``` 此时我们在浏览器访问rm1的8080端口,会看到yarn的监控web页面。访问rm2的8080端口,也会打开一样的yarn监控页面。其实,观察地址栏,当我们访问rm2的8080端口,会自动重定向到rm1的8080端口(前提是rm1被当前active节点) 当我们把rm1节点(active节点)的ResourceManager进程kill掉时,再访问rm1节点的8080端口,就会访问失败。虽然active节点被kill掉了,但是yarn集群是可用的(rm2节点会被zk自动切换为active,`对外暴露的不是具体的IP,而是配置文件里配置的集群名称`)。 那为什么访问rm1的8080端口时,不会自动重定向到rm2呢?因为rm1的Java进程已经被kill掉了。如果我们再次把rm1服务开启,访问rm1的8080端口时,就会自动重定向到rm2。这样就实现了active节点从rm1到rm2的自动转移。