mapreduce的三种测试方式

mapreduce的三种测试方式

2023年6月26日发(作者:)

mapreduce的三种测试⽅式1.本地测试Mapreduce编写规范⽤户编写的程序分成三个部分:Mapper、Reducer和Driver。环境准备(1)创建maven⼯程(2)在⽂件中添加如下依赖 junit junit 4.12 4j log4j-slf4j-impl 2.12.0 hadoop-client 3.1.3 (3)在项⽬的src/main/resources⽬录下,新建⼀个⽂件,命名为“”,在⽂件中填⼊。 (4)编写程序(4.1)编写Mapper类package uce;import table;import itable;import ;import ;import ption;/** * KEYIN, 输⼊数据的key的类型 表⽰读取⽂件的位置(偏移量) LongWritable * VALUEIN, 输⼊数据的value的类型 表⽰⽂件的⼀⾏内容 Text * * KEYOUT, 输出数据的key的类型 表⽰就是⼀个单词 Text * VALUEOUT 输出数据的value的类型 表⽰就是1 IntWritable */public class WordCountMapper extends Mapper { /** * map阶段的核⼼处理⽅法 * @param key 输⼊数据的key * @param value 输⼊数据的value ⼀⾏数据 * @param context 对输出数据的包装对象 * @throws IOException * @throws InterruptedException */ @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { //为了更⽅便的操作输⼊数据,将value的类型转化为String String linecontext = ng(); //对当前⾏数据进⾏分割 String[] lineArr = (" "); //遍历集合 组织输出数据 for (String word : lineArr) { //准备输出数据的key Text outkey = new Text(word); //准备输出数据的value IntWritable outvalue = new IntWritable(1); //将数据写出 (outkey,outvalue); } }}(4.2)编写Reducer类package uce;import table;import ;import r;import ption;/** * KEYIN, 输⼊内容的key的类型 表是就是Map阶段的输出数据的key Text * VALUEIN, 输⼊内容的value的类型 表是就是Map阶段的输出数据的value IntWritable * * KEYOUT, 输出数据的key的类型 表⽰⼀个单词 Text * VALUEOUT 输出数据的value的类型 表⽰单词出现的次数 IntWritable */public class WordCountReducer extends Reducer { /** * * @param key 输⼊数据的key ⼀个单词 * @param values 表⽰相同的key所对应的⼀组value * @param context 输出数据的包装对象 * @throws IOException * @throws InterruptedException */ @Override protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { // 初始化单词出现次数 int sum = 0; // 遍历当前相同key对应的values 进⾏累加操作 for (IntWritable value : values) { sum+=(); } // 将累加结果写出 (key, new IntWritable(sum)); }}(4.2)编写Driver驱动类package uce; import uration; import ; import table; import ; import ; import putFormat; import tputFormat; import ption;public class WordCountDriver { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { //1.创建Configuration对象 Configuration conf = new Configuration(); //2.创建Job对象(⽤来包装MR作业的对象) Job job = tance(conf); //3.给Job关联当前的驱动类 ByClass(); //4.给Job关联Mapper类和Reducer类 perClass(); ucerClass(); //5. 指定job执⾏的时候的Map阶段的输出数据的类型 OutputKeyClass(); OutputValueClass(); //6.指定job最终的输出结果的类型 putKeyClass(); putValueClass(); //7.指定要分析的⽂件的输⼊路径和输出路径 // 本地运⾏ utPaths(job, new Path("D:idea ")); putPath(job, new Path("D:idea workspaceMapreducesrcoutput")); // 集群运⾏ /*utPaths(job, new Path(args[0])); putPath(job, new Path(args[1]));*/ //8.提交作业 rCompletion(true); }}运⾏测试2.集群测试集群测试需要注意的是2.1编写的Mapper类,Reducer类不⽤修改,只需修改Driver驱动类中的第7部分即可

2.2将程序打成JAR包,然后上传到hadoop集群中(补充⼀下如何从hadoop集群上下载⽂件 sz 要下载的⽂件)2.3启动集群2.4 cd 到JAR包上传的路径位置,执⾏ hadoop jar JAR名字 全类名(在idea中点击类名直接copy reference) ⽂件输⼊路径 ⽂件输出路径

(hadoop jar untDriver / /output)2.5 浏览器中输⼊:hadoop102:9870 (每个⼈的配置的地址不⼀样) Web端查看HDFS的NameNode,查看HDFS上存储的数据信息3.在windows上向集群提交任务(了解)添加必要的配置信息 package uce; import uration; import ; import table; import ; import ; import putFormat; import tputFormat; import ption;public class WordCountDriver { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { //1.创建Configuration对象 Configuration conf = new Configuration(); //设置HDFS NameNode的地址 ("tFS", "hdfs://hadoop102:9820"); // 指定MapReduce运⾏在Yarn上 ("","yarn"); // 指定mapreduce可以在远程集群运⾏ ("-platform","true"); //指定Yarn resourcemanager的位置 ("me","hadoop103"); //2.创建Job对象(⽤来包装MR作业的对象) Job job = tance(conf); //3.给Job关联当前的驱动类 // ByClass(); //打包,并将Jar包设置到Driver中 ("D:"); //4.给Job关联Mapper类和Reducer类 perClass(); ucerClass(); //5. 指定job执⾏的时候的Map阶段的输出数据的类型 OutputKeyClass(); OutputValueClass(); //6.指定job最终的输出结果的类型 putKeyClass(); putValueClass(); //7.指定要分析的⽂件的输⼊路径和输出路径 // 本地运⾏ utPaths(job, new Path("D:idea ")); putPath(job, new Path("D:idea workspaceMapreducesrcoutput")); // 集群运⾏ /*utPaths(job, new Path(args[0])); putPath(job, new Path(args[1]));*/ //8.提交作业 rCompletion(true); }}(2)编辑任务配置1)检查第⼀个参数Main class是不是我们要运⾏的类的全类名,如果不是的话⼀定要修改!2)在VM options后⾯加上 :-DHADOOP_USER_NAME=atguigu3)在Program arguments后⾯加上两个参数分别代表输⼊输出路径,两个参数之间⽤空格隔开。如:hdfs://hadoop102:9820/input hdfs://hadoop102:9820/output(3)打包,并将Jar包设置到Driver中 主要修改了两个位置 uration的配置

2 设置jar加载路径 ("D:");(4)提交并查看结果

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687752771a39433.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信