1.1 失败
1.1.1 任务失败
Map和reduce任务失败:Map或者reduce任务有缺陷,抛出异常,JVM会会向applicationmaster 发出错误报告,applicationmaster将任务标记为failed,将错误报告写入用户日志,释放资源。
Stream任务失败:Streaming任务以非零状态码退出,则标记为失败,属性stream.non.zero.exit.is.failure属性设置为true,才会触发。
Jvm失败:Jvm软件缺陷突然退出,节点管理器会发现进程一退出,通知applicationmaster标记任务失败。
任务超时失败:applicationmaster在一段时间内没有收到进度更新,则将任务标记失败,超时时间通过mapreduce.task.timeout设置,为0表示无超时限制,这样会导致挂起的任务无法结束,释放资源。
任务重试:任务失败后,application master会尽量安排在其他节点管理器上再次运行该任务,失败次数超过mapreduce.map.maxattempts属性设置的值(默认4)时,整个作业就会失败。如果不希望单个任务失败, 就判定整个作业失败,可以设置失败比例,mapreduce.map.faileures.maxpercent和mapreduce.reduce.failures.maxpercent属性设置比例。
任务中止:任务是推测副本或者是节点崩溃,application master会将任务标记为中止(killed),不计入尝试失败次数(maxattempts)。
1.1.2 Application master运行失败
Mapreduce Application master尝试次数由mapreduce.am.max-attempts属性控制,默认值是2。YARN对集群上运行的YARN application master的最大尝试次数也加了限制,由属性yarn.resourcemanage.am.max-attempts设置,默认为2,想增加Mapreduce Application master的尝试次数,先增加YARN的设置。
application master重启资源管理器和application master之间有心跳,application失败时,资源管理器 检测不到心跳,就在一个新的容器中开启新的application master,使用作业历史来恢复任务状态,不必重新运行,yarn.app.mapreduce.am.job.revocery.enable来开启这个恢复功能。
客户端重定向application master地址:客户端向application master轮循进度报告,初始化时,客户端缓存application master地址,断联后,客户端会向资源管理器重新请求application master的地址。
1.1.3 节点管理器运行失败
节点管理器和资源管理器之间也有心跳,如果10分钟(属性yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms设置,单位秒)。资源管理器将有问题的节点管理器从节电池中移除。移除的节点管理器上的作业未完成的,在其他节点上恢复,重新运行。
节点管理器黑名单:由applicationmaster管理黑名单,对于mapreduce任务,在一个节点管理器上有三个任务失败,就会尽量将任务调度到不同的节点上。属性mapreduce.job.maxtaskfailures.per.tracker设置阈值。
1.1.4 资源管理器失败
资源管理器失败重启资源管理器失败非常严重,作业和任务容器无法启动,失败的作业不能恢复。采用双机热备配置,获得高可用性。运行中的应用程序的信息存储在高可用的状态存储区(zookeeper或HDFS),资源管理器重启后,从存储区读取应用程序的信息,恢复失败的资源管理器的关键状态,重启所有应用程序的application master,次数不计入yarn.resourcemanage.am.attempts。节点管理器信息没有存储,她的信息可以被资源管理器重构。
故障转移控制器:资源管理器发生故障,自动将资源管理器从主机切换到备机。
也可配置为手动,但是不建议这样。
客户端和节点管理器自动连接资源管理器:客户端和节点管理器以轮询方式连接资源管理器,一直尝试连接,直到备份资源管理器替换故障的资源管理器,成功连接。
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: