zoukankan      html  css  js  c++  java
  • MapReduce

    mapreduce关键点:

    1、 当一个reduce worker读取了所有的中间数据后,它通过中间key值对缓冲数据排序,以便相同key值的出现组织在一起。由于通常许多不同的key值映射到同一reduce任务上,因此排序是需要的。如果中间数据量太大而无法适应内存,那么就使用外部排序。reduce的输入为(key,list[])list是同一key的value的所有集合

      当所有的map和reduce任务完成之后,master唤醒用户程序。此时此刻,用户程序里的对MapReduce调用返回用户代码。

      成功完成之后,mapreduce执行的输出可以在R个输出文件中得到(每个文件对应一个reduce任务,文件名由用户指定)。

      通常,用户不需要将这R个输出文件合并成一个文件-他们经常把这些文件作为输入传递给另外一个MapReduce调用,或者在另外一个分布式应用中使用它们,

      这种分布式应用能够处理分成多个文件的输入。

    2、 合并函数在每台执行map任务的机器上执行。通常使用相同的代码实现合并函数和reduce函数。合并函数和reduce函数唯一的区别就是MapReduce库如何处理函数的输出。Reduce函数的输出被写入在最终的输出文件,合并函数的输出被写到中间文件里,该文件被发送给reduce任务

      需要提供数据的reader不必从文件中读取,比如,我们可以容易地定义一个从数据库里读记录的reader,或者从映射在内存中的数据结构读。

  • 相关阅读:
    高性能异步爬虫
    线程池在爬虫案例中的应用
    线程池的基本使用
    requests代理爬取
    python验证码识别
    获取人人网当前用户的个人详情页数据
    模拟登录人人网
    移远BC26基础开发之程序结构 三
    移远BC26基础开发之配置 二
    移远BC26/BC28(略)/MC20开发之环境搭建 一
  • 原文地址:https://www.cnblogs.com/51python/p/10465763.html
Copyright © 2011-2022 走看看