MapReduce讲述1.0的讲解

MR流程:
代码编写
作业配置
提交作业
初始化作业
分配任务
执行任务
更新任务和状态
完成作业
注释:
1、作业提交
提交作业之前,需要对作业进行配置:
1)编写自己的MR程序
2)配置作业,包括输入输出路径等等
提交作业:
1)配置完成后,通过JobClient提交
具体功能:
1)与JobTracker通信得到一个jar的存储路径和Jobld
2)输入输出路径检查
3)将Job Jar拷贝到的HDFS
4)计算输入分片,将分片信息写入到job.split中
5)写job.xml
6)真正提交作业

2、作业初始化
客户端提交作业后,JobTracker会将作业加入到队列,然后进行调度,默认是FIFO方式
具体功能:
1)作业初始化主要是指JobInProgress中完成的
2)读取分片信息
3)创建task包括Map和Reduce任创建task包括Map和Reduce任务
4)创建TaskInProgress执行task,包括map任务和reduce任务

3、任务分配:
TaskTracker与JobTracker之间的通信和任务分配是通过心跳机制实现的
TaskTracker会主动定期向JobTracker发送心跳信息,询问是否有任务要做,如果有,就会申请到任务

4、任务执行
如果TaskTracker拿到任务,会将所有的信息拷贝到本地,包括代码,配置。分配信息等
TaskTracker中的localizeJob()方法会被调用进行本地化,拷贝job.jar,jobconf,job.xml到本地
TaskTracker调用LaunchTaskForJob()方法加载启动任务
MapTaskRunner和ReduceTaskRunner分别启动java child进程来执行相应的任务

5、状态更新
Task会定期向TaskTracker汇报执行情况
TaskTracker会定期收集所在集群上的所有task的信息,并向JobTracker汇报
JobTracker会根据所有TaskTracker汇报上来的信息进行汇总

6、作业完成
JobTracker是在接收到最后一个任务完成后,才将任务标记为成功
将结果数据写入到HDFS中

7、错误处理
JobTracker失败
1)存在单点故障,hadoop2.0解决了这个问题
TaskTracker失败
1)TaskTracker崩溃了会停止向JobTracker发送心跳信息
2)JobTracker会将TaskTracker从等待的任务池中移除,并将任务转移到其他的地方执行
3)JobTracker将TaskTracker加入到黑名单中
Task失败
1)任务失败,会向TaskTracker抛出异常
2)任务挂起

MR过程各个角色的作用:
jobClient:提交作业
1)是用户作业与JobTracker交互的主要接口
2)负责提交作业的,负责启动,跟踪任务执行、访问任务状态和日志等
JobTracker:初始化作业,分配作业,TaskTracker与其进行通信,协调监控整个作业。
1)负责接收用户提交的作业,负责启动,根据任务执行
2)JobSubmissionProtocol是JobClient与JobTracker通信的接口
3)InterTrackerProtocol是TaskTracker与JobTracker通信的接口
Tasktracker:定期与JobTracker通信,执行Map和reduce任务
HDFS:保存作用的数据、配置、jar包、结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值