【问题标题】:hadoop jar command Executionhadoop jar 命令执行
【发布时间】:2014-10-09 01:44:07
【问题描述】:
  1. 我们通过hadoop jar命令提交jar文件
  2. 命中主节点

hadoop jar 命令是否会将 jar 文件复制到所有从节点并开始执行,或者它是如何工作的,谁来做?作业跟踪器或 Namenode ?

【问题讨论】:

    标签: hadoop jar


    【解决方案1】:

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

    步骤:

    1. 作业客户端向 JobTracker (JT) 提交作业。在后台,它将包含 Config、Mapper 和 Reducer 代码、输入和输出路径信息的二进制文件复制到靠近 Task Trackers (TT) 的集中区域中的 HDFS。一旦 TT 需要使用该代码,他们只需将其下载到本地数据节点上,这样当 Map 和 Reduce 任务启动时,他们就可以使用该代码在本地数据上运行。

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

    3. 利用此信息,JT 与 TT 对话,并通过考虑最接近数据的 TTS(如果它们有可用的执行槽)来创建执行计划。如果它们不是,那么它会去机架位置并发现同一机架中的任何 TT 都有可用的插槽。如果仍然找不到,则在任何机架/任何位置查找 TT。

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

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

    6. 一旦所有映射器都完成了他们的任务,JT 会向 TT 发出信号,告诉 Reducer 运行他们的 reducer 执行(即运行 reduce() 方法)

    7. 一旦所有 Mapper 和 Reducer 都完成并写入最终输出,JT 会将其状态更新为 SUCCESS 并通知客户端。

    【讨论】:

    • 酷,你能不能在这方面显示一些引文,我可以进一步看看。看起来它很相似,并且在 YARN hadoop 2.0 中也使用过,他们将 jar 复制到 HDFS,然后根据需要复制到数据节点。谢谢我不能投票:(少于 15 名声望... :)
    • Cloudera 教程和 Hadoop 权威指南,一个好的开始。cloudera.com/content/cloudera/en/training/courses/udacity/…
    猜你喜欢
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多