MapReduce 基础入门了解

1、什么是 MapReduce

1、首先让我们来重温一下 hadoop 的四大组件:
HDFS:分布式存储系统;
MapReduce:分布式计算系统;
YARN:hadoop 的资源调度系统;
Common:以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等。
2、MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架。
3、MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。

2、为什么需要 MapReduce

1、海量数据在单机上处理因为硬件资源限制,无法胜任。
2、而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度。
3、引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理。
4、设想一个海量数据场景下的数据计算需求:
单机版:磁盘受限,内存受限,计算能力受限。
分布式版:
(1) 数据存储的问题,hadoop 提供了 hdfs 解决了数据存储这个问题。
(2) 运算逻辑至少要分为两个阶段,先并发计算(map),然后汇总(reduce)结果。
(3) 这两个阶段的计算如何启动?如何协调?
(4) 运算程序到底怎么执行?数据找程序还是程序找数据?
(5) 如何分配两个阶段的多个运算任务?
(6) 如何管理任务的执行过程中间状态,如何容错?
(7) 如何监控?
(8) 出错如何处理?抛异常?重试?

可见在程序由单机版扩成分布式版时,会引入大量的复杂工作。为了提高开发效率,可以将分布式程序中的公共功能封装成框架,让开发人员可以将精力集中于业务逻辑。
5、Hadoop 当中的 MapReduce 就是这样的一个分布式程序运算框架,它把大量分布式程序都会涉及的到的内容都封装进了,让用户只用专注自己的业务逻辑代码的开发。它对应以上问题的整体结构如下:
MRAppMaster:MapReduce Application Master,分配任务,协调任务的运行。
MapTask:阶段并发任,负责 mapper 阶段的任务处理 YARNChild 进程。
ReduceTask:阶段汇总任务,负责 reducer 阶段的任务处理 YARNChild 进程。

3、MapReduce 编码规范

1、用户编写的程序分成三个部分:Mapper,Reducer,Driver(提交运行 MR 程序的客户端) 。
2、Mapper 的输入数据是 KV 对的形式(KV 的类型可自定义)。
3、Mapper 的输出数据是 KV 对的形式(KV 的类型可自定义)。
4、Mapper 中的业务逻辑写在 map()方法中。
5、map()方法(maptask 进程)对每一个<K,V>调用一次。
6、Reducer 的输入数据类型对应 Mapper 的输出数据类型,也是 KV 对的形式。
7、Reducer 的业务逻辑写在 reduce()方法中。
8、Reducetask 进程对每一组相同 k 的<K,V>组调用一次 reduce()方法。
9、用户自定义的 Mapper 和 Reducer 都要继承各自的父类。
10、整个程序需要一个 Drvier 来进行提交,提交的是一个描述了各种必要信息的 job 对象。

4、MapReduce 运行方式及Debug

MapReduce 程序运行方式:
A、本地运行模式:Eclipse 开发环境下本地运行,好处是方便调试和测试。
要点一:MapReduce 程序是被提交给 LocalJobRunner 在本地以单进程的形式运行。
要点二:数据输入输出可以在本地,也可以在 HDFS。
要点三:怎么实现本地运行?在你的 MapReduce 程序当中不要带集群的配置文件(本质就是由mapreduce.framework.name和yarn.resourcemanager.hostname两个参数决定)。
要点四:要想实现本地运行,还得做一件事:给 eclipse 安装 hadoop。
B、集群运行模式:打 jar 包,提交任务到集群运行。
要点一:首先要把代码打成 jar 上传到 linux 服务器。
要点二:用 hadoop jar 的命令去提交代码到 yarn 集群运行。
要点三:处理的数据和输出结果应该位于 hdfs 文件系统。
要点四:如果需要在 windows 中的 eclipse 当中直接提交 job 到集群,则需要修改 YarnRunner 类,这个比较复杂,不建议使用。

5、学习内容

上节学习内容:MapReduce 入门案例wordcount
下节学习内容:MapReduce 程序的核心运行机制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值