MapReduce的框架代码
2018-01-26 12:21
113 查看
package com.bigdata; import org.apache.hadoop.io.LongWritable; import java.io.IOException; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.task.reduce.MapOutput; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; import com.bigdata.hadoop_MapReduce2.WCMapper.MapReduceReducer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.io.Text; public class hadoop_MapReduce2 extends Configured implements Tool { // step 1 :Mapper class public static class WCMapper extends Mapper<LongWritable, Text, Text, IntWritable>{ private Text MapOutputkey = new Text(); // 出现一次就记录一次 private IntWritable mapOutputValue = new IntWritable(1); @Override public void map(LongWritable key, Text value,Context context)throws IOException, InterruptedException { // 读取文件的每一件,将Text类型装换为String类型 String linevalue = value.toString(); // 分割单词,以空格分割 String[]strs=linevalue.split(" "); // 分割之后将单词从数组中一个个拿出来,组成<keyvalue>,比如<hadoop,1> for (String str : strs) { // 设置key的输出 MapOutputkey.set(str); // map输出 context.write(MapOutputkey,mapOutputValue); } } // step 2 :Reducer class public static class MapReduceReducer extends Reducer<Text, IntWritable, Text , IntWritable>{ private IntWritable outputValue = new IntWritable(); protected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException { int sum = 0; // 对值进行迭代累加 for(IntWritable value : values) { // total sum+=value.get(); } // set output value outputValue.set(sum); // 最终输出 context.write(key, outputValue); } } } // step 3 :Driver public int run(String[] args)throws Exception{ // 获取集群中的相关配置信息 Configuration configuration = this.getConf(); // 创建一个job任务 Job job=Job.getInstance(configuration,this.getClass().getSimpleName()); // 整个MapReduce程序运行的入口,或者叫jar包的入口,jar具体运行的是哪个类 job.setJarByClass(this.getClass());; // 设置Job // input输入,输入的路径 Path inpath =new Path(args[0]); FileInputFormat.addInputPath(job, inpath); // output输出,输出路径 Path outpath = new Path(args[1]); FileOutputFormat.setOutputPath(job, outpath); // 设置mapper job.setMapperClass(WCMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); // 设置Reduce job.setReducerClass(MapReduceReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); // 提交Job-》YARN boolean isSuccess = job.waitForCompletion(true); return isSuccess ? 0:1; } public static void main(String[] args)throws Exception { Configuration configuration = new Configuration(); //run job int status = ToolRunner.run(configuration, new hadoop_MapReduce2(), args); //exit program System.exit(status); /* args = new String[] { "hdfs://hadoop3:9000/wc.input", "hdfs://hadoop3:9000/output" }; int status =new hadoop_MapReduce2().run(args); // 关闭 System.exit(status); } */ } }
相关文章推荐
- MapReduce框架中PageRank算法的代码实现
- 【MyBatis框架】mybatis逆向工程自动生成代码
- (Jquery功能篇) Jquery validate框架验证实例代码
- iframe框架高度随内容的变化而变化的代码
- 20个代码生成框架
- 90行代码,搞定日志监控框架
- 利用Volley框架开发实战(快速开发,代码直接可以用在实战中...)
- Ubuntu安装GoogleTest框架并测试C++代码
- Hadoop之Mapreduce------>入门级程序WordCount代码编写
- Hadoop的MapReduce框架中map和reduce的各自任务(能力工场--整理)
- Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程
- SSM框架——使用MyBatis Generator自动创建代码
- phpstorm编辑器智能提示框架代码
- Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页
- Atitit.提升 升级类库框架后的api代码兼容性设计指南
- javascript 代码片段 框架
- 大数据框架MapReduce的map与reduce任务数合理设置
- 任何javascript框架(如jQuery)的代码是藏不住的,都是完全暴露源码的,因为JavaScript不像java一样,java的一些代码被封装进jar了,JavaScript没有封装
- [2012-4-10]ThinkPHP框架被爆任意代码执行漏洞(preg_replace)