Delay Tails in MapReduce Scheduling
需积分: 0 168 浏览量
更新于2013-01-14
收藏 849KB PDF 举报
### MapReduce调度中的延迟尾部现象
#### 概述
MapReduce/Hadoop生产集群在作业处理时间上表现出重尾(heavy-tailed)特性。这些现象是由于工作负载特征以及所采用的调度算法导致的。从理论上理解不同调度器下的延迟有助于设计和部署大型Hadoop集群。MapReduce作业中的Map任务和Reduce任务之间存在着根本性的差异和紧密的依赖关系,这使得分析变得复杂。此外,广泛使用的Fair Scheduler由于其贪婪地启动Reduce任务的方式,导致了一个有趣的饥饿问题。为了解决这一问题,我们设计并实现了Coupling Scheduler,该调度器根据Map任务的进度逐步启动Reduce任务。实验结果表明,与Fair Scheduler相比,作业响应时间提高了一个数量级。
基于广泛的测量和源代码调查,我们提出了针对默认的FIFO调度器、Fair Scheduler以及我们实现的Coupling Scheduler的分析模型。对于一类重尾分布的Map服务时间分布,即指数为-α的正则变化分布,我们分别导出了在这三个调度器下作业处理延迟的分布尾部。默认的FIFO调度器导致延迟呈现指数为-α + 1的正则变化分布。有趣的是,我们发现Fair Scheduler存在一个临界现象:在这种情况下,延迟可能从指数为-α的正则变化分布变为指数为-α + 1的分布,这取决于作业的最大Reduce任务数。还有其他更微妙的行为也存在。相比之下,在某些条件下,Coupling Scheduler下的延迟分布尾部可以比Fair Scheduler低一个数量级,这意味着更好的性能。
#### 背景知识
- **MapReduce**:这是一种分布式计算框架,用于处理大规模数据集。它由两个主要阶段组成:Map阶段和Reduce阶段。
- **Hadoop**:这是MapReduce的一种开源实现,广泛用于构建大型数据处理集群。
- **调度器(Scheduler)**:在Hadoop中,调度器负责分配资源给不同的MapReduce作业,以确保资源的有效利用。
#### 具体分析
- **重尾特性**:在MapReduce/Hadoop集群中观察到的作业处理时间的重尾特性意味着大多数作业可以在相对较短的时间内完成,但有少数作业需要非常长的时间来完成。这种现象对于资源管理和优化至关重要。
- **FIFO调度器**:这是一种简单的调度策略,按照“先进先出”(First-In-First-Out)的原则处理作业。在这种情况下,作业的延迟通常会随着Map任务数量的增加而增加。
- **Fair Scheduler**:这是一个更复杂的调度器,旨在公平地分配资源给所有活动作业。然而,当Reduce任务等待Map任务完成时,会出现饥饿问题,导致整体性能下降。
- **Coupling Scheduler**:为了克服上述挑战,提出了一种新的调度器——Coupling Scheduler,它通过逐步启动Reduce任务来避免饥饿问题。这种方法可以显著提高作业响应时间,特别是在处理大量Map任务时。
#### 技术细节
- **正则变化分布**:一种统计学上的分布形式,常用于描述重尾现象。指数为-α的正则变化分布意味着随着值的增大,事件发生的概率呈幂律下降。
- **临界现象**:在某些特定条件下,系统的行为可能会发生质变。在本文中,Fair Scheduler下的延迟可能会因为作业最大Reduce任务数的变化而改变其分布的性质。
- **性能比较**:通过实验验证了不同调度器的性能。结果显示,在某些条件下,Coupling Scheduler能够提供比Fair Scheduler更优的性能表现,尤其是在处理具有重尾特性的Map服务时间分布时。
#### 结论
MapReduce/Hadoop集群中的作业处理时间呈现出重尾特性,这对资源调度提出了挑战。通过对不同调度器进行分析,我们发现Coupling Scheduler能够在保证资源公平分配的同时显著提高作业响应时间,尤其适用于处理大量Map任务的情况。这一研究成果对于优化Hadoop集群的性能和提升用户体验具有重要意义。