hadoop - 在 map/reduce 之间共享资源

标签 hadoop hbase

运行 map 任务会减慢 reduce 任务吗?我所说的放慢速度是指它们共享公共(public)资源吗?

最佳答案

当然,它们会以某种方式影响系统。它们都是在同一台机器上运行的 java 进程。然而,在当今的系统配置中,只要您不对插槽数量做一些愚蠢的事情,这就没什么大不了的。

每个 map 任务或 reduce 任务本身都不是多线程或多进程的,因此它大多只使用一个 CPU 核心。这就是为什么一般的经验法则是每个核心 1 个映射或减少插槽是有道理的。因此,如果您有 12 个核心,则可以执行 8 个映射槽和 4 个缩减槽之类的操作。

此外,这些任务将共享同一个磁盘,但这也没什么大不了的,因为系统通常有多个磁盘并且磁盘访问是突发的。

找出最佳配置的最好方法就是尝试不同的配置。设置槽数并不难,只需对其进行调整,然后重新运行一些生产代表作业即可。

请注意,如果您一次只运行一个作业,则在映射器运行时,reducer 不会做太多事情。在这种情况下,它们不会真正影响彼此。更现实地说,您将有多个作业在运行,并且一个作业的 map 任务将与另一个作​​业的 reducer 同时运行。

关于hadoop - 在 map/reduce 之间共享资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877724/

相关文章:

Hadoop:延迟初始化映射器任务

hbase - hbase 中是否有最大版本号?

hadoop - 运行 Apache Pig 脚本时如何查找 jar 依赖项?

windows - 在 Windows 上生成 kerberos keytab 文件需要什么?

hadoop - 如何使用 Map/Reduce 选择随机(小)数据样本?

java - 在 RDD 中存储数组的有效方法

java - 无法确定任务 ':gobblin-distribution:buildDistributionTar' 的依赖关系

java - 如何在我的 Hadoop Mapper 中将 String 转换为 Writable 对象

hadoop - 如何使用 HBase shell 获取多个列

hadoop - hadoop的矩阵向量乘法:不同文件中的向量和矩阵