如何在MapReduce on Yarn集群中进行容错处理?
MapReduce on Yarn集群中的容错处理
1 MapReduce on Yarn的架构
1.1 MapReduce on Yarn的简介
YARN(Yet Another Resource Negotiator )是Hadoop的一个发展组件,它提供了一种资源管理系统,它通过在集群上分配、使用和监视应用程序资源的方式,可以让多个应用程序同时运行在一个复杂的硬件环境中。MapReduce on Yarn把Hadoop分布式系统和YARN集群管理系统结合起来,可以把MapReduce计算模型移植到Hadoop的分布式管理环境中,允许用户在统一的管理环境中进行大规模分布式计算工作。
1.2 MapReduce on Yarn的集群架构
MapReduce on Yarn的集群由三个部分构成,ResourceManager,NodeManager和ApplicationMaster。
ResourceManager是Yarn集群的核心,它负责资源管理,管理集群中的资源和任务,监控集群中的节点状态,并负责合理地将任务分布给各个节点。
NodeManager是Yarn节点管理器,它安装在每一个节点上,负责管理节点上的任务和资源,并将任务状态反馈给ResourceManager。
ApplicationMaster是每个应用程序的任务调度组件。ApplicationMaster会调度任务,分配资源,监控任务状态,并将任务状态反馈给ResourceManager。
2 MapReduce on Yarn的容错
2.1 Job容错
当MapReduce on Yarn的一个Job运行的时候,会有多个Task运行在集群中,如果其中的一个Task失败了,那么JobTracker就会重新调度这个Task,以确保Job的正确性。
2.2 Task容错
MapReduce on Yarn的Task容错是通过TaskTracker的心跳机制来完成的,当TaskTracker发送心跳给JobTracker,JobTracker就会重新启动和调度失败的Task。
2.3 TaskTracker容错
MapReduce on Yarn会定期检查TaskTracker的状态,如果发现TaskTracker失败了,JobTracker就会重新将任务分配给另外一个TaskTracker。
3 MapReduce on Yarn的容错操作实例
3.1 利用Yarn的容错机制
如果MapReduce on Yarn的一个任务失败了,那么Yarn的ResourceManager会根据任务的配置文件,重新派发新的Task到其他节点去,以完成容错的操作。
3.2 利用MapReduce API
我们可以使用MapReduce API中提供的容错操作,比如重试机制或者超时机制,通过设置重试或者超时时间,可以使得MapReduce on Yarn自动对失败的Task进行重试或者超时处理。
3.3 利用定制化容错
我们可以根据实际情况,使用定制化的容错策略,以实现更好的容错处理。定制化容错一般包括两种容错方式,一种是恢复容错,另一种是错误容错。
恢复容错会尝试恢复Task失败时的状态,而错误容错则是尝试忽略出现的错误,并将其转为可接受的形式,以确保任务正常执行。