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