📜  作业如何在 MapReduce 上运行

📅  最后修改于: 2021-10-27 06:32:03             🧑  作者: Mango

MapReduce 可用于在 Job 对象上使用单独的方法调用: submit() (您也可以调用waitForCompletion() ,它会在没有有效提交的情况下呈现活动,此时将处于紧张状态让它完成)。

让我们了解一下组件——

  1. 客户端:提交 MapReduce 作业。
  2. Yarn 节点管理器:在集群中,它监视和启动机器上的计算容器。
  3. Yarn 资源管理器:处理集群上计算资源协调的分配。
  4. MapReduce 应用程序主:促进运行 MapReduce 工作的任务。
  5. 分布式文件系统:与其他实体共享作业文件。

如何提交作业?

要创建内部 JobSubmitter 实例,请使用submit()进一步调用其上的submitJobInternal() 。提交作业后,
waitForCompletion()每秒提交一次作业后轮询作业的进度。如果报告自上次报告以来发生了变化,它会进一步向控制台报告进度。作业成功完成时会显示作业计数器。否则错误(导致作业失败)将记录到控制台。

JobSubmitter为提交 Job 实现的流程:

  • 资源管理器要求用于 MapReduce 作业 ID 的新应用程序 ID。
  • 检查作业的输出规格。例如,错误被抛出到 MapReduce 程序或作业未提交或输出目录已存在或尚未指定。
  • 如果无法计算拆分,它会计算作业的输入拆分。这可能是由于作业未提交且向 MapReduce 程序抛出错误。
  • 运行作业所需的资源被复制——它包括作业 JAR 文件、计算的输入拆分,到以作业 ID 和配置文件命名的目录中的共享文件系统。
  • 它复制具有高复制因子的作业 JAR ,该因子由 mapreduce.client.submit.file.replication 属性控制。因为节点管理器可以访问集群中的副本数量。
  • 通过调用submitApplication() ,在资源管理器上提交作业。