为什么Map程序的运行时间应该超过1分钟?

to94eoyn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(429)

我从许多博客/网页上读到
Map器的运行时间应大于x分钟
我知道在设置Map器的过程中会有一些开销,但是这是如何计算的呢?为什么在x分钟之后,开销是合理的?当我们谈到开销时,hadoop的开销是什么?

zu0ti5jz

zu0ti5jz1#

这不是一个硬代码规则,但有道理。在后台,在启动Map程序之前会处理很多小进程。它的初始化,其他东西除了真正的处理本身需要10-15秒。因此,为了减少分裂的数量,进而减少Map器计数,maxsplitsize可以设置为更高的值,这就是博客所传达的。如果我们不能做到这一点。下面是mr框架在创建Map器时必须处理的开销。
正在计算该Map器的拆分。
jobtracker中的作业调度器必须创建一个分离Map任务,这会稍微增加延迟。
当涉及到工作分配时,jobtracker必须根据其数据位置寻找tasktracker。这将再次涉及在tasktracker中创建本地临时目录,该目录将由该Map器的安装和清理任务使用,例如,在设置中,如果我们从分布式缓存中读取数据并将其放入hashmap中,或者初始化并清理Map器中的某些内容,并且如果已经有足够的map和reduce任务在tasktracker中运行,这将增加tasktracker的开销。
在最坏的情况下,固定Map任务的数量是满的,那么jt将不得不寻找一个不同的tt,这将导致远程读取。
此外,tt只会在3秒内向jt发送一次心跳信号,这将导致作业初始化延迟,因为tt必须联系jt才能运行作业并发送完成状态。
不幸的是,如果Map程序失败,那么在最终失败之前,该任务将运行3次。

相关问题