博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce: Simplified DataProcessingonLargeClusters阅读笔记
阅读量:4091 次
发布时间:2019-05-25

本文共 1503 字,大约阅读时间需要 5 分钟。

论文地址

一、背景

在阅读这篇论文之前,需要了解以下概念。

1、数据密集型应用 vs 计算密集型应用

数据密集型应用大概就是数据量很大但计算逻辑比较简单地应用,如大数据量的排序。而计算密集型应用则相反,其大部分时间用来做计算、逻辑判断等CPU操作,如一个计算圆周率到小数点后一千位以下的程序就是计算密集型应用。计算密集型应用相关的概念有高性能计算、超级计算、网格计算等。

两者都是基于分布式,但两者又存在区别。传统的计算密集型应用往往通过并行计算方式,在紧耦合的超级计算机上运行少量计算作业,即一个作业同时占用大量的计算机节点。而数据密集型应用则通常是将大量独立的数据分析处理作业分布在松耦合的计算机集群的不同节点上运行,有高度密集的海量数据I/O吞吐需求,并且大部分数据密集型应用都有个数据流驱动的流程。

关于数据密集型应用的知识可以看下面这本书:

2、分布式、并行、并发

分布式:在计算机发展阶段的早期,我们主要靠大型机、小型机实现高性能计算,当时的思路非常简单,就是不断升级计算机的硬件来提升性能。但是,随着时间的推移,机器的升级带来的性能提升已经越来越不明显。这时有人就开始用性能一般的PC机组成规模很大的集群,然后用来进行实现高性能计算,这其实就是分布式计算的概念。比如,我们在使用谷歌搜索引擎的时候面对的是一台抽象的逻辑的服务器,但事实上我们的搜索结果是内部无数计算机协同工作的产出。与分布式对应的是单机,比如我们的个人PC就可以看成一个单机系统,具有一定的计算、存储等资源。

并行:在只有单核CPU的时代,并行应该说与分布式是紧密联系的,可以说并行是分布式里面的一个概念,因为并行是以分布式为前提,而分布式并不一定在做并行计算,举个不是很严谨的例子,假设淘宝有10台服务器在支撑用户浏览商品,有10台服务器在响应用户下单支付等请求,这20台服务器是一个分布式系统,当两个子集群整体分别在响应某个用户的请求时,子集群内部是并行计算,服务器同时运作、一起处理一件任务,而子集群之间则不是并行计算。

不过随着多核CPU的出现,由于不同核心可以同时执行计算任务,所以一台计算机也可以实现并行计算了。

并发:在单核CPU的计算机中,操作系统为了实现多任务,采用时间片机制,在不同的时间片执行不同应用程序,这样就可以实现多个应用程序“同时”进行了,也就是“并行”。不过这种“并行”只是表面上的“并行”,实际上任意时刻CPU都只处理一件任务。

小结:分布式系统就是一个系统在物理上被分拆成几个不同的部分,但这几个部分能协同工作,使得用户感觉自己仍然在使用一个系统;并行就是

3、摩尔定律的失效以及单核CPU向多核CPU的发展

意味着编程方式的转变:由顺序编程转向并行编程

一、什么是MapReduce?MapReduce可以做什么?

MapReduce是一种编程模型,在这个模型下,计算过程被分解为map(映射)、reduce(规约)两个抽象的阶段;

MapReduce也是一个分布式并行计算框架,这个框架提供了一套简单但是功能强大的接口,利用这套接口我们可以轻松实现自动并行化、大规模分布式计算、在商用PC的大型集群上实现高性能。这套框架的优点在于,隐藏了底层凌乱的并行化、容错、数据分布、负载均衡等等细节,没有分布式并行应用经验的程序员只需要写map、reduce两个计算逻辑,就可以轻松写出分布式应用。

MapReduce可用于处理大规模数据集的运算,也就是可用来实现数据密集型应用。

二、MapReduce是如何工作的?()

 

三、MapReduce的编程思想

分而治之

 

四、MapReduce的优化

 

 

 

 

转载地址:http://wdnii.baihongyu.com/

你可能感兴趣的文章
C++的三个基本特征:封装、继承、多态
查看>>
C++虚函数的总结
查看>>
什么是URL地址?
查看>>
C++多态的实现方式总结
查看>>
学习C++需要注意的问题
查看>>
C++模板
查看>>
C++双冒号(::)的用法
查看>>
【Unity】封装SQLite管理类
查看>>
【Unity】面试题整理
查看>>
【C#】如何实现一个迭代器
查看>>
【Unity】Destroy和DestroyImmediate的区别
查看>>
【Lua】Mac系统下配置SublimeText的Lua编译环境
查看>>
【C#】利用Conditional属性完成编译忽略
查看>>
【Unity】微信登录后将头像存为bytes,将bytes读取成sprite图片
查看>>
【Unity】使用GPS定位经纬度
查看>>
【UGUI/NGUI】一键换Text/Label字体
查看>>
【C#】身份证本地验证
查看>>
【Unity】坑爹的Bug
查看>>
【算法】求数组中某两个数的和为目标值
查看>>
如何高效学习动态规划?
查看>>