5.4 容器可重用性提高任务的完成效率

操作场景

容器可重用性可以提高任务完成的速度。一些优势如下所示:

  1. 容器可重用性的特性是可作用于一些Map以及Reduce任务使之能快速的完成从而缩短HBase数据批量加载的时间。使用容器重用场景是map 或reduce task比较短120秒以内,同时单个task处理的数据量不大,不超过256MB。

  2. 减少容器调度的时间和初始化的时间。

一旦MapReduce作业被提交。它将分发至Map和Reduce任务中。然后应用管理器(以下简称AM)将执行如下操作。

a. AM将向资源管理器(RM)申请容器去执行任务。所有容器将一起完成这个请求。当RM指定了容器,AM将会联系节点管理器(NM)去执行容器。

b. 当容器启动完毕,NM将从AM拉取任务。

c. 当一个任务完成了,运行该任务的容器不会被立即终止。该容器将会试着向AM拉取下一个任务。如果AM能分配一个新任务给这个容器,该容器会自我清空以及初始化本身,以适用于新任务。

d. 如果AM不能分配新任务,容器会请求终止自己的运行。

操作步骤

参数名 描述
mapreduce.container.reuse.enabled 该配置项打开则容器可重用,反之容器不可重用。false
mapreduce.container.reuse.enforce.strict-locality 当启用了强制本地执行策略,该配置将告知是否遵循严格的数据本地化。如果启用,重用容器只能被分配至本节点上的任务。false

使用约束

当strict-locality为false时,容器重用的降低了数据本地性。

容器的重用将受限于job中任务的总数。容器不会被不同的job共享。

容器只能被尝试成功的任务重用,不能被尝试失败的任务重用。

任务应该设计成,当一个任务完成后堆栈里将不会存留任何对象。这对于容器重用中的数据一致性以及内存的优化非常重要。如果容器重用是激活状态,job将不会释放容器给资源管理器,除非所有属于该job的任务都完成了,这种情况会影响到公平调度的原则。

当强制本地执行策略被激活,只有本地节点的任务可以分配给可以重用的容器。

results matching ""

    No results matching ""