layout: post
title: "云计算之分布式计算系统"
category: Reading Notes
tags: ["读文章", "Map/Reduce", "分布式系统"]
{% include JB/setup %}
Google创造性地把Map/Reduce模型成功地应用到了云计算系统中,极大地降低了云计算系统应用程序的开发难度且提高了云计算系统的并行度和运行效率,这就是云计算的分布式计算系统。
它的基本原理是:每个应用程序被分成map函数和reduce函数,都由应用程序开发者编写,map函数的输入是 < key, value >对,输出的是中间结果< key, value >对,云计算分布式计算系统对这些中间结果按reduce分组,然后传给对应的reduce函数,reduce函数以迭代器的方式接受这些中间结果并进行合并等处理,然后输出所需的内容。例如,以海量文档的单词个数的统计问题为例,map函数输出的中间结果可以是:< 单词,"1" >
云计算的分布式计算系统的主要优点是:
1. 应用程序开发者不需要设计、编写和调试并行程序
开发者只需要设计、编写和调试普通的串行程序,即map函数和reduce函数,调试通过后提交到云计算系统,由云计算分布式系统框架把他们分发到成百上千台计算机(云计算的worker)上运行,并汇总和返回运行后的结果。
云计算分布式计算系统的master根据用户设置自动把作业切分为许多map任务和reduce任务,然后以按需的方式分配map和reduce任务到所有的worker上,每个worker完成一个任务后就报告给master,master就给该worker再分配一个map或reduce任务,该worker执行新分配的任务...,如此直到所有任务执行完。
2. 适于异构集群
快的worker执行更多的任务,慢的worker执行较少的任务。
由于整个作业被切分成许多map任务和reduce任务,worker故障后,只要再次执行对应的map和reduce任务即可;master则定期记录检查点(checkpoint),一旦master异常,新的master读入最后一次检查点。
云计算的分布式计算系统也有自身的局限性。云计算分布式系统的易用和高效建立在Map/Reduce模型的基础上。Map/Reduce模型要求切分出来的map和reduce可以多次以任意顺序执行而没有副作用。绝大部分应用能够适用于该模型,不适合的应用也常常能够找到可用的近似算法。