概述
容错机制
- 一、技术层面
- HDFS的副本机制
- Yarn机制
- Zookeeper高可用
- 二、运行时异常
- 任务异常
- AppMaster异常
- NodeManager异常
- NameNode异常
一、技术层面
HDFS的副本机制
- 先说HDFS的副本机制,HDFS上的每一份文件,默认是存储3个副本。一般来说,这三个副本会存放在多个地方,比如说同一个机房的不同机架,不同机房的机架,避免意外发生遭到团灭。在写入数据时,如果写入的DataNode挂掉,则整个任务失败;读取数据时,如果读取的DataNode挂掉,则通过Yarn寻找另一台网络拓扑距离最近的机器上的备份数据进行断点续传。
Yarn机制
- Yarn则是一套集群资源管理和调度系统,由ResourceManager和NodeManager组成,NodeManager负责监控每一台设备上的系统资源状况,包括CPU、内存、当前节点上运行的任务、存储的文件块信息。NM定期向RM发送心跳包,如果超过10分钟没有收到,RM会认为这个节点已经挂了,然后启动复制操作,把低于指定值的副本重新再次备份
Zookeeper高可用
- 高可用集群HA Cluster:如果NameNode挂掉,则整个集群都会挂掉。因此HDFS提供了HA架构,借助Zookeeper来完成对NameNode的管理。
- 集群启动两个NameNode,其中一个是Active状态,另一个是standby待命状态。两个NN之间通过共享存储系统实现共享NameNode中的元数据同步。当ZK和NN之间通过心跳机制检测到Active状态的NN出现异常,比如说出现内存溢出、挂掉等意外情况,则另一个standby在信息完全同步后,状态切换为active。
二、运行时异常
任务异常
- ApplicationMaster负责任务的容错,当某个MapTask失败,ApplicationMaster通过与RM之间的心跳机制反馈任务失败信息,然后RM会给该任务重新分配Container,ApplicationMaster把任务信息传给该节点上的NodeManager并通知其启动任务。
- 一般来说,重启任务的节点会是一个新的节点。默认情况下一个任务重启超过4次后,就会宣告整个作业失败。最多尝试次数可以通过set mapreduce.map.maxattempts=n来设置。
- 如果少数几个任务失败后该作业的一些结果可能还是可用的,这种情况下可以设置允许任务失败的最大百分比来设置set mapreduce.map.failures.maxpercent=n%;
AppMaster异常
- ResourceManager负责ApplicationMaster的容错。当RM通过心跳机制检测到ApplicationMaster运行失败时,RM会重新分配Container资源并创建和启动一个新的ApplicationMaster。新的ApplicationMaster从HDFS上读取之前的状态并恢复,减少重新计算带来的开销。
NodeManager异常
- 如果NodeManager由于崩溃或运行非常缓慢而失败,就会停止向ResourceManager发送心跳信息(或发送频率很低)。如果10分钟内没有收到一条心跳信息,ResourceManager将会通知该NodeManager并将其从节点池中移除以调度启用容器。
- 在失败的NodeManager上运行的所有任务或AppMaster都用前两节描述的机制进行恢复。对于那些曾经在失败的NodeManager上运行且成功完成的MapTask,如果属于未完成的作业,那么AppMaster会安排他们重新运行。因为这些MapTask的中间输出保存在失败的NodeManager的本地文件系统中,可能无法被ReduceTask访问。
- 如果应用程序的运行失败次数过高,那么NodeManager可能会被拉黑。对于MapReduce,如果一个NodeManager上有超过三个任务失败,AppMaster就会尽量将任务调度在不同的节点上。
NameNode异常
- 高可用集群HA Cluster:以上的所有容错都是基于DataNode的故障问题进行考虑的,但是如果NameNode挂掉,则整个集群都会挂掉。因此HDFS提供了HA架构,借助Zookeeper来完成对NameNode的管理。
- 集群启动两个NameNode,其中一个是Active状态,另一个是standby待命状态。两个NN之间通过共享存储系统实现共享NameNode中的元数据同步。当ZK和NN之间通过心跳机制检测到Active状态的NN出现异常,比如说出现内存溢出、挂掉等意外情况,则另一个standby在信息完全同步后,状态切换为active。
最后
以上就是唠叨故事为你收集整理的Hadoop的容错机制一、技术层面二、运行时异常的全部内容,希望文章能够帮你解决Hadoop的容错机制一、技术层面二、运行时异常所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复