DMR:确保多核系统MapReduce确定性的库

0 下载量 131 浏览量 更新于2024-08-26 收藏 555KB PDF 举报
"DMR是为了解决多核系统中MapReduce实现的不确定性问题而设计的一种确定性的MapReduce库。它确保了即使在地图或减少函数对输入数据顺序敏感的情况下,应用程序也能得到确定性的执行结果。DMR通过采用轮询调度策略处理映射任务和分区调度策略处理减少任务来实现这一目标。此外,DMR基于确定性消息传递多线程编程模型(DETMP)构建,其API与Phoenix兼容,使得Phoenix的测试程序可以直接或稍作修改就能在DMR上运行。在32核机器上的性能评估显示,DMR在某些应用如pca和word_count上相比Phoenix有显著的性能提升,而在kmeans等转换式MapReduce应用上表现稍逊。" DMR(Deterministic MapReduce)是一个针对多核系统的并行计算框架,旨在克服传统基于共享内存P线程实现的MapReduce库的非确定性问题。传统的实现方式可能会导致由于输入数据顺序敏感的map或reduce函数而产生的不确定执行结果。DMR的核心创新在于它的调度策略,它使用轮询调度策略执行映射任务,确保每个任务按顺序执行,同时采用分区调度策略处理减少任务,这样可以避免并发执行中的冲突,从而保证程序行为的确定性。 DMR的设计基础是DetMP(Deterministic Message Passing Multithreaded Model),这是一个确定性的消息传递多线程模型,它支持并发执行而不会引入非确定性。这种模型使得DMR能够为开发者提供一个可靠的并行执行环境,即使在面对对输入数据顺序敏感的计算任务时也是如此。DMR的API设计与Phoenix兼容,这意味着已经为Phoenix开发的程序只需要少量或无需修改就可以在DMR上直接运行,这大大降低了迁移成本。 在性能测试中,DMR在七种Phoenix工作负载上进行了对比,结果显示DMR在某些特定应用如pca和word_count上表现出优于Phoenix的性能,速度分别提升了1.42倍和3.33倍。然而,在kmeans这样的迭代MapReduce应用上,DMR的性能略逊于Phoenix。这表明DMR在处理不同类型的任务时有不同的性能表现,对于那些对输入顺序不敏感或者更适应确定性调度的作业,DMR可能提供更好的性能。 DMR是一个为多核系统提供确定性并行计算的MapReduce实现,它解决了传统实现的不确定性问题,并在某些应用中展现出优秀的性能。其兼容Phoenix的工作负载特性以及对并发执行的优化调度策略,使其成为对执行结果顺序敏感的并行计算任务的理想选择。