大数据 MapReduce概述

文章目录

  • MapReduce 定义
  • MapReduce 优缺点
    • 优点
    • 缺点
  • MapReduce 核心思想
    • 官方单词统计案例分析
      • Map 阶段
      • Reduce 阶段
    • 总结

MapReduce 定义

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

MapReduce 优缺点

优点

  • Mapreduce 易于编程
    简单的实现一些接口,就可以完成一个分布式程序。这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说写一个分布式程序同写一个简单的串行程序是一致的。就是因为这个特点使得MapReduce编程变得非常流行。
  • 良好的扩展性
    当计算资源不能得到满足的时候,可以通过简单的增加机器来扩展计算能力。

缺点

  • 不擅长实时计算
    MapReduce无法像Mysql一样,在毫秒级或者秒级内返回结果。
  • 不擅长流式计算
    MapReduce的输入数据集是静态的,不能动态变化。而流式计算的输入数据是动态的。意味着MapReduce处理流式数据十分困难。
  • 不擅长DAG(有向图)计算
    DAG计算可以表述为多个应用程序存在依赖关系,后一个应用程序的输入为前一个应用程序的输出。在这种情况下MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常低下。

MapReduce 核心思想

官方单词统计案例分析

下面分析官方WordCount数据流走向深入理解 MapReduce 核心思想。

  • 需求
    现在有一个文本文件,记录了多个单词。现需要对此文本文件中的每个单词出现的次数进行统计。统计结果首字母a到p单词出现次数写入 a_p.txt 中,首字母q到z单词出现次数写入 q_z.txt 中。

MapReduce 处理流程如下图所示
大数据 MapReduce概述_第1张图片

Map 阶段

Map阶段两个 Map 任务按规则拆分文本文件数据为两部分,并分别读取这些数据。按空格切分行内单词,组装成KV键值对。将所有的KV键值对中的单词,按照单词首字母,分成两个分区写入到磁盘中。

Reduce 阶段

Reduce 阶段两个 Reduce 任务,根据上一个阶段两个Map任务的输出数据,其中一个统计a到p开头的单词数据,另一个统计q到z开头的单词数据,然后分别输出结果文件。

总结

  • 一个完整的 MapReduce 程序在分布式运行时有3类实例进程:
    1. MrAppMaster : 负责整个程序的过程调度以及状态协调。
    2. MapTask : 负责 Map 阶段的整个数据处理流程。
    3. ReduceTask : 负责Reduce阶段的整个数据处理流程。
  • 分布式的运算程序往往需要分成至少2个阶段
    1. 第一个阶段的 MapTask 并发实例,完全并行运行,互不相干。
    2. 第二个阶段的 ReduceTask 并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出
    3. MapReduce 编程模型只能包含一个 Map 阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。

你可能感兴趣的:(大数据技术,大数据,java,mapreduce,hadoop,hdfs)