0

我试图从各种书籍/博客中了解 map reduce anatomy。但我没有一个清晰的想法。

当我使用以下命令向集群提交作业时会发生什么:

..已将文件加载到 hdfs

bin/hadoop jar /usr/joe/wordcount.jar org.myorg.WordCount /usr/joe/wordcount/input /usr/joe/wordcount/output

任何人都可以解释从客户端和集群内部发生的操作顺序吗?

4

2 回答 2

1

Read Chapter 6 ("How MapReduce Works") of "Hadoop: The Definitive Guide". It explains it in good language. For quick read, see this and this.

于 2013-05-31T11:10:01.383 回答
0

过程是这样的:

1- 客户端通过配置和设置作业Job并将其提交给 JobTracker。

2- 提交作业后,JobTracker 会为该作业分配一个作业 ID。

3- 然后验证作业的输出规范。例如,如果没有指定输出目录或者它已经存在,则不提交作业,并向 MapReduce 程序抛出错误。

4- 完成此操作后,将创建作业的 InputSplits(基于您使用的 InputFormat)。如果由于输入路径不存在而无法计算拆分,例如,则不会提交作业,并向 MapReduce 程序抛出错误。

5- 根据 InputSplits 的数量,创建 map 任务,每个 InputSplits 由一个 map 任务处理。

6- 然后,运行作业所需的资源被复制到整个集群中,如作业 JAR 文件、配置文件等。作业 JAR 以高复制因子(默认为 10)复制,因此有很多tasktracker 在为作业运行任务时可以访问的集群中的副本。

7- 然后根据要处理的数据块的位置,JobTracker 指示 TaskTracker 在存在该特定数据块的同一个 DataNode 上运行地图任务。如果该 DataNode 上没有空闲 CPU 插槽,则数据将移动到附近有空闲插槽的 DataNode,并且无需等待即可继续进程。

8- 一旦映射阶段从每个 InputSplit 开始单独的记录(键值对)开始由 Mapper 处理,完成整个 InputSplit。

9- 一旦映射阶段结束,输出将经历洗牌、排序和组合。在此之后,reduce 阶段开始为您提供最终输出。

下面是整个过程的图示:在此处输入图像描述

另外,我建议您通过此链接

高温高压

于 2013-05-31T11:02:30.280 回答