MapReduce实践及Yarn资源调度

本文介绍了MapReduce的思想,Hadoop MapReduce的设计及编程规范,通过WordCount实例展示了MapReduce的使用。同时,详细讲解了Yarn的资源调度,包括FIFO Scheduler、Capacity Scheduler和Fair Scheduler的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.MapReduce介绍

1.理解MapReduce思想

​ MapReduce思想在生活中处处可见。或多或少都曾接触过这种思想。MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)。即使是发布过论文实现分布式计算的谷歌也只是实现了这种思想,而不是自己原创。

Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。

Reduce(规约)负责“合”,即对map阶段的结果进行全局汇总。

这两个阶段合起来正是MapReduce思想的体现。

在这里插入图片描述

还有一个比较形象的语言解释MapReduce:

我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。

现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

2.Hadoop MapReduce设计构思

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

既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output)。

如何对付大数据处理:分而治之

l 构建抽象模型:Map和Reduce

MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。

Map: 对一组数据元素进行某种重复式的处理;

Reduce: 对Map的中间结果进行某种进一步的结果整理。

MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:

map: (k1; v1) → [(k2; v2)]

reduce: (k2; [v2]) → [(k3; v3)]

在这里插入图片描述

3.MapReduce编程规范及示例编写

编程规范

mapReduce编程模型的总结:

MapReduce的开发一共有八个步骤其中map阶段分为2个步骤,shuffle阶段4个步骤,reduce阶段分为2个步骤

Map阶段2个步骤

第一步:设置inputFormat类,将我们的数据切分成key,value对,输入到第二步

第二步:自定义map逻辑,处理我们第一步的输入数据,然后转换成新的key,value对进行输出

shuffle阶段4个步骤(了解,可以全部不用管)

第三步:对输出的key,value对进行分区

第四步:对不同分区的数据按照相同的key进行排序

第五步:对分组后的数据进行规约(combine操作),降低数据的网络拷贝(可选步骤)

第六步:对排序后的额数据进行分组,分组的过程中,将相同key的value放到一个集合当中

reduce阶段2个步骤

第七步:对多个map的任务进行合并,排序,写reduce函数自己的逻辑,对输入的key,value对进行处理,转换成新的key,value对进行输出

第八步:设置outputformat将输出的key,value对数据进行保存到文件中

4.WordCount实例

4.1准备数据并上传

cd /opt/servers
vim wordcount.txt

hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop

hdfs dfs -mkdir /wordcount/input
hdfs dfs -put wordcount.txt /wordcount/input

4.2测试官方案例

hadoop jar /opt/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /wordcount/input /wordcount/output

4.3定义一个mapper类

public class WordCountMapper extends Mapper<LongWritable,Text,Text,LongWritable> {
   
     @Override
     public void map(LongWritable key, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗人在流浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值