mapreduce编程流程
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编程流程相关推荐
- mapreduce工作流程_详解MapReduce中的五大编程模型
前言 我们上一节讲了关于 MapReduce 中的应用场景和架构分析,最后还使用了一个CountWord的Demo来进行演示,关于MapReduce的具体操作.如果还不了解的朋友可以看看上篇文章:[初 ...
- MapReduce编程基础
MapReduce编程基础 1. WordCount示例及MapReduce程序框架 2. MapReduce程序执行流程 3. 深入学习MapReduce编程(1) 4. 参考资料及代码下载 & ...
- MapReduce编程实践
一.MapReduce编程思想 学些MapRedcue主要是学习它的编程思想,在MR的编程模型中,主要思想是把对数据的运算流程分成map和reduce两个阶段: Map阶段:读取原始数据,形成key- ...
- 大数据 - MapReduce编程案例 -BH3
MapReduce编程案例 用mapreduce解决问题的关键是确定key,只有key相同的结果才会到同一个reduce中进行处理 默认分区使用HashPartitoner,hashCode%redu ...
- Hadoop三大框架之MapReduce工作流程
一.MapReduce基础 MapReduce的思想核心是"分而治之",适用于大量复杂的任务处理场景(大规模数据处理场景). Map负责"分",把复杂的任务分解 ...
- 大数据之Hadoop学习——动手实战学习MapReduce编程实例
文章目录 一.MapReduce理论基础 二.Hadoop.Spark学习路线及资源收纳 三.MapReduce编程实例 1.自定义对象序列化 需求分析 报错:Exception in thread ...
- 【小白视角】大数据基础实践(五) MapReduce编程基础操作
目录 1. MapReduce 简介 1.1 起源 1.2 模型简介 1.3 MRv1体系结构 1.4 YARN 1.4.1 YARN体系结构 1.4.2 YARN工作流程 2. MapReduce ...
- Hadoop生态圈(二十一)- MapReduce编程基础
目录 1. MapReduce Partition.Combiner 1.1 MapReduce Partition分区 1.1.1 默认情况下MR输出文件个数 1.1.2 修改reducetask个 ...
- MapReduce编程
一.MapReduce编程规范 MapReduce的开发一共又八个步骤,其中Map阶段分为2个步骤,Shuffle阶段4个步骤,Reduce阶段分为2个步骤. 1.1 步骤流程 Map阶段2个步骤 设 ...
最新文章
- 第三代基因测序技术革新 云计算的应用
- 遇到困难挫折也不要悲观:每个人生来就是冠军(转)
- Linux下安装Tomcat
- 关于Ubuntu中 E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)解决方案
- 信息学奥赛一本通(2022:【例4.7】最小n值)
- html如何查找文件,如何查找网站上HTML的CLASS文件并下?如何查找网站上HTM 爱问知识人...
- 文件服务器 远程访问,远程访问文件服务器
- 有没有一些细分IT行业,没有35岁现象
- opencv-api minEnclosingCircle
- java static面试题_Java static面试题
- AcWing1069.凸多边形的划分(区间DP)题解
- HTML5 Notification
- SAP工具箱 多表导入程序
- 如何练好嗓子 让声音变得浑厚
- My97DateTimePicker使用说明
- 如何将epub电子书格式转换成txt文本
- 【黑马程序员西安中心】作为应届生的我,终于进入IT行业了
- 黄金分割法python实现
- 微信小程序常用知识点总结
- 豆瓣电影250数据分析精简版
热门文章
- Qt-FFmpeg开发-视频播放(4)
- 【uniapp】微信小程序中实现点击拨打电话的功能
- 学习像是探索一块未知的大陆
- 【GitLab】693- 用 GitLab 做 CI/CD 是什么感觉,太强了!!
- win10自带抓包工具_win10是否有抓包工具
- linux操作命令(带图片演示)
- 正则表达式 数字逗号隔开的正确解法
- mysql中主键、普通索引、唯一索引和全文索引
- php fsockopen函数,PHP fsockopen函数说明:
- doris 导入遇tablet writer write failed, err=-235问题解决