• MapReduce 概述


    1. MapReduce 定义

    • MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
    • MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

    2. MapReduce 优缺点

    • 优点:
      • 易于编程;
      • 良好的扩展性;
      • 高容错性;
      • 适合PB级以上海量数据的离线处理;
        缺点:
      • 不擅长实时计算;
      • 不擅长流式计算;
      • 不擅长DAG(有向图)计算;

    3. MapReduce 核心思想

    • MapReduce 运算程序一般需要分成两个阶段:Map阶段和Reduce阶段;


    ===================

    3.1 MapReduce 进程

    • 一个完整的MapReduce程序在分布式运行时,有三类实例进程:
      • MrAppMaster: 负责整个程序的过程调度及状态协调;
      • MapTask: 负责Map阶段的整个数据处理流程;
      • ReduceTask: 负责Reduce阶段的整个数据处理流程;

    4. MapReduce 编程规范

    • 用户编写的程序分成三个部分:Mapper,Reducer 和 Driver;

    • Mapper 阶段:

      • 用户自定义的 Mapper 要继承自己的父类;
      • Mapper 的输入数据是KV对的形式(KV的类型可自定义);
      • Mapper 中的业务逻辑写在map()方法中;
      • Mapper 的输出数据是KV对的形式(KV的类型可自定义);
      • map()方法(MapTask进程)对每一个<K,V>调用一次;
    • Reducer 阶段:

      • 用户自定义的Reducer要继承自己的父类;
      • Reducer 的输入数据类型对应 Mapper 的输出类型,也是KV;
      • Reducer 的业务逻辑写在 reduce() 方法中;
      • ReduceTask 进程对每一组相同K的<K,V>组调用一次 reduce() 方法;
    • Driver 阶段

      • 相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象;
  • 相关阅读:
    [Java] SSH框架笔记_框架分析+环境搭建+实例源码下载
    [JavaEE] WEB-INF有关的目录路径总结
    网站标题分隔符
    [Windows] 解决kmplayer播放rmvb文件音视不同步
    [MySQL] 数据统计 —— 按周,按月,按日分组统计数据
    [Java] JSTL格式化时间计算时差
    [C.Sharp] TimeSpan的用法,获取测试程序运行时间
    [设计模式] .NET设计模式笔记
    Spring Boot使用redis做数据缓存
    Spring Boot使用redis做数据缓存
  • 原文地址:https://www.cnblogs.com/linkworld/p/10946277.html
Copyright © 2020-2023  润新知