首页 > 编程知识 正文

MapReduce作业执行流程,mapreduce工作流程图

时间:2023-05-03 07:38:54 阅读:61265 作者:16

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

Map两个阶段:

设置inputformat类,将数据分成密钥值对(k1 v1 ),然后输入步骤2。

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

shuffle四个阶段:

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

4 )针对不同分区的数据使用相同的key 排序

5 ) )可选),对分组数据进行备用规约,减少数据的网络拷贝。

6 :对数据进行分组,将同一密钥的value放入同一收藏中。

Reduce两个阶段:

7 )对多个Map任务的结果进行排序和合并,创建Reduce函数以实现自己的逻辑,处理输入的密钥对值,将其转换为新的密钥对值(k3 v3 )并输出。

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

图解: [导出外链图像失败。 源站可能存在防盗链机制。 建议保存图像并直接上传。 (img-pbJTboOf-1603113436059 ) https://S1.ax1x.com/2020/09/29/0 eqy8g.png ) ]

[导出外链图像失败。 源站可能有防盗链机制。 建议保存图像并直接上传。 (img-K0BpE1tg-1603113436066 ) 3359 S1.ax1x.com/2020/09/29/0eq 4av.png ) ]

[导出外链图像失败。 源站可能有防盗链机制。 建议保存图像并直接上传。 (img-UlWoI5sv-1603113436069 ) 3359 S1.ax1x.com/2020/09/29/0 elk qi.png ) ]

Mapreduce wordcount案例编程过程链接:https://blog.csdn.net/qq_16146103/article/details/105692080

重写Mapper类:

package org.example.wordcount; import java.io.IOException; importorg.Apache.Hadoop.io.int writable; importorg.Apache.Hadoop.io.long writable; importorg.Apache.Hadoop.io.text; importorg.Apache.Hadoop.MapReduce.mapper; publicclasswcmapperextendsmapperlongwritable,Text,Text,IntWritable { Text k=new Text (; intwritablev=newintwritable(1; @ overrideprotectedvoidmap (长整型值,上下文上下文) throws IOException,InterruptedException { //1 //3输出for (字符串word : words ) k.set ) word; context.write(k,v ); } }} 重写Reducer类:

package org.example.wordcount; import java.io.IOException; importorg.Apache.Hadoop.io.int writable; importorg.Apache.Hadoop.io.text; importorg.Apache.Hadoop.MapReduce.reducer; publicclasswcreducerextendsreducertext,IntWritable,text,IntWritable{ int sum; IntWritable v=new IntWritable (; @ overrideprotectedvoidreduce (文本密钥,IterableIntWritable values,上下文) throws IOException,interrrupted exception //2输出v.set(sum ); context.write(key,v ); }} main函数主驱动类:

package org.example.wordcount; import java.io.IOException; importorg.Apache.Hadoop.conf.configuration; importorg.Apache.Hadoop.fs.path; importorg.Apache.Hadoop.io.int writable; importorg.Apache.Hadoop.io.text; importorg.Apache.Hadoop.MapReduce.job; importorg.Apache.Hadoop.MapReduce.lib.input.fileinputformat; importorg.Apache.Hadoop.MapReduce.lib.output.fileoutputformat; import org.junit.Test; publicclasswcdriver { @ testpublicvoidmain (throwsioexception、ClassNotFoundException、interruptedexception )/1获取配置信息和任务类别//2设置jar加载路径job.setjarbyclass (WC驱动程序. class )//3map和reduce类job.setmapperclass (WC mapper.class ) //4设置映射输出job.setmapoutputkeyclass (text.class ); job.setmapoutputvalueclass (int writable.class; //5设置最终输出kv类型job.setoutputkeyclass (text.class ); job.setoutputvalueclass (int writable.class; //6输入/输出路径fileinputformat.setinputpaths (作业,新建路径) (d:/ideaJava项目/data/a.txt ) ) ); fileoutputformat.setoutputpath (job,newpath('d:/ideaJava项目/data/output ' ) ); //7提交布尔结果=job.wait for completion (true ); system.exit (结果? 0 : 1; }MapPReduce的两种运行模式集群的运行模式:将mapreduce程序提交到Yarn集群,分发到多个节点并同时运行。

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

3 )将文件作为jar包上传,并在群集中使用Hadoop命令运行。

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

本地运行模式: map程序本地在单个进程中运行,处理和输出的数据位于本地文件系统中。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。