mapReduce简单理解

MapReduce过程详细解析和使用:https://blog.csdn.net/u014394255/article/details/53449599?utm_source=blogxgwz0
MapReduce介绍:https://blog.csdn.net/amuseme_lu/article/details/4788820
php写mapreduce程序示例:https://blog.csdn.net/nuoline/article/details/8610782
简介:MapReduce是一个最先由Google提出的分布式计算软件构架,它可以支持大数据量的分布式处理。这个架构最初起源于函数式程式的map和reduce两个函数组成。
作用:是用来解决大数据量的分布式计算问题,然后把计算后的结果放入文件系统或者数据库中。
“Map”:主结点读入输入数据,把它分成可以用相同方法解决的小数据块(这里是一个分而治之的思想),然后把这些小数据块分发到不同的工作节点上(worder nodes)上,每一个工作节点(worder node)循环做同样的事,这就行成了一个树行结构(分布式计算中的很多模型都和图论有关,pageRank也是),而每一个叶子节点有来处理每一个具体的小数据块,再把这些处理结果返回给父节点。

“Reduce”:主结节得到所有子节点的处理结果,然后把所有结果组合并且返回到输出。
MapReduce架构的操作模块:

  1. 输入流模块:输入模块负责把输入数据分成16MB或者128MB的小数据块,然后把它们传给Map模块
  2. Map模块:Map模块得到每一个key/value对,处理后产生一个或多个key/value对。这里的输入key/value对与输出key/value对是不一样的。
  3. Partition模块:它用于负责把上面输出的key映射到不同的reduce方法中去
  4. comapre模块:对reduce所读入的数据进行比较
  5. Reduce模块:对上面已经排好序的并且带有相同key的数据进行迭代计算
  6. 输出模块:把reduce的输出结果写到存储系统中去,一般都会用分布式文件系统
    ,如GFS(ps:是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。 它运行于廉价的普通硬件上,并提供容错功能。 它可以给大量的用户提供总体性能较高的服务。)

优点:MapReduce通过把大工作分成不同的小工作再分发给不同的工作者来实现数据的可靠性。每一个单独的工作者处理分发的工作,然后把结果和状态返回给父节点。如果一个节点失效了,主节点会发现和记录这个失效的节点,把分配给这个节点的工作再分发给别的节点。

猜你喜欢

转载自blog.csdn.net/cdsn_lm97/article/details/83346086