我试图从各种各样的书/博客中了解Map。。但我不太清楚。使用以下命令向集群提交作业时会发生什么:…已将文件加载到hdfs中bin/hadoop jar/usr/joe/wordcount.jar org.myorg.wordcount/usr/joe/wordcount/input/usr/joe/wordcount/output有人能解释一下从客户机和集群内部发生的操作序列吗?
4smxwvx51#
过程如下:1-客户端通过配置和设置作业 Job 并提交给求职者。2-提交作业后,jobtracker将为该作业分配作业id。3-然后验证作业的输出规范。例如,如果输出目录尚未指定或已存在,则不会提交作业,并向mapreduce程序抛出错误。4-完成后,将创建作业的InputSplit(基于您使用的inputformat)。例如,如果由于输入路径不存在而无法计算拆分,则不会提交作业,并向mapreduce程序抛出错误。5-根据InputSplit的数量,创建Map任务,每个InputSplit由一个Map任务处理。6-然后在集群中复制运行作业所需的资源,如作业jar文件、配置文件等。使用高复制因子(默认值为10)复制作业jar,以便TaskTracker在为作业运行任务时可以访问集群中的大量副本。7-然后根据要处理的数据块的位置,jobtracker指示TaskTracker在存在特定数据块的同一数据节点上运行Map任务。如果该datanode上没有空闲的cpu插槽,则数据将被移动到具有空闲插槽的附近datanode,并且进程无需等待即可继续。8-一旦Map阶段从每个inputsplit开始单独的记录(键值对),Map程序就开始逐个处理这些记录,完成整个inputsplit。9-一旦Map阶段结束,输出将经历洗牌、排序和合并。在此之后,reduce阶段开始提供最终输出。以下是整个过程的图示:另外,我建议你通过这个链接。hth公司
Job
wtlkbnrh2#
阅读“hadoop:权威指南”的第6章(“mapreduce如何工作”)。它用很好的语言解释。要快速阅读,请参阅此和此。
2条答案
按热度按时间4smxwvx51#
过程如下:
1-客户端通过配置和设置作业
Job
并提交给求职者。2-提交作业后,jobtracker将为该作业分配作业id。
3-然后验证作业的输出规范。例如,如果输出目录尚未指定或已存在,则不会提交作业,并向mapreduce程序抛出错误。
4-完成后,将创建作业的InputSplit(基于您使用的inputformat)。例如,如果由于输入路径不存在而无法计算拆分,则不会提交作业,并向mapreduce程序抛出错误。
5-根据InputSplit的数量,创建Map任务,每个InputSplit由一个Map任务处理。
6-然后在集群中复制运行作业所需的资源,如作业jar文件、配置文件等。使用高复制因子(默认值为10)复制作业jar,以便TaskTracker在为作业运行任务时可以访问集群中的大量副本。
7-然后根据要处理的数据块的位置,jobtracker指示TaskTracker在存在特定数据块的同一数据节点上运行Map任务。如果该datanode上没有空闲的cpu插槽,则数据将被移动到具有空闲插槽的附近datanode,并且进程无需等待即可继续。
8-一旦Map阶段从每个inputsplit开始单独的记录(键值对),Map程序就开始逐个处理这些记录,完成整个inputsplit。
9-一旦Map阶段结束,输出将经历洗牌、排序和合并。在此之后,reduce阶段开始提供最终输出。
以下是整个过程的图示:
另外,我建议你通过这个链接。
hth公司
wtlkbnrh2#
阅读“hadoop:权威指南”的第6章(“mapreduce如何工作”)。它用很好的语言解释。要快速阅读,请参阅此和此。