小白在学云计算—MapReduce

一:简介
           MapReduce是云计算中用于处理和生成超大数据的算法模型和相关实现。它能够实现对客户端提供的海量数据的处理,并且输出处理后的数据文件。MapReduce能够部署在大量普通配置的计算机组成的集群上,实现并行化处理。对于没有并行计算和分布式处理系统开发经验的程序员来说,采用MapReduce框架可以有效利用分布式系统的丰富资源。
 二:使用方式(编程模型)
            MapReduce主要基于map集合来实现编程。用户首先需要创建一个Map函数,并输入一个key/value pair集合。Map集合会生成一个中间key/value pair集合。MapReduce库会进行相应处理,把具有相同key值得中间value值集合在一起后传递给Reduce函数。
            接着用户需要定义Reduce函数(实际操作中map函数和reduce函数都应该提前定义)接收一个中间key值和相应value值的集合。Reduce函数合并这些value值,形成一个较小的value值的集合,并输出给用户。
三:实现
            MapReduce有多种实现方式,分别用于不同的运行环境。这里介绍基于Google内部广泛使用的运算环境的实现:用以太网交换机连接,由普通PC机组成的大型集群。
                       在这个环境中包括:
                                 1, x86构架、运行Linus操作系统的机器
                                 2, 普通的网络硬件设备
                                 3, 成百上千的普通机器。因此,机器故障是常态
                                 4, 储存为廉价的IDE硬盘。底层通过GFS系统来保证文件不会因为硬件不可靠而破话数据的有效性和可靠性。
                                 5, 用户提交job给调度系统,每个job会生成多个task,调度系统将这些task调度到集群中多台可用的机器上。

           MapReduce具体的执行过程可以分成五步:
                       第一步:客户端在输入文件数据后,MapReduce函数库会将输入的文件切割成M个片段(M的值由用户自己确定),每个片段的大小一般在16M到64M之间。然后用户程序会在集群中创建大量的程序副本(分别用于处理不同块的文件数据)。
                       第二步:在产生的大量副本中会有特殊的程序—master,其他的程序都是worker程序。有master程序将会给worker程序分配任务,并监视worker程序的执行状态。将会有M个Map任务和R个Reduce任务被分配给空闲状态的worker程序。
                       第三步:被分配map任务的程序开始读取输入的数据片段,并从中解析出key/value pair,然后把包含数据的map集合传递给用户自定义的map函数。Map函数生成一个中间的key/value pair 缓存在内存中。
                       第四步:缓存中的key/value pair 被分区函数分成R个区域。然后将位置信息传回给master。
                       第五步:分配了reduce任务的worker程序从master程序获取R个文件的位置信息,并读取key/value pair数据。Worker程序通过reduce函数将数据进行处理,并将最终的key/value pair值输出到R个文件中。

四:实现细节
           1, Master程序不仅要在初期为worker程序分配任务,而且要储存在相关中间问价你的位置信息。同时在过程中master程序会周期性地和worker程序进行通信,以防止worker程序出现错误或者worker程序所在的机器出现故障而导致程序运行出现异常或者结果出现错误。
           2, 对于失效的worker程序,master会根据自己储存的原子信息,重新将任务分配给空闲且正常的worker程序,出现故障的worker程序生成的文件将不再被map任务访问。当worker程序恢复正常时,将成为空闲状态,等待重新被调用。
           3, 如果master程序失效,MapReduce程序也提供了相应处理机制,但由于master程序唯一,恢复正常的时间较长,一般情况下会终止程序并通知客户程序。待客户根据需要重新 执行这个程序。
           4, 在MapReduce的计运行环境中,网络资源是最为稀缺的资源。所以系统会尽量把输入的数据储存在本地磁盘中以节省网络带宽。
           5, 系统执行任务的速度取决于执行最为缓慢的那个worker程序,为了尽可能的改善这种情况,MapReduce提供了一个备用程序机制。当大部分任务执行完成后,会启动备用的程序来执行未完成的任务。这种机制大大提高了程序的执行效率。
五:小结
            MapReduce是云计算中真正执行运算的系统。理解MapReduce的计算和容错原理是应用Hadoop等分布式计算平台的前提,也是实现海量数据计算、数据挖掘的重要参考。云计算是当今互联网发展的热点方向,也是时代发展的重要方向。唯有深度理解MapReduce才能真正进入云计算的世界,才能握住未来时间发展的脉搏。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值