YARN中的失败分析
YARN中的失败分析
对于在YARN中运行的MapReduce程序,需要考虑以下几种实体的失败
任务、application master、节点管理器、资源管理器
1. 任务运行失败
任务运行失败类似于MapReduce1的情况。JVM的运行时异常和突然退出被反馈给application master,该任务尝试被标记为失败。类似的,通过在umbilical channel上的ping缺失(由mapreduce.task.time设定超时值),application master会注意到挂起的任务,任务尝试再次被标记为失败。
4次尝试后任务标记为失败(map任务由mapreduce.map.maxattemps设置,reduce任务由mapreduce.reduce.maxattempts设置)。如果一个作业中超过mapreduce.map.failures.maxpercent的map任务或超过mapreduce.reduce.failures.maxpercent的reduce任务运行失败,name整个作业就失败了。
2. application master运行失败
YARN中的应用程序在运行失败的时候有几次尝试机会,就像MapReduce任务在遇到硬件或网络故障时要进行几次尝试一样。在默认情况下,只要应用程序运行失败一次就会被标记为失败,但我们可以设置yarn.resourcemanager.am.max-retries属性增加允许失败的次数。
Application master向资源管理器发送周期性的心跳,当application master发生故障时,资源管理器将检测到该故障并在一个新的容器(由节点管理器管理)中开始一个新的master实例。MapReduce application master可以恢复故障应用程序所运行任务的状态,使其不必重新运行。默认情况下是不能恢复的,因此故障application master将重新运行它们的所有任务,但我们可以设置yarn.app.mapreduce.am.job.recovery.enable为true,启用这个功能。
客户端向application master轮询进度报告,如果它的application master运行失败,客户端就需要定位新的实例。在作业初始化期间,客户端向资源管理器询问并缓存application master的地址,使其每次需要向application master查询是不必重载资源管理器。但是,如果application master运行失败,客户端就会在发出状态更新请求时超时,这时客户端会返回资源管理器请求新的application master的地址。
3. 节点管理器运行失败
如果节点管理器失败,就会停止向资源管理器发送心跳信息并被移出可用节点资源管理器池。默认值为600000(10分钟)的属性yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms决定着资源管理器认为节点管理器失败之前的等待时间。
如果应用程序的运行失败次数过高,那么节点管理器可能会被拉黑。由application master管理黑名单,对于MapReduce,如果一个节点管理器上有超过三个任务失败,application master就会尽量将任务调度到不同的节点上。可以通过mapreduce.job.maxtaskfailures.per.tracker设置该阈值。
4. 资源管理器运行失败
资源管理器失败是非常严重的问题,没有资源管理器,作业和任务容器将无法启动。资源管理器的设计从一开始就通过使用检查点机制将其状态保存到持久性存储,从而实现从失败中恢复。
在资源管理器失败后,由管理员启动一个新的资源管理器实例并恢复到保存的状态。状态由系统中的节点管理器和运行的应用程序组成。(注意,任务并非资源管理器状态的组成部分,因为它们由application master管理。因此,存储的状态数量比jobtracker中的状态更好管理)
资源管理器使用的存储容量通过yarn.resourcemanager.store.class的属性进行配置。默认值为org.apache.hadoop.yarn.server.resourcemanager.recovery.MemStore,这保存在内存中,因此可操作性不是很高
YARN中的失败分析的更多相关文章
- Yarn之ResourceManager详细分析
一.概述 本文将介绍ResourceManager在Yarn中的功能作用,从更细的粒度分析RM内部组成的各个组件功能和他们相互的交互方式. 二.ResourceManager的交互协议与基本职 ...
- YARN DistributedShell源码分析与修改
YARN DistributedShell源码分析与修改 YARN版本:2.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述 2 YARN Distrib ...
- Hadoop YARN中内存的设置
在YARN中,资源管理由ResourceManager和NodeManager共同完成,其中,ResourceManager中的调度器负责资源的分配,而NodeManager则负责资源的供给和隔离.R ...
- YARN中自己总结的几个关键点
以前在Hadoop 1.0中JobTracker主要完成两项功能:资源的管理和作业控制.在集群规模过大的场景下,JobTracker 存在以下不足: 1)JobTracker 单点故障. 2)JobT ...
- Yarn中的几种状态机
1 概述 为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示.什么是状态机? 如果一个对象,其构成为若干个状态,以及触发这些状态发生相互转移 ...
- Effective Java 第三版——75. 在详细信息中包含失败捕获信息
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- Yarn中几个专用名称
1. ResourceManager(RM) RM是一个全局的资源管理器,负责整个系统的资源管理和分配.它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Appli ...
- YARN 中的应用程序提交
YARN 中的应用程序提交 本节讨论在应用程序提交到 YARN 集群时,ResourceManager.ApplicationMaster.NodeManagers 和容器如何相互交互.下图显示了一个 ...
- Guava com.google.common.base.Stopwatch Spark程序在yarn中 MethodNotFound
今天在公司提交一个Spark 读取hive中的数据,写入JanusGraph 的app,自己本地调试没有问题,放入环境中提交到yarn 中时,发现app 跑不起. yarn 中日志,也比较明显,app ...
随机推荐
- python学习【第五篇】python函数 (二)
一.装饰器 装饰器:本质就是函数,功能是为其它函数添加附加功能 装饰器的原则: 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器 = 高阶函数 + 函数嵌套 + 闭包 ...
- Minimal Steiner Tree ACM
上图论课的时候无意之间看到了这个,然后花了几天的时间学习了下,接下来做一个总结. 一般斯坦纳树问题是指(来自百度百科): 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种.最小生成树是在 ...
- php5.4新特性实践
本机安装的是wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24-32b.exe集成包 自带了php5.4 1. 数组写法 定义一个数组 过去: $arr = ...
- CSV导出
CSV 导入导出工具类 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; impor ...
- mysql-font的理解
mysql-front是为mysql制作的一种图形化界面工具,可以管理和操作数据库,比如建表,修改数据,拖拽方式的数据库和表格,可编辑/可增加/删除的域,可编辑/可插入/删除的记录,可显示的成员,可执 ...
- JavaScript数据结构与算法-栈练习
栈的实现 // 栈类 function Stack () { this.dataStore = []; this.top = 0; // 栈顶位置 相当于length,不是索引. this.push ...
- go语言之并发编程同步一
前面介绍了采用go语法的并行操作以及channel.既然是并行操作,那么就涉及到数据原子性以及同步的问题.所以在Go里面也需要采用同步的机制. 互斥锁: 由标准库代码包sync中的Mutex结构体类型 ...
- windows下redis的安装和启动
Rides: //cmd管理员进入 // 运行 : redis-cli.exe //报错 :Redis (error) NOAUTH Authentication required.解决方法 // ...
- 006-搭建框架-实现AOP机制【三】AOP技术
2.3.spring+aspectj Spring在集成了aspectj后,同时也保留了以上的切面与代理的配置方式. 将Spring与aspectj集成与直接使用aspectj不同,不需要定义Aspe ...
- python基础25 -----python高级用法
一.Event 1.为什么会有Event? 线程的一个关键特性就是每个线程的运行都是独立运行且状态不可预测.如果程序中的线程需要通过别的线程的状态来判断自己线程中的 某个程序是否需要执行,那么Even ...