MapReduce详解-基础入门

    技术2022-07-10  146

    一、MapRduce定义

    MapReduce是一个分布式运算程序的编程框架,是用户开发"基于Hadoop的数据分析应用"的核心框架

    二、MapReduce的设计思路

    1、分而治之: 简化并计算的编程模式,不需要考虑集群之间的数据交互,只需要注重我们的业务逻辑 2、构建抽象模型:Map和Reduce 3、开发人员专注于实现Mapper和Reduce

    三、MapReduce特点

    优点 1、易于编程 2、可扩展性 3、高容错性 4、高吞吐量:每秒钟处理的数据量 不适用领域 1、难以实时计算 2、不适合流式计算 3、不擅长DAG(有向图)计算

    四、MapReduce核心编程思想

    1、MapReduce运算程序一般分为两个阶段:Map阶段和Reduce阶段 2、Map阶段的并发MapTask,完全并行运行,互不相干 3、Reduce阶段的并发ReduceTask,完全互不相干,但是他们的数据依赖于上一阶段的所有MapTask并发实例的输出 4、MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑十分复杂,只能用多个MapReduce程序,串行运行

    五、MapReduce核编程规范

    用户编写的程序分为三个部分:Mapper、Reduce和Driver·

    1、Mapper阶段

    1)用户自定义的Mapper要继承自己的父类 2)Mapper的输入数据是KV对的形式(KV的类型可自定义) 3)Mapper中的业务逻辑写在map()方法中 4)Mapper的输出数据是KV对的形式(KV的类型可自定义) 5)map()方法(MapTask进行)对每一个<K,V调用一次>

    2、Reduce阶段

    1)用户自定义Reduce要继承自己的父类 2)Reducer的输入数据类型对应Mapper的输出数据类型,也是KV 3)Reduce的业务逻辑写在reduce()方法中 4)ReduceTask进程对每一组相同K的组调用一次reduce()方法

    3、Driver阶段

    1)、获取配置形象,获取job对象实例 2)指定本程序的jar包所在的本地路径 3)管理Mapper/Reduce业务类 4)指定Mapper输出类型的K、V类型 5)指定最终输出的数据的K 、V类型 6)指定文件输入路径和输出路径 7)提交作业

    Processed: 0.012, SQL: 9