mapreducemapreduce入门


备注

本节概述了mapreduce是什么,以及开发人员可能想要使用它的原因。

它还应该提到mapreduce中的任何大型主题,并链接到相关主题。由于mapreduce的文档是新的,您可能需要创建这些相关主题的初始版本。

安装或设置

Mapreduce是Hadoop的一部分。因此,当Apache Hadoop (或任何Hadoop发行版安装)时,会自动安装MR。

MapReduce是HDFS(Hadoop分布式文件系统)上的数据处理框架。 MR作业可能使用Java,python,Scala,R等编写。

mapreduce做什么以及如何做?

Mapreduce是一种编程模型,用于处理(非常)大量数据。

传统的“HPC”(高性能计算)通过创建一组高度连接的计算机(使用诸如极快的网络,快速访问共享存储,共享内存等)来处理计算问题,从而加快了对相对大量数据的大量计算。通常需要计算才能访问彼此的数据。一个典型的例子是天气预报。

另一方面,Mapreduce擅长处理大量数据的相对较小的独立计算。为了实现这一点,数据分布在许多计算机上(由于数据量),并且所需的计算被分成可以独立地对每个数据位进行的阶段(“映射”阶段)。然后收集这些独立计算的结果,并进行第二部分计算以将所有这些单独的结果组合成最终结果(“减少”阶段)。


示例:计票

想象一下,你有很多的选票需要计算,并且每项投票都需要做一些工作(例如,从扫描的图像中找出哪个框被勾选)。

在这种情况下,mapreduce实现将:

第1步:'传播'

传播图像以通过可用计算机进行处理。

第2步:'地图'

在每台计算机上,为每个图像:

  • 将复制到此计算机的1个图像作为输入
  • 找出哪个方框被勾选了
  • 输出投票的项目的编号(或代码或名称)

请注意,只要计算机获得1张图像,就可以开始工作。所有这些计算机都不需要进行交互来完成工作,因此不需要快速互连,共享内存或共享磁盘空间。

第3步:'聚集'

在1台计算机上收集所有这些输出。

第4步:'减少'

计算每个数字(或代码或名称)的投票数。

这个非常基本的例子也强调了如何进一步优化。在这种情况下,减少步骤本身可以在每台计算机上清楚地完成,然后可以在中央计算机上完成最终的减少。这将减少运行reduce步骤的一台计算机上的工作量,并限制需要通过网络传输的数据量。


示例:计数投票 - 优化(通过使用组合器)

第1步:'传播'

与以前相同:传播图像以通过可用计算机进行处理。

第2步:'地图'

与以前相同:在每台计算机上,对于每个图像:

  • 将复制到此计算机的1个图像作为输入
  • 找出哪个方框被勾选了
  • 输出投票的项目的编号(或代码或名称)

第3步:在当地“聚集”

在计算机上收集1台计算机的所有输出。

第4步:在本地'减少'

计算本地结果中每个数字(或代码或名称)的投票数,并输出这些计数。

第五步:全球'聚集'

在1台计算机上收集本地的所有输出。

第6步:全球'减少'

总结每个数字(或代码或名称)的本地投票数。


请注意,在步骤3中, 没有必要等待以下任何情况下的所有结果:

  • 如果这对于计算机本地资源(如存储/内存)来说太多了
  • 如果计算机发生故障时重做工作的成本被认为是大的等待所有本地结果
  • 如果网络现在可以自由传输中间结果

到目前为止,在本地计算机上生成的结果可以进行本地收集和本地缩减,这可以随时进行。

局部减少步骤称为组合器步骤。这是用于提高性能的可选步骤。