【发布时间】:2015-06-06 04:19:46
【问题描述】:
谁能解释一下 hadoop 是如何决定将作业传递给 map 和 reduce 的。 Hadoop 作业被传递到 map 和 reduce,但我无法弄清楚它的完成方式。
提前致谢。
【问题讨论】:
谁能解释一下 hadoop 是如何决定将作业传递给 map 和 reduce 的。 Hadoop 作业被传递到 map 和 reduce,但我无法弄清楚它的完成方式。
提前致谢。
【问题讨论】:
请参阅 Hadoop 权威指南,第 6 章,剖析 MapReduce 作业运行主题。快乐学习
【讨论】:
来自 Apache mapreduce tutorial:
工作配置:
Job 表示 MapReduce 作业配置。
Job 是用户向 Hadoop 框架描述MapReduce 作业以供执行的主要接口。框架试图忠实地执行 Job 所描述的作业
任务执行与环境
MRAppMaster 将Mapper/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/ 的文章: 工作流程如下图所示。
【讨论】: