大数据运算系统(1)--- MapReduce

    xiaoxiao2021-04-18  75

    一、MapReduce/Hadoop 简介: MapReduce是目前云计算中最广泛使用的计算模型,由Google提出。 Hadoop是MapReduce的一个开源实现。 1、编程模型 (1)整体思路 程序员写串行程序。 由 系统完成并行分布式执行。 程序员保证串行程序的正确性,系统负责并行分布执行的正确性和效率。 (2)数据模型 <key, value>:数据由一条一条的记录组成;记录之间是无序的;每一条记录有一个key和一个value;key:可以不唯一;key与value的具体类型和内部结构由程序员决定,系统基本上把它们看作黑匣。 (3)Map-shuffle-Reduce Map(ik, iv) -> {<mk, mv>}  输入是一个key-value记录,输出是0~多个key-value记录, mk和ik可能完全不同。 shuffle:由系统完成。shuffle=group by mk。对于所有Map函数的输出,进行 group by将相同mk的所有mv都一起提供给Reduce。 Reduce(mk, {mv}) -> {<ok,ov>}  输入是 一个mk和与之对应的所有mv,输出是0~多个key-value记录, ok与mk可能不同程序员编制串行的Map函数和Reduce函数,系统完成shuffle功能。 (4)Word count举例 (5)与SQL Select语句的关系 Map:类似Selection/projection Shuffle:类似Group by Reduce:类似Aggregation,Having 2、系统实现 (1)MapReduce系统架构 master/worker (2)MapReduce/Hadoop系统架构 JobTracker:控制协调作业的运行 TaskTracker:执行Map Task或Reduce Task JobTracker,TaskTracker, Name NodeData Node都是进程,所以可以在一台机器上同时运行JobTracker/Name Node,TaskTracker/Data Node。 (3)MR运行 提交作业:包括Map函数、Reduce函数(Jar)、配置信息(例如,几个Mappers,几个Reducers)、输入路径、输出路径等。 Map Task读数据:Split为一个HDFS数据块;Split的个数可能多余Mappers个数。 Map Task执行:对于一个Split,进行Mapper操作生成<mk, mv>。属于同一个Reduce task的<mk, mv>存储于同一个文件,放在本地硬盘上。 Shuffle:Rdeucer从每个Map task传输中间结果文件。对多个文件进行归并,从而实现group by。 Reduce:对每个<mk, {mv}>调用一次Reduce函数,产生<ok, ov>写入输出文件。 Combiner:partical reducer。 3、典型算法 (1)Grep(找到符合特定模式的文本) (2)Sorting 利用MapReduce系统的shuffle/sort功能完成sorting。identity指将输入拷贝到输出。 (3)Join 一组Mapper处理R,一组Mapper处理S;利用shuffle/group by把匹配的record放到一起;Reducer调用时,{mv}包含同一个join key的所有匹配的R和S记录。
    转载请注明原文地址: https://ju.6miu.com/read-675624.html

    最新回复(0)