hadoop如何分配job来map和reduce

Posted

技术标签:

【中文标题】hadoop如何分配job来map和reduce【英文标题】:How does hadoop distribute jobs to map and reduce 【发布时间】:2015-06-06 04:19:46 【问题描述】:

谁能解释一下 hadoop 是如何决定将作业传递给 map 和 reduce 的。 Hadoop 作业被传递到 map 和 reduce,但我无法弄清楚它的完成方式。

提前致谢。

【问题讨论】:

【参考方案1】:

请参阅 Hadoop 权威指南,第 6 章,剖析 MapReduce 作业运行主题。快乐学习

【讨论】:

【参考方案2】:

来自 Apache mapreduce tutorial:

工作配置:

Job 表示 MapReduce 作业配置。

Job 是用户向 Hadoop 框架描述MapReduce 作业以供执行的主要接口。框架试图忠实地执行 Job 所描述的作业

任务执行与环境

MRAppMasterMapper/Reducer 任务作为单独 jvm 中的子进程执行。

映射器

Mapper 将输入键/值对映射到一组中间键/值对。

有多少地图?

映射的数量通常由输入的总大小驱动,即the total number of blocks of the input files

减速器

Reducer 将一组共享一个键的中间值缩减为一组较小的值。

作业的reduce数量由用户通过Job.setNumReduceTasks(int).设置

减少了多少?

The right number of reduces seems to be 0.95 or 1.75 multiplied by (<no. of nodes> * <no. of maximum containers per node>)。

作业提交和监控

作业提交流程涉及:

    检查作业的输入和输出规范。

    计算作业的 InputSplit 值。

    如有必要,为作业的 DistributedCache 设置必要的记帐信息。

    将作业的 jar 和配置复制到 FileSystem 上的 MapReduce 系统目录。

    将作业提交给 ResourceManager 并可选择监控其状态。

工作输入

InputFormat 描述了 MapReduce 作业的输入规范。 InputSplit 表示要由单个 Mapper 处理的数据。

工作输出

OutputFormat 描述 MapReduce 作业的输出规范。

阅读该教程以进一步了解完整的工作流程。

来自AnatomyMapReduceJob 来自http://ercoppa.github.io/ 的文章: 工作流程如下图所示。

【讨论】:

以上是关于hadoop如何分配job来map和reduce的主要内容,如果未能解决你的问题,请参考以下文章

如何获取hadoop mapreduce job运行信息

如何在python中为Hadoop Map Reduce作业编写组合器和分区器?我如何在Hadoop Job中调用它

Hadoop Map/Reduce

hadoop Map-Reduce入门讲解

hadoop mapreduce 进程都有哪些

如何查看hadoop mapreduce 性能