一起说说 map-reduce

        最近在读一本关于大数据的书,书中频频出现的一个词语:‘map-reduce’,但是究竟这是个什么东东,它和大数据有什么关系,有了它我们的编程又会有怎么样的便利?

        带着这么多的疑问,我们一起来念叨念叨 map-reduce : 借用网上对map-reduce 最简单的描述:

        We want to count all the books in the library. You count up shelf #1, I count up shelf #2. That’s map. The more people we get, the faster it goes.

  我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。

  Now we get together and add our individual counts. That’s reduce.

  现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

      ❦ 人生若只如初见

         MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)"。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

     一起说说 map-reduce_第1张图片

     ❦ 拨开云雾见天日

     简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如前面的例子里,有人发现所有学生的成绩都被高估了一分,它可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。

      而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?它可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。

     一起说说 map-reduce_第2张图片

  ❦ 博观而约取

        事实已经证明,map-reduce具有很强大的影响力,以至于引发了一系列的括展和改进,而这些括展或改进的系统和map-reduce都具有如下共同特性:

    1.它们都建立在分布是文件系统之上

    2.都管理着大量任务,这些任务是用户编写少量的函数的实例化结果

    3.它们都提供在大任务执行过程中发生的大部分失效的处理方法,以免重启整个任务;

  ❦ 厚积而薄发

    上面说了这么多大家有没有感觉它跟工作流很像?威斯康星大学的Clustera和加利福尼亚大学欧文分校的Hyracks,它们将map-reduce从一个简单的两部处理工作流(map函数输出的结果传递给reduce函数)扩展成任何函数集的组合,并通过一个五环图来表示函数之间的工作流;

     关于map-reduce刚开始接触,如有什么不当之处,还望大家指正!

一起说说 map-reduce_第3张图片

      

    

       

   

你可能感兴趣的:(java,大数据)