yarn是如何执行一个mapreduce job的:
首先,Resource Manager会为每一个application在NodeManager里面申请一个container,然后在container里面启动一个application master。container在yarn中是分配资源的容器(内存、cpu、硬盘等),它启动时便会相应启动一个jvm。
然后,application master便陆续为application包含的每一个task向resource manager申请一个container。等每得到一个container后,便要求container所属的nodemanager将此container启动,然后在这个container里面执行相应的task。
等这个task执行完后,这个container便会被nodemanager收回,而container所拥有的jvm也相应地被退出。