Hadoop的资源调度器-Yarn的资源调度器的探索(二)

接着上文继续说;

Yarn资源管理器实际上是一个事件处理器,它需要处理来自外部的6中Scheduler-EventType类型的事件,并根据事件的具体含义进行相应的处理,

Hadoop的资源调度器-Yarn的资源调度器的探索(二)_第1张图片

NODE_REMOVED

表示集群移除了一个计算节点(也可能是节点故障或者管理员主动移除),资源调度器收到该事件时需要从可分配的资源总量中移除相应的资源量

NODE_ADDED

表示集群中增加一个计算节点,资源调度器收到该事件时需要将新增的资源量添加到可分配资源总量中

NODE_UPDATE

ResourceManager收到Nodemamanger通过心跳机制虎豹的消息后,会触发一个NODE_UPDATA的事件,有于此时可能有新的Container得到释放,因此该事件会触发资源分配,也就是该事件时6个事件中最重要的事件,他会触发资源调度最核心的资源分配机制

APPLACTION_ADDED

表示Resouercemanager收到一个新的Applaction,通常而言,资源管理器需要为每一个Applaction维护一个独立的数据结构,以便于统一管理和资源分配,资源管理器需要将该Applaction添加到相应的数据结构中。

APPLACTION_REMOVED

表示一个Applaction运行结束(可能成功也可能失败),资源管理器需要将该Applaction从相应的数据结构中删除

CONRAINER_EXPIRED

当资源调度器将一个Container分配给某个Applaction-Master后,如果该Applaction在一定时间间隔内没有使用该COntainer。则资源调度器就会对该Container进行(回收)再分配

 

资源表示模型

当前YARN支持内存和CPU两种资源类型的管理和分配,桶MRv1一样,YARN采用了动态资源分配机制,NodeManager启动时回想Resourcemanager注册,注册信息中包含了该节点可分配的内存和CPU,这两个值均可通过配置选项设置,具体如下;

Hadoop的资源调度器-Yarn的资源调度器的探索(二)_第2张图片

将某些节点加入(移除)黑名单,不再为自己分配这些节点上的资源,比如,ApplactionMaster发现某个基点上失败的任务个数过多,可请求将这个节点加入和名单,从而不再收到这个节点上的资源,过一段时间后,可请求将这个节点移除黑名单,从而可在此使用该节点上的资源。

资源调度模型;

1;双层资源调度模型

yarn采用双层资源调度模型,第一层中RM中的资源调度器将资源分配给给个AM,第二层中AM再进一步的将资源分配给他内部的各个任务,

yarn的资源分配过程是异步的,也就是说,资源调度器将资源分配给一个应用程序后,他并不会立刻push给对应的AM,而是暂时放到一个缓冲区中,等待AM通过周期性心跳主动来取,也就是说,YARN采用了pull-based通信模型,而不是push-based模型

YARN中,资源分配过程可概括为以下7个步骤;

Hadoop的资源调度器-Yarn的资源调度器的探索(二)_第3张图片

示意图;

Hadoop的资源调度器-Yarn的资源调度器的探索(二)_第4张图片

资源保障机制;

在分布式计算中,资源调度器需选择合适的资源保证这样的机制;当应用程序申请的资源暂时无法保证时,是优先为应用程序预留一个节点上的资源知道累计释放的空闲资源满足应用程序的需求(称为增量资源分配),还是暂时放弃当前资源直到出现一个节点剩余资源一次性满足应用程序需求(称为一次性资源分配)。这两种机制均存在缺点,对于增量资源分配而言,资源与刘会导致资源浪费,降低集群资源的利用率;而一次性资源分配则会产生饿死现象,即应用程序永远等不到满足资源需求节点的出现。

YARN采用了增量资源分配机制,尽管这种机制会造成浪费,但不会出现饿死现象

你可能感兴趣的:(个人心得)