运行 map 任务会减慢 reduce 任务吗?我所说的放慢速度是指它们共享公共(public)资源吗?
最佳答案
当然,它们会以某种方式影响系统。它们都是在同一台机器上运行的 java 进程。然而,在当今的系统配置中,只要您不对插槽数量做一些愚蠢的事情,这就没什么大不了的。
每个 map 任务或 reduce 任务本身都不是多线程或多进程的,因此它大多只使用一个 CPU 核心。这就是为什么一般的经验法则是每个核心 1 个映射或减少插槽是有道理的。因此,如果您有 12 个核心,则可以执行 8 个映射槽和 4 个缩减槽之类的操作。
此外,这些任务将共享同一个磁盘,但这也没什么大不了的,因为系统通常有多个磁盘并且磁盘访问是突发的。
找出最佳配置的最好方法就是尝试不同的配置。设置槽数并不难,只需对其进行调整,然后重新运行一些生产代表作业即可。
请注意,如果您一次只运行一个作业,则在映射器运行时,reducer 不会做太多事情。在这种情况下,它们不会真正影响彼此。更现实地说,您将有多个作业在运行,并且一个作业的 map 任务将与另一个作业的 reducer 同时运行。
关于hadoop - 在 map/reduce 之间共享资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877724/