Mapreduce的编程流程主要分八个阶段:两个MAP阶段,四个shuffle阶段,两个reduce阶段。

Map两个阶段:

1:设置inputformat类,将数据分为key-value对(k1 v1),并将其输入到第二步。

2:自定义Map逻辑将第一步的结果转换为另外的键值对(k2,v2),并输出。

shuffle四个阶段:

3:对输出的键值对进行分区

4:对不同分区的数据按照相同的key排序

5:(可选),对分组后的数据进行初步规约,降低数据的网络拷贝。

6:对数据进行分组,将相同key的value放入同一个集合中。

Reduce两个阶段:

7:对多个Map任务的结果进行排序以及合并,编写Reduce函数实现自己的逻辑,对输入的键对值进行处理,转换为新的键对值(k3 v3),输出。

8:设置outputformat类处理并保存Reduce输出的键值对。

图解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbJTboOf-1603113436059)(https://s1.ax1x.com/2020/09/29/0eqy8g.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K0BpE1tg-1603113436066)(https://s1.ax1x.com/2020/09/29/0eq4aV.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UlWoI5sv-1603113436069)(https://s1.ax1x.com/2020/09/29/0eLkqI.png)]

Mapreduce wordcount案例编程流程

链接:https://blog.csdn.net/qq_16146103/article/details/105692080

重写Mapper类:

package org.example.wordcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;public class WcMapper extends Mapper<LongWritable, Text, Text, IntWritable> {Text k = new Text();IntWritable v = new IntWritable(1);@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {// 1 获取一行String line = value.toString();// 2 切割String[] words = line.split(" ");// 3 输出for (String word : words) {k.set(word);context.write(k, v);}}
}

重写Reducer类:

package org.example.wordcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;public class WcReducer extends Reducer<Text, IntWritable, Text, IntWritable>{int sum;IntWritable v = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {// 1 累加求和sum = 0;for (IntWritable count : values) {sum += count.get();}// 2 输出v.set(sum);context.write(key,v);}
}

main函数主驱动类:

package org.example.wordcount;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.junit.Test;public class WcDriver {@Testpublic void main() throws IOException, ClassNotFoundException, InterruptedException {// 1 获取配置信息以及封装任务Configuration configuration = new Configuration();Job job = Job.getInstance(configuration);// 2 设置jar加载路径job.setJarByClass(WcDriver.class);// 3 设置map和reduce类job.setMapperClass(WcMapper.class);job.setReducerClass(WcReducer.class);// 4 设置map输出job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 5 设置最终输出kv类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 6 设置输入和输出路径FileInputFormat.setInputPaths(job, new Path("D:/IDEA java项目/data/a.txt"));FileOutputFormat.setOutputPath(job, new Path("D:/IDEA java项目/data/output"));// 7 提交boolean result = job.waitForCompletion(true);System.exit(result ? 0 : 1);}
}

Mappreduce两种运行模式

集群运行模式:

1:将mapreduce程序提交给Yarn集群,分发到许多节点并发执行。

2:处理和输出的数据应位于hdfs文件系统中。

3:将文件打为jar包并上传,在集群中使用Hadoop命令执行。

应使用IDEA将map程序打包成jar包。

本地运行模式:

map程序用在本地用单进程执行,且处理和输出的数据在本地文件系统中。

mapreduce编程流程相关推荐

  1. mapreduce工作流程_详解MapReduce中的五大编程模型

    前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:[初 ...

  2. MapReduce编程基础

    MapReduce编程基础 1. WordCount示例及MapReduce程序框架 2.  MapReduce程序执行流程 3.  深入学习MapReduce编程(1) 4. 参考资料及代码下载 & ...

  3. MapReduce编程实践

    一.MapReduce编程思想 学些MapRedcue主要是学习它的编程思想,在MR的编程模型中,主要思想是把对数据的运算流程分成map和reduce两个阶段: Map阶段:读取原始数据,形成key- ...

  4. 大数据 - MapReduce编程案例 -BH3

    MapReduce编程案例 用mapreduce解决问题的关键是确定key,只有key相同的结果才会到同一个reduce中进行处理 默认分区使用HashPartitoner,hashCode%redu ...

  5. Hadoop三大框架之MapReduce工作流程

    一.MapReduce基础 MapReduce的思想核心是"分而治之",适用于大量复杂的任务处理场景(大规模数据处理场景). Map负责"分",把复杂的任务分解 ...

  6. 大数据之Hadoop学习——动手实战学习MapReduce编程实例

    文章目录 一.MapReduce理论基础 二.Hadoop.Spark学习路线及资源收纳 三.MapReduce编程实例 1.自定义对象序列化 需求分析 报错:Exception in thread ...

  7. 【小白视角】大数据基础实践(五) MapReduce编程基础操作

    目录 1. MapReduce 简介 1.1 起源 1.2 模型简介 1.3 MRv1体系结构 1.4 YARN 1.4.1 YARN体系结构 1.4.2 YARN工作流程 2. MapReduce ...

  8. Hadoop生态圈(二十一)- MapReduce编程基础

    目录 1. MapReduce Partition.Combiner 1.1 MapReduce Partition分区 1.1.1 默认情况下MR输出文件个数 1.1.2 修改reducetask个 ...

  9. MapReduce编程

    一.MapReduce编程规范 MapReduce的开发一共又八个步骤,其中Map阶段分为2个步骤,Shuffle阶段4个步骤,Reduce阶段分为2个步骤. 1.1 步骤流程 Map阶段2个步骤 设 ...

最新文章

  1. 第三代基因测序技术革新 云计算的应用
  2. 遇到困难挫折也不要悲观:每个人生来就是冠军(转)
  3. Linux下安装Tomcat
  4. 关于Ubuntu中 E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)解决方案
  5. 信息学奥赛一本通(2022:【例4.7】最小n值)
  6. html如何查找文件,如何查找网站上HTML的CLASS文件并下?如何查找网站上HTM 爱问知识人...
  7. 文件服务器 远程访问,远程访问文件服务器
  8. 有没有一些细分IT行业,没有35岁现象
  9. opencv-api minEnclosingCircle
  10. java static面试题_Java static面试题
  11. AcWing1069.凸多边形的划分(区间DP)题解
  12. HTML5 Notification
  13. SAP工具箱 多表导入程序
  14. 如何练好嗓子 让声音变得浑厚
  15. My97DateTimePicker使用说明
  16. 如何将epub电子书格式转换成txt文本
  17. 【黑马程序员西安中心】作为应届生的我,终于进入IT行业了
  18. 黄金分割法python实现
  19. 微信小程序常用知识点总结
  20. 豆瓣电影250数据分析精简版

热门文章

  1. Qt-FFmpeg开发-视频播放(4)
  2. 【uniapp】微信小程序中实现点击拨打电话的功能
  3. 学习像是探索一块未知的大陆
  4. 【GitLab】693- 用 GitLab 做 CI/CD 是什么感觉,太强了!!
  5. win10自带抓包工具_win10是否有抓包工具
  6. linux操作命令(带图片演示)
  7. 正则表达式 数字逗号隔开的正确解法
  8. mysql中主键、普通索引、唯一索引和全文索引
  9. php fsockopen函数,PHP fsockopen函数说明:
  10. doris 导入遇tablet writer write failed, err=-235问题解决