从MapReduce框架浅谈分布式计算

从MapReduce框架浅谈分布式计算

现在的数据挖掘应用,也就是常说的大数据分析,需要我们对大规模的数据进行快速高效的分析。我们先来看下面的例子:

20billions的20KB的网页有400TB,按照目前磁盘的读取速度约为30M/S,我们需要大约4个月的时间才能读完这所有的数据,而存储这些数据需要1000块普通磁盘。即便是这些问题解决了,想要分析这些数据,从中获取有用的价值,就更是难上加难了。显然我们传统的计算模式已经不能适应大数据时代的要求了。

另一方面,包括上面的例子在内的很多应用的数据都有个共同点:虽然大但是相当有规则,所以用并行的方式处理这些数据是解决问题一个很直观的方案。为了处理这类的应用,一种全新的软件栈被开发出来,这些编程系统实现并行的方式不同于以往的超级计算机,而是利用集群,即一定数量的通过以太网或者交换机连接而成的商用计算机集合。但是这样的大规模计算模式又会带来新的问题:

1、  计算如何分布到计算的节点上?

2、  怎样可以让分布式编程更简单、更高效?

3、  节点间传输数据会有很大的延时,如何解决节点间的数据传输问题?

4、  硬件故障。假设一台机器1000天(3年)发生一次故障,那么拥有1000台机器的集群每天都会发生一次故障。如何解决集群中频繁发生的硬件故障的问题?

而map-reduce软件框架正是解决了上面的所有问题,同时它具有简洁直观的特性,很快就流行起来了。

Mapreduce框架主要有两个部分,一个是map-reduce编程模型,另一个是底层新的分布式文件系统即DFS。分布式文件系统是将原始的大文件拆分成一个个小的数据块(chunks),而这些chunks远远大于传统操作系统中的磁盘块。分布式文件系统同时还保留文件的副本,因为当数据分布在大量的低廉的节点上,存储介质出现故障是常发生的,通过冗余存储来就可以将这种故障带来的损失降到最低。

在分布式文件系统之上就是各种不同的高层次的编程系统,其中最具代表性的就是mapreduce,mapreduce的实现让很多对于大数据的普通的计算都能够在集群上高效执行,而且在计算的过程中系统能自动容错。随着Mapreduce框架的迅速发展,如今甚至已经可以在mapreduce上使用更高层次的编程系统,比如SQL。

 

1 分布式文件系统

传统的计算都是在一个cpu上完成的,拥有自己的主存、缓存、磁盘等。过去我们常说的并行处理应用,比如科学计算,都是在那些有大量处理器和定制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值