Hadoop 入门笔记—核心组件 MapRuduce
【Hadoop 入门笔记—核心组件 MapRuduce】作者:幻好基本概念
来源:恒生LIGHT云社区
MapReduce 是一个分布式运算程序的编程框架,通过它能将用户将编写好的程序提交,并发运行在一个
Hadoop
集群上。MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序。
MapReduce 是一个编程模型,分为两个阶段:Map 和 Reduce。输入的数据会先分块,然后由 Map 进行处理,最后输出到 Reduce 中。
可以将它理解成对数据整理,然后归纳的一个过程。
![Hadoop 入门笔记—核心组件 MapRuduce](https://img.it610.com/image/info9/efb4a6a9be9148519c22f3a1f14bca3a.jpg)
文章图片
核心算法
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 编程模型中splitting
和shuffing
操作都是由框架实现的,需要我们自己编程实现的只有mapping
和reducing
,这也就是 MapReduce 这个称呼的来源。
![Hadoop 入门笔记—核心组件 MapRuduce](https://img.it610.com/image/info9/d7b9d58935e9444aadbde0a833f884db.jpg)
文章图片
优缺点
优点
- 能将大规模数据分多个节点并行计算,减少数据计算所需的时间;
- 将计算移动到数据的位置进行,降低网络成本;
- 只能进行离线计算,不能进行流式计算和实时计算;
- 过程结果会存到磁盘,增加了I/O的负荷;
MapReduce 最核心的还是将用户开发的程序,能够发到 Hadoop 上运行并执行,能够动态的去处理提交的任务,通过并行的方式减少计算时间,获取最终的计算结果。
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- Android中的AES加密-下
- 【读书笔记】贝叶斯原理
- 【韩语学习】(韩语随堂笔记整理)
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 人性的弱点-笔记
- 读书笔记:博登海默法理学|读书笔记:博登海默法理学 —— 正义的探索(1)
- D034+3组苏曼+《写作这回事》读书笔记
- 《自我的追寻》读书笔记3
- 最有效的时间管理工具(赢效率手册和总结笔记)