文档详情

MapReduce 编程模型简介

hjk****65
实名认证
店铺
DOC
53.50KB
约2页
文档ID:178045672
MapReduce 编程模型简介_第1页
1/2

MapReduce 编程模型简介随着信息化的进一步加深,在各个领域,如电信、交通、金融、零售、航天、医药等,数据量级都呈现快速增长趋势如何高效并且无误地存储、分析、理解以及利用这些大规模数据,成为一个关键性问题为了应对大规模数据处理的难题,MapReduce 编程模型应运而生Google 提出的这一模型,由于良好的易用性和可扩展性,得到了工业界和学术界的广泛支持Hadoop,MapReduce 的开源实现,已经在 Yahoo!, Facebook, IBM, 百度 , 中国移动等多家单位中使用MapReduce 编程模型MapReduce 以函数方式提供了 Map 和 Reduce 来进行分布式计算Map 相对独立且并行运行,对存储系统中的文件按行处理,并产生键值(key/value)对Reduce 以 Map 的输出作为输入,相同 key 的记录汇聚到同一 reduce,reduce 对这组记录进行操作,并产生新的数据集所有 Reduce 任务的输出组成最终结果形式化描述如下:Map: (k1,v1) -> list(k2,v2)Reduce:(k2,list(v2)) ->list(v3)MapReduce 对任务的处理流程如图 1 所示。

主要分为几步:1. 用户提交 MapReduce 程序至主控节点,主控节点将输入文件划分成若干分片(split)主控节点 Master 和工作节点 worker 启动相应进程;2. 主控节点根据工作节点实际情况,进行 map 任务的分配;3. 被分配到 map 任务的节点读取文件的一个分片,按行进行 map 处理,将结果存在本地结果分成 R 个分片进行存储,R 对应的是 Reduce 数目;4. Map 节点将存储文件的信息传递给 Master 主控节点,Master 指定 Reduce 任务运行节点,并告知数据获取节点信息;5. Reduce 节点根据 Master 传递的信息去 map 节点远程读取数据因为 reduce 函数按分组进行处理,key 相同的记录被一同处理,在 reduce 节点正式处理前,对所有的记录按照 key 排序;6. Reduce 将处理结果写入到分布式文件系统中图 1 . MapReduce 处理流程图 MapReduce 适用情况由于 MapReduce 编程模型是对输入按行顺次处理,它更适用于对批量数据进行处理由于良好的可扩展性,MapReduce 尤其适用于对大规模数据的处理。

但是,对搜索等只是需要从大量数据中选取某几条特别的操作,MapReduce 相对于具有完善索引的系统而言,不再具有优势因为它需要对每条数据进行匹配,并与搜索条件相匹配的数据提取出来而如果采用索引系统,并不需要遍历所有的数据另外,由于每次操作需要遍历所有数据,MapReduce 并不适用于需要实时响应的系统相反地,对于搜索引擎的预处理工作比如网页爬虫、数据清洗,以及日志分析等实时性要求不高的后台处理工作,MapReduce 编程模型是足以胜任的。

下载提示
相关文档
正为您匹配相似的精品文档