整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

1.3.2. 网格计算

hadoop 花牛 12℃ 0评论

高性能计算(High Performance Computing, HPC)和网格计算(Grid Computing) 组织多年以来一直在研究大规模数据处理,主要使用类似于消息传递接口 (Message Passing Interface, MPI)的API。从广义上讲,高性能计算采用的 方法是将作业分散到集群的各台机器上,这些机器访问存储区域网络(SAN) 所组成的共享文件系统。这比较适用于计算密集型的作业,但如果节点需 要访问的数据量更庞大(髙达几百GB, MapReduce开始施展它的魔法), 很多计算节点就会因为网络带宽的瓶颈问题不得不闲下来等数据。

MapReduc尽量在计算节点上存储数据,以实现数据的本地快速访问。数据本地化(data locality)特性是MapReduce的核心特征,并因此而获得良好的性能。意识到网络带宽是数据中心环境最珍贵的资源(到处复制数据很容易耗尽网络带宽)之后,MapReduce通过显式网络拓扑结构来保留网络带宽。注意,这种排列方式并没有降低MapReduce对计算密集型数据进行分 析的能力。

虽然MPI赋予程序员很大的控制权,但需要程序员显式控制数据流机制,包括用C语言构造底层的功能模块(例如套接字)和高层的数据分析算法。 而MapReduce则在更髙层次上执行任务,即程序员仅从键值对函数的角度考虑任务的执行,而且数据流是隐含的。

在大规模分布式计算环境下,协调各个进程的执行是一个很大的挑战。最困难的是合理处理系统的部分失效问题——在不知道一个远程进程是否挂了的情况下——同时还需要继续完成整个计算。有了 MapReduce,程序员不必操心系统部分失效的问题,因为它自己的系统实现能够检测到并重新执行 那些失败的map或reduce任务。正因为采用的是无共享(shared-nothing)框 架,MapReduce才能够实现失败检测,这意味着各个任务之间是彼此独立 的。因此,从程序员的角度来看,任务的执行顺序无关紧要。相比之下, MPI程序必须显式管理自己的检査点和恢复机制,虽然赋予程序员的控制权加大了,但编程的难度也增加了。

MapReduce听起来似乎是一个相当严格的编程模型,而且在某种意义上看 的确如此:限定用户使用有特定关联的键值对,mapper和reducer彼此间的 协调非常有限(每个mapper将键值对传给reducer)。由此,我们自然联想到 一个问题:能用这个编程模型做一些有用或实际的事情吗?

答案是肯定的。MapReduce由谷歌的工程师开发,用于构建搜索引擎的索引,而且,事实已经证明它能够一次又一次地解决这个问题(MapReduce的 灵感来自于传统的函数式编程、分布式计算和数据库社区),但此后,该模 型在其他行业还有着很多其他的应用。我们欣喜地发现,有很多算法都可 以用MapReduce来表达,从图像图形分析到各种各样基于图像分析的问 题,再到机器学习算法。当然,它也不是包治百病的灵丹妙药,不能解决 所有问题,但它真的是一个很通用的数据处理工具。

转载请注明:全栈大数据 » 1.3.2. 网格计算

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址