2014-10-09 149 views
4
  1. 我们通过hadoop的jar命令提交的jar文件
  2. 它击中主节点

会的Hadoop jar命令的jar文件复制到所有从节点,并开始执行或怎么说作品和谁做的?作业跟踪器或Namenode?hadoop的jar命令执行

回答

4

“hadoop jar”命令告诉hadoop通过提供jarfile,输入路径,输出路径来执行集群中的作业。 jar文件包含作业配置和所有Map和Reduce代码。

步骤:

  1. 招聘客户端提交作业到JobTracker的(JT)。在后台,它将包含Config,Mapper和Reducer代码,输入和输出路径信息的二进制文件复制到与任务跟踪器(TT)接近的集中区域的HDFS中。一旦TT需要使用该代码,他们只需将它下载到datanode本地,以便Map和Reduce任务处于站立状态时,它们将使用该代码运行本地数据。

  2. JT查询NameNode关于包含数据的数据位置和数据节点名称。

  3. 有了这些信息,JT就会与TT进行对话并通过考虑与数据最接近的TTS(如果它们有可用的执行时隙)来创建执行计划。如果他们不是,那么它适用于机架位置,并找到相同机架中的任何TT都有可用插槽。如果仍然找不到,那么在任何机架/任何地点找到TT。

  4. 根据执行计划,JT将工作提交给TTs。 TT现在支持Map和Reduce Tasks并在数据上执行。

  5. TT定期向JT报告进度和心跳(默认为每5秒)。每个Map和Reduce任务都通过TT向JT报告其进度/完成/错误。即Mapper和Reducer任务报告给TT和TT报告给JT。如果MR任务死亡,那么TT将向JT报告这一情况,JT会加快其他MR任务来处理错误。

  6. 一旦与自己的任务,JT信号的TT完成所有映射器告诉减速运行他们的减速执行(即运行减少()方法)

  7. 一旦所有映射器和减压器完成,并最终输出写入,JT将其状态更新为SUCCESS并通知客户。

+1

很酷,你能不能在这个上显示一些引用,在这里我可以看得更远。看起来它和YARN hadoop 2.0很相似,它们将jar复制到HDFS,然后根据需要复制到datanode。谢谢我不能upvote :(少于15声望... :) – Muthu 2014-10-09 17:21:08

+1

Cloudera教程和Hadoop权威指南,一个良好的开端.http://cloudera.com/content/cloudera/en/training/courses/udacity/mapreduce.html – Sekhar 2014-10-10 12:40:00