MapReduce
一、特性
自动实现分布式并行计算
容错
提供状态监控工具
模型抽象简洁,程序员易用
二、定义
它由称为map和reduce的两部分用户程序组成,然后利用框架在计算机集群上面根据需求运行多个程序实例来处理各个子任务,然后再对结果进行归并。
适合MapReduce的计算类型
Topk
k-means
Bayes
SQL
不适合MapReduce的计算类型: Fibonacci
三、主要调度方法
1.单队列调度
特点:FIFO
优点:简单
缺点:资源利用率低
2.容量调度
特点:
多队列,每个队列分配一定系统容量
空闲资源可以被动分配给负载重的队列
支持作业优先级
作业选择:
选择队列:资源回收请求队列优先;最多自由空间队列优先
选择作业:按提交时间、优先级排队;检查用户配额;检查内存
优先:
支持多作业并行执行,提高资源利用率
动态调整资源分配,提高作业执行效率
缺点:
队列设置和队列选择无法自动进行,用户需要了解大量系统信息
3.公平调度
目标:
改善小作业的响应时间
确保生成性作业的服务水平
特点:
将作业分组--形成作业池
给每个作业池分配做小共享资源
将多余的资源平均分配给每个作业
作业选择:
优先调用资源小于最小共享资源的作业
选着分配资源与所需资源差距最大的作业
优点:
支持作业分类调度,使不同类型的作业获得不同的资源分配,提高服务质量
动态调整并行作业数量,充分利用资源
缺点:
不考虑节点的实际负载状态,导致节点负载实际不均航
四、JobTracker
1、内部实现
作业控制:
作业抽象成三层:作业监控层(JIP),任务控制层(TIP),任务执行层
任务可能会被尝试多次执行,每个任务实例被称为 Task Attempt(TA)
TA成功,TIP会被该任务执行成功,所有TIP成功,JIP成功
资源管理:
根据TaskTracker状态信息进行任务分配
2、JobTracker容错
JobTracker失败,那么未完成的Job失败;通过Job日志,Jbo可部分恢复
3、TaskTracker容错
超时:
TaskTracker 10分钟未汇报心跳,则将其从集群移除
TaskTracker上部署性能监控脚本
如果性能表现太差,被JobTacker暂定调度
4、Task容错
允许部分Task失败: 允许失败的任务占比,默认0;
Task有TIP监控,失败任务多次尝试,慢任务启动备份任务: 每次都是一个TA。
5、Record失败
跳过导致Task失败的坏记录
k,v超大,导致OOM,配置最大长度,抄错截断
异常数据引发程序bug,task重试多次后,自动进入skip mode,跳过导致失败的记录
评论