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 所描述的作业
任务执行与环境
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/ 的文章: 工作流程如下图所示。
【讨论】:
以上是关于hadoop如何分配job来map和reduce的主要内容,如果未能解决你的问题,请参考以下文章