Google的三篇重要论文主要讲的是分布式的一些基本模型和思想,三篇论文分别讲述了Goolgel GFS分布式文件系统,Google Bigtable分布式的结构化数据存储系统以及一个处理和生成超大数据集的算法模型——MapReduce分布式函数模型。
其中MapReduce函数模型给人们提供了一个十分便利的实现大规模并行化计算,下面是MapReduce运行原理图。1.用户程序首先调用的MapReduce库将输入文件分成M个数据片度,每个数据片段的大小一般从16MB到64MB(可以通过可选的参数来控制每个数据片段的大小)。然后用户程序在机群中创建大量的程序副本。
2.这些程序副本中的有一个特殊的程序–master。副本中其它的程序都是worker程序maste分配任务。有M个Map任务和R个Reduce任务将被分配,master将一个Map任务或Reduce任务分配给一个空闲的worker。
3.被分配了map任务的worker程序读取相关的输入数据片段,从输入的数据片段中解析出key/value pair,然后把key/value pair传递给用户自定义的Map函数,由Map函数生成并输出的中间key/value pair,并缓存在内存中。
4.缓存中的key/value pair通过分区函数分成R个区域,之后周期性的写入到本地磁盘上。缓存的key/value pair在本地磁盘上的存储位置将被回传给master,由master负责把这些存储位置再传送给Reduce worker。
转至Google MapReduce中文版1.0版
原文地址http://blademaster.ixiezi.com/
作者/编著者阎伟 邮件: andy.yanwei@163.com 博客: http://andyblog.sinaapp.com 微博:http://weibo.com/2152410864
这是Google MapReduce论文中文版上对原理的简单描述,其中心思想是将一个巨大的任务分成很多小的部分,然后分发个许多的机器去处理然后再将每个机器处理完成后的结果汇总,最后将最终运行的结果反馈给用户。为了保证任务能够有效率的完成,Google的工程师们给这个模型添加了许多的容错机制,使得MapReduce能够在各种突发情况下最快速的完成它们的任务。
基于这个分布式运算的思想在计算机方面我的一些想法。软件工程师可以给自己的软件的用户每人提供一个小型的云端数据库,用于记录用户的使用习惯,然后软件根据用户的习惯自动进行适当的使用优化,并且用户在其他地方使用你的软件的时候能够在用户登陆自己的账号获得在自己的设备上一样的体验。
还有就是在编写程序时,如果某一功能难以实现,可以先将其拆分成许多小的简单容易实现的模块,然后将这些模块组合以实现那一复杂的功能。
这就是我简单阅读Google MapReduce论文后的一些简单的想法和一些拙劣的见解。