Hadoop 入门笔记—核心组件 MapRuduce

作者:幻好

来源:恒生LIGHT云社区

基本概念

MapReduce 是一个分布式运算程序的编程框架,通过它能将用户将编写好的程序提交,并发运行在一个 Hadoop 集群上。

MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序。

MapReduce 是一个编程模型,分为两个阶段:Map 和 Reduce。输入的数据会先分块,然后由 Map 进行处理,最后输出到 Reduce 中。

可以将它理解成对数据整理,然后归纳的一个过程。

Hadoop 入门笔记—核心组件 MapRuduce_第1张图片

核心算法

MapReduce 的算法计划通常分三个步骤组成:

  • Map:映射或映射器的工作是处理输入数据。每个工作节点将map 函数应用于本地数据,并将输出写入临时存储。
  • Shuffle:工作节点根据输出键重新分配数据,对数据映射排序、分组、拷贝,目的是属于一个键的所有数据都位于同一个工作节点上。
  • Reduce:工作节点现在并行处理每个键的每组输出数据,并将结果数据存储到HDFS。

运行流程

MapReduce 通常由以下几个步骤组成:

  • input : 读取系统中的文本文件;
  • splitting : 将文件按照行进行拆分,能得到的K1 行数,V1 表示对应行的文本内容;
  • mapping : 并行将每一行按照空格进行拆分,拆分得到的List(K2,V2),其中K2 表示关键词,V2 的值为 1,代表出现 1 次;
  • shuffling:由于mapping 的操作可能在不同的机器上并行处理的,就得通过shuffling 操作将相同key 值的数据分发到同一个节点上去合并,这样才能统计出最终的结果,此时得到K2 为主键,List(V2) 为可迭代集合,V2 就是 Mapping 中的 V2;
  • Reducing : 对于每个工作节点上的K2 键值对进行Reduce() 操作,最终输出。
MapReduce 编程模型中 splittingshuffing 操作都是由框架实现的,需要我们自己编程实现的只有 mappingreducing,这也就是 MapReduce 这个称呼的来源。

Hadoop 入门笔记—核心组件 MapRuduce_第2张图片

优缺点

优点

  • 能将大规模数据分多个节点并行计算,减少数据计算所需的时间;
  • 将计算移动到数据的位置进行,降低网络成本;

缺点

  • 只能进行离线计算,不能进行流式计算和实时计算;
  • 过程结果会存到磁盘,增加了I/O的负荷;

总结

MapReduce 最核心的还是将用户开发的程序,能够发到 Hadoop 上运行并执行,能够动态的去处理提交的任务,通过并行的方式减少计算时间,获取最终的计算结果。

你可能感兴趣的