【MapReduce】超大集群的简单数据处理 part2

 

3 实现

MapReduce接口可以有很多种不同的实现。应当根据不同的环境选择不同的实现。比如,一个实现可以适用于小型的共享内存的机器,另一个实现可能是基于大型NUMA多处理器系统,还可能有为大规模计算机集群的实现。

本届描述了Google广泛使用的计算环境:用交换机网络[4]连接的,由普通PC构成的超大集群。在我们的环境里:

(1)     每个节点通常是双x86处理器,运行Linux,每台机器2-4GB内存。

(2)     使用的网络设备都是常用的。一般在节点上使用的是100M/或者千M网络,一般情况下都用不到一半的网络带宽。

(3)     一个cluster中常常有成百上千台机器,所以,机器故障是家常便饭。

(4)     存储时使用的便宜的IDE硬盘,直接放在每一个机器上。并且有一个分布式的文件系统来管理这些分布在各个机器上的硬盘。文件系统通过复制的方法来在不可靠的硬件上保证可用性和可靠性。

(5)     用户向调度系统提交请求。每一个请求都包含一组任务,映射到这个计算机cluster里的一组机器上执行。

 

3.1 执行概览

 

Map操作通过把输入数据进行分区(partition)(比如分为M块),就可以分布到不同的机器上执行了。输入块的拆成多块,可以并行在不同机器上执行。Reduce操作是通过对中间产生的key的分布来进行分布的,中间产生的key可以根据某种分区函数进行分布(比如hash(key) mod R,分布成为R块。分区(R)的数量和分区函数都是由用户指定的。

1是我们实现的MapReduce操作的整体数据流。当用户程序调用MapReduce函数,就会引起如下的操作(图一中的数字标示和下表的数字标示相同)。

 

1.  用户程序中的MapReduce函数库首先把输入文件分成M块,每块大概16M64M(可以通过参数决定)。接着在cluster的机器上执行处理程序。

2.  这些分排的执行程序中有一个程序比较特别,它是主控程序master。剩下的执行程序都是作为master分排工作的worker。总共有Mmap任务和Rreduce任务需要分排。master选择空闲的worker并且分配这些map任务或者reduce任务

3.  一个分配了map任务的worker读取并处理相关的输入小块。他处理输入的数据,并且将分析出的key/value对传递给用户定义的map函数。map函数产生的中间结果key/value对暂时缓冲到内存。

4.  这些缓冲到内存的中间结果将被定时刷写到本地硬盘,这些数据通过分区函数分成R个区。这些中间结果在本地硬盘的位置信息将被发送回master,然后这个master负责把这些位置信息传送给reduceworker

5.  master通知reduceworker关于中间key/value对的位置时,他调用remote procedure来从map worker的本地硬盘上读取缓冲的中间数据。当reduceworker读到了所有的中间数据,他就使用中间key进行排序,这样可以使得相同key的值都在一起。因为有许多不同keymap都对应相同的reduce任务,所以,排序是必须的。如果中间结果集太大了,那么就需要使用外排序。

6.  reduce worker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的reduce函数。reduce函数的对于本reduce区块的输出到一个最终的输出文件。

7.  当所有的map任务和reduce任务都已经完成了的时候,master激活用户程序。在这时候MapReduce返回用户程序的调用点。

 

当这些成功结束以后,mapreduce的执行数据存放在总计R个输出文件中(每个都是由reduce任务产生的,这些文件名是用户指定的)。通常,用户不需要合并这R个输出文件到一个文件,他们通常把这些文件作为输入传递到另一个MapReduce调用,或者用另一个分布式应用来处理这些文件,并且这些分布式应用把这些文件看成为输入文件由于分区(partition)成为的多个块文件。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值