张一驰组讲稿

Download Report

Transcript 张一驰组讲稿

基于Map Reduce的调度算法的修改
张一驰、王卓、朱旭、井鸿、王明朗
目录
 本组情况简介
 Phoenix中的MapReduce
目录
 本组情况简介
 Phoenix中的MapReduce
本组情况简介

分工及原因






张一驰:阅读代码
王卓:实践安装
朱旭:参与讨论
井鸿:研读外国文献
王明朗:学习并总结
完成情况



每个人都完成了自己的任务
合作完成了老师布置的任务
总体上来说,在较好完成老师要求的任务的基础上、超额
完成了学习任务,取得了较好的效果,每个人都有收获。
目录
 本组情况简介
 Phoenix中的MapReduce
Import1

MapReduce是什么?

MapReduce是一种编程模型,用于大规模数据集的并行运
算。——百度百科

是否还记得操作系统实验中的错误?

多核编程:更讲究程序的架构,任务的分配,每个处
理机的负载。
MapReduce能否用于多核编程?

Import2




尝试在多核和多处理的状态下应用MapReduce
Computer Systems Laboratory--Stanford University
前提:SMP、CMP
SMP:


一台电脑不再由单个CPU组成,而同时由多个处理器运行操作系
统的单一复本,并共享内存和一台计算机的其他资源。虽然同时
使用多个CPU,但是从管理的角度来看,它们的表现就像一台单
机一样。系统将任务队列对称地分布于多个CPU之上,从而极大
地提高了整个系统的数据处理能力。所有的处理器都可以平等地
访问内存、I/O和外部中断。在对称多处理系统中,系统资源被
系统中所有CPU共享,工作负载能够均匀地分配到所有可用处理
器之上。
CMP:

将大规模并行处理器中的SMP集成到同一芯片内,各个处理器并
行执行不同的进程。
Import3

Phoenix: a shared-memory implementation
of MapReduce


使用线程替代并行的节点
用共享内存替代网络通信

当前版本是基于C/C++和P-threads的



线程的POSIX标准,定义了创建和操纵线程
的一套API。
实现POSIX 线程标准的库常被称作Pthreads
Pthreads定义了一套C语言的类型、函数与常
量,它以pthread.h头文件和一个线程库实现。
The Phoenix Runtime

Orchestrates program execution across multiple threads




Key runtime features





• Initiates and terminates threads (workers)
• Assigns map & reduce tasks to workers
• Handles buffer allocation and communication
• Dynamic scheduling of tasks for load balancing
• Communication through pointer exchange (when possible)
• Locality optimization through granularity adjustment
• Support for failure recovery
Details of parallel execution are hidden from programmer

• Low-level threading, communication, scheduling, …
注:此页文本直接引自斯坦福大学phoenix项目提供的资料
步骤1:Input Data Splitting


为Map任务做准备,将数据分块
分块的大小为Cache的大小
步骤2:Map Stage

在MAP完成之前,不会有reduce任务。
步骤三:Reduce Stage

一个不好的分区可能会导致显著的失衡:默认为hash
步骤四:Merge Stage

将Reduce的输出队列组合为一个有序队列
效果

End
2012-12-24