gpt4 book ai didi

hadoop - hadoop2中的JobClient.java和JobSubmitter.java有什么区别?

转载 作者:行者123 更新时间:2023-12-02 21:35:56 25 4
gpt4 key购买 nike

其中哪个用于提交作业以在作业跟踪器中执行。如果可以解释在不同用例中如何同时使用这两个类,那就太好了。

最佳答案

问题1:JobClient

作业控制是通过新API中的Job类而不是旧类完成的
JobClient
Job是作业提交者对作业的看法。

它允许用户配置作业,提交作业,控制其执行以及查询状态。 set方法仅在提交作业之前有效,之后它们将抛出IllegalStateException。

通常,用户创建应用程序,通过Job描述作业的各个方面,然后提交作业并监视其进度。

问题 2: JobSubmitter
submit()上的Job方法创建一个内部JobSubmitter实例,并在其上调用submitJobInternal()

提交作业后,waitForCompletion()每秒轮询一次作业的进度,并将进度报告给控制台。 job成功完成后,将显示作业计数器。否则,导致作业失败的错误将记录到控制台。
JobSubmitter实现的作业提交过程执行以下操作:

  • 向资源管理器询问新的应用程序ID,该ID用于MapReduce job ID
  • 检查作业的输出规范。例如,如果未指定输出目录或目录已经存在,则不提交作业,并且MapReduce程序会抛出错误。
  • 计算作业的input splits。如果无法计算splits(例如,由于输入路径不存在),则不会提交作业,并且会向MapReduce程序抛出错误。
  • 复制运行作业所需的资源,包括作业JAR文件,
    配置文件,然后将计算得到的输入拆分到以job ID命名的目录中的共享文件系统。
  • 使用高复制因子(由mapreduce.client.submit.file.replication属性控制,默认为10)控制复制作业JAR,以便在集群中有很多副本供节点管理器在运行时访问工作任务。
  • 通过在资源管理器
  • 上调用 submitApplication()来提交作业
    Hadoop : The defiinitive guide foruth edition是了解概念的最佳书籍之一

    从代码结束,您可以从grepcode引用源代码:

    Job:要检查的API: waitForCompletion() => submit() => jobClient.submitJobInternal
    JobClient: submitJobInternal

    关于hadoop - hadoop2中的JobClient.java和JobSubmitter.java有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318212/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com