Hadoop提交作业流程

@PostMapping("/login")

public ResultVOregister( StudentWechat studentWechat ){

log.info("授权登录信息: {}", JSON.toJSONString(studentWechat));

    Map tokenMap =studentService.login(studentWechat);

    return ResultVOUtil.success(tokenMap);

}


一 、基础巩固

1.ResourceManager调度器   a.默认调度器 ------先进先出FIFO

                                               b.公平调度器 ------ 每个任务都有执行的机会

2.心跳机制  ------ NodeManager通过心跳机制健康状况汇报ResourceManager,ResourceManager则会根据每个NodeManager的健康状况调整分配的任务数目。当NodeManager认为自己的健康状况“欠佳”时,可让ResourceManager不再分配任务,待健康状况好转时,再分配新任务。

二 、Hadoop工作流程:

Hadoop提交作业流程_第1张图片
hadoop提交作业流程

1. Client中,客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...)

2. JobClient持有ResourceManager的一个代理对象,它向ResourceManager发送一个RPC请求,告诉ResourceManager作业开始,

       然后ResourceManager返回一个JobID和一个存放jar包的路径给Client

3. Client将得到的jar包的路径作为前缀,JobID作为后缀(path = hdfs上的地址 + jobId) 拼接成一个新的hdfs的路径,然后Client通过FileSystem向   hdfs中存放jar包,默认存放10份(NameNode和DateNode等操作)

4. 开始提交任务,Client将作业的描述信息(JobID和拼接后的存放jar包的路径等)RPC返回给ResourceManager

5. ResourceManager进行初始化任务,然后放到一个调度器中

6. ResourceManager读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask,根据数据量确定起多少个mapper,多少个reducer

7. NodeManager 通过心跳机制向ResourceManager领取任务(任务的描述信息)

8. 领取到任务的NodeManager去Hdfs上下载jar包,配置文件等

9. NodeManager启动相应的子进程yarnchild,运行mapreduce,运行maptask或者reducetask

10. map从hdfs中读取数据,然后传给reduce,reduce将输出的数据给回hdfs

你可能感兴趣的:(Hadoop提交作业流程)