HOP
一些潜在的优点:
1)online aggregation可以加速
2)扩展了编程模型的运用范围
3)传递给下游数据快,提高并行性
一些设计挑战
1)与错误容忍机制共存
3) 需要生产者额和消费者共同调度
Pipelined MapReduce
1) 任务间
2)工作间
3)支持错误容忍
4)管道与调度
Pipelining Between Jobs
原因:
作业之间有不必要的读写,;
一个作业运行完之前,接下来的作业不能运行.
we describe how online aggregation and continuous query pipelines can publish
“snapshot” outputs that can indeed pipeline between jobs
Fault Tolerance
Map失败:Reduce把每个tcp连接发出的数据看成是一个尝试性的,也就是说直到map运行完,reduce才真正的接受数据,如果中途map失败,则忽略数据
Reduce失败:map端要把output的数据写到disk,以保证万一reduce失败,可以重新生成任务,并采用检查点的思想,记录下offset
PipeliningWithin A Job
大体设计: map生成的数据通过一个持续的tcp连接到reduce
: tcp连接太多; 没有足够的slot去调度
解决方法:如果没有足够slot去调度,就写入到disk,和传统的hadoop一样.
为了解决tcp太多的,可以运用有限制的tcp,剩下的传统的一样,写到disk
另一个是线程阻塞,用两个线程解决
管道破坏了combiner函数的作用
解决方式: 保留一个缓冲有一个门槛值,达到一定数量的值时,用combiner函数处理后, 在发送给reducer.
Task Scheduling
就是流水式调度
Online Aggregation
Single-Job Online Aggregation
Progress Metric
通过hadoop自身的进度监控机制来改进以确定啥时候去snapshot。
首先是改变一条数据的格式描述,使其带有进度信息,然后reduce计算平均进度来快照。
Multi-Job Online Aggregation
任务间传递进度,缺点是进度传递不准确,多任务间会非常不准确
Continuous Queries
Continuous MapReduce Jobs
加了一个flush 接口 ,其他简单无需改动
应用有不同的reduce函数的引用频率
需要弹性的task 数量
Background and Configuration
Map任务包括2个工作阶段 : map和sort。主要任务在map阶段。Map加工完数据,然后在分类。
Reduce任务分为3个工作阶段:shuffle,reduce 和commit。
其中shuffle阶段要消耗75%的时间,剩下的reduce和commit占用25%的时间
Reudce任务周期性的对map发来的数据进行shuffle,这样可以减少最终的shuffle时间,最后运行最终的分类合并,进入reduce阶段。
当reduce任务已经成为bottleneck的时候,管道也只能带来少许益处,甚至能降低性能。
Prototype Monitoring System
组成:
Agents that run on each monitored machine
每个代理作为一个持续的map任务,将统计的数据发送给aggregator(一个持续的reduce任务)
每个aggregator可能发送给上面一个新的aggragator, 或者报告
2) Record statistics of interest (e.g., load average, I/O operations per second, etc.).
|
|