Hadoop-MapReduce的工作机制
来源:互联网 发布:关节机器人编程 编辑:程序博客网 时间:2024/06/04 20:03
MapReduce涉及到的实体
客户端
Jobtracker
TaskTracker
HDFS
MapReduce的执行流程
1.提交作业
1)从JobTracker获取JobId
2)检查相关路径
3)计算作业的输入分片
4)将运行作业所需要jar包复制到HDFS上
5)正式向JobTracker提交运行申请
2.初始化作业
1)读取hdfs上的分片信息,为生成InputSplit做准备
2)根据分片数初始化map任务数
3)根据配置的reduce任务个数创建reduce任务
4)根据分片的起始位置分布初始化好一个map任务和一个reduce任务
3.分片任务
1)TaskTracker获取自身状态,根据状态判断是否向JobTracker申请新任务
2)JobTracker接收到TaskTracker提交的心跳信息
3)如果TaskTracker在申请一个新的Task,JobTracker会封装一个任务发给TaskTracker
4.执行任务
TaskTracker接收到JobTracker返回的任务后就准备执行这个任务。
1)拷贝输入分片到本地(JobTracker会尽可能保证对map任务的数据本地化,减少网络数据传输)
2)拷贝task jar到本地
3)创建本地目录解压 task jar
4)启动新的jvm运行task
5)更新任务执行的进度和状态
7)完成作业
故障处理
硬件故障
JobTracker节点硬件故障:由于JobTracker在整个集群上是单点状态,所有没有比较好的办法来处理,也可以提供多个备用的JobTracker来尽量减少
整个集群的不可用时间
TaskTracker硬件故障:由于JobTracker和TaskTracker之间通过心跳确定状态,当TaskTracker长时间没有心跳请求时,JobTracker会将该节点从task列表中移除,
然后将该节点上未完成的map和reduce任务重新分配到其他节点重新运行。
任务失败
对于map或reduce任务出现异常而退出的情况,TaskTracker会将任务异常写入日志,然后将task槽位+1,并通过心跳向JobTracker报告任务失败,在JobTracker上回重置这个失败的任务的状态,然后尝试重新分配这个任务到TaskTracker,默认下,如果连续失败4次,那么整个任务就失败了。
作业调度机制
FIFO调度:单用户独占调度算法,集群资源不能同时服务于多个任务
公平调度:集群可同时服务于多个任务,切换单位为cpu时间片
容量调度:
Shuffle的过程
Map端Shuffle:
1)将map输出到内存缓冲区
2)当缓冲区达到阈值时,会将缓冲区中的内容划分到磁盘中
此时缓冲区仍然接收数据,如果写出速度小于写入速度造成缓冲区满,那么写入会等待写出完成。在写入磁盘前,会根据key对要写入的数据进行排序,如果用配置了combiner函数,那么还会调用combiner来进一步合并map输出,然后写入磁盘
3)当map任务完成时,TaskTracker会对产生的spill文件进行合并,在合并时,会根据分区信息从spill中抽取对应分区的数据并重新排序,以便于reduce进行处理。
Reduce端Shuffle:
1)复制Map输出:将map的计算结果复制到本地,如果文件比较小则会放到内存中
2)排序合并:对多个map的输出合并,并维持原有的顺序
3)处理
任务的执行
1.推测执行
当有任务执行缓慢时,JobTracker会重新启动一个相同的任务,如果有一个执行成功就把另一个kill掉。这也是为了防止某个任务过慢给整体任务的执行带来瓶颈。
单这种方式有一个弊端,就是当这种缓慢是由代码缺陷造成的时,会在集群中启动大类的相同任务,而实际并不会解决问题。
2.JVM重用
由于TaskTracker上的每个任务都会启动一个JVM,对于小型任务来说,可以服用启动的jvm,在前一个任务结束时,将新任务分配待这个jvm上,这样就避免的启动jvm
带来的性能消耗
3.跳过坏记录
- hadoop,MapReduce的工作机制
- Hadoop-MapReduce的工作机制
- 【Hadoop权威指南】MapReduce的工作机制
- Hadoop学习笔记一:MapReduce的工作机制
- hadoop 学习笔记(二)MapReduce的工作机制
- hadoop学习笔记--7.MapReduce的工作机制
- MapReduce的工作机制
- MapReduce的工作机制
- MapReduce的工作机制
- MapReduce的工作机制
- MapReduce 的工作机制
- mapreduce 的工作机制
- MapReduce的工作机制
- MapReduce的工作机制
- Hadoop学习笔记(5) MapReduce工作机制
- 浅谈MapReduce的工作机制
- MapReduce 2 的工作机制
- mapreduce&yarn的工作机制
- 开山斧0.3.8(跨平台版本)《源码已开放》
- android 仿 ios 搜索界面跳转效果
- 我也搭上PokemonGO热潮——BaaS真是应用软件开发人员的救星
- prototype和__proto__
- HTTP和HTTPS详解
- Hadoop-MapReduce的工作机制
- 一些微信第三方登录需要注意的地方
- memcache缓存雪崩现象
- retrofit与rx_java结合使用基础篇之一
- File操作-InputStreamReader/Writer
- 火狐安装后双击没反应的解决办法
- 423. Reconstruct Original Digits from English
- 关于log4j root logger 标签 以及additivity 属性
- CTP JAVA_API(JCTP)编译(利用Swig封装C++动态库)linux版64位