我想问几个问题来理解YARN的工作:
答案 0 :(得分:2)
请参阅Hadoop权威指南教科书...除此之外,apache网站上有很多信息。
容器大小不固定,它是根据资源管理器的要求动态分配的。
从开发人员的角度来看,同样的旧map-reduce将在YARN上运行。
ResourceManager失败
在YARN框架的初始版本中,ResourceManager故障意味着整个集群故障,因为它是单点故障。 ResourceManager存储状态 集群,例如提交的应用程序的元数据,集群的信息 资源容器,有关群集的常规配置的信息等。 因此,如果ResourceManager因某些硬件故障而关闭,那么 没有办法避免手动调试集群并重新启动 ResourceManager中。在ResourceManager关闭期间,群集是 不可用,一旦重新启动,所有作业都需要重新启动,因此半完成的作业会丢失所有数据,需要重新启动。简而言之,重启ResourceManager用于重启所有正在运行的ApplicationMaster。最新版本的YARN以两种方式解决了这个问题。一种方法是创建一个主动 - 被动的ResourceManager体系结构,这样当一个体系结构发生故障时,另一个体系结构变为活动状态并负责集群。另一种方法是使用Zookeeper ResourceManager仲裁,以便ResourceManager状态存储在Zookeeper外部,并且 ResourceManager处于活动状态,一个或多个ResourceManagers处于被动模式,等待某些事情发生,使其处于活动状态。
ApplicationMaster失败 当ApplicationMaster失败时,ResourceManager只是启动另一个容器,其中运行一个新的ApplicationMaster以进行另一次应用程序尝试。这是新ApplicationMaster的责任 恢复较旧的ApplicationMaster的状态,只有当ApplicationMasters将其状态保存在外部位置以便可以将其用于将来参考时,这才有可能。 ApplicatoinMaster会将其状态存储到持久磁盘中,从而可以恢复所有状态直到失败。
NodeManager失败 如果节点管理器出现故障,则ResourceManager会使用超时检测到此故障(即停止从NodeManager接收心跳)。然后,ResourceManager从其可用NodeManager的池中删除NodeManager。它还会杀死在该节点上运行的所有容器。报告所有正在运行的AM的失败。然后,AM负责对节点故障做出反应,通过重做故障期间在该节点上运行的任何容器完成的工作。
容器故障
容器故障将由节点管理器报告给资源管理器,资源管理器会将其通知给Application Master。现在Application将重启容器。