mapreduce1 和 mapreduce2 的工作机制

mapreduce1 的工作机制中主要角色分别是客户端、jobtracker、tasktracker。

Jobtracker 协调作业的运行

tasktracker 负责运行作业划分后的任务

流程如下:

  1. 客户端向 jobtracker 请求一个新的作业,检查作业的输出路径是否存在,若存在则抛出异常。然后 jobtracker 向客户端返回 job 相关资源的提交路径以及 jobid
  2. 客户端将 job 所需的资源(jar 文件、配置文件)提交到共享文件系统(hdfs)
  3. 告知 jobtracker 已将 job 复制到共享文件系统,准备执行
  4. jobtracker 将提交的 job 放入内部的任务队列,由作业调度器进行调度,并进行初始化(包括创建一个表示正在运行作业的对象,用于封装任务和记录信息)
  5. jobtracker 的作业调度从共享文件系统获取客户端计算好的输入分片,以创建任务运行列表
  6. tasktracker 通过心跳与 jobtracker 保持通信,报告自己的状态,以及是否准备好运行一个 task,若是则 jobtracker 通过一定的调度算法从任务队列中取出一个 task 分配给 tasktracker
  7. tasktracker 在共享文件系统中获得任务相关资源,实现 jar 本地化,并创建一个本地工作目录以及一个 taskrunner 运行该任务
  8. taskrunner 启动一个新的 jvm
  9. 在新启动的 jvm 中运行任务
  10. 进度与状态的更新:有一个独立的线程向 tasktracker 报告当前任务的状态。同时 tasktracker 每隔 5 秒通过心跳向 jobtracker 发送状态。jobtracker 将这些更新合并,发送给客户端。

https://blog.csdn.net/guoyuguang0/article/details/46731291

-----------本文结束感谢您的阅读-----------
0%