这篇博客,给大家,体会不一样的版本编程。

代码

  1. package zhouls.bigdata.myMapReduce.wordcount4;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.LongWritable;
  7. import org.apache.hadoop.io.Text;
  8. import org.apache.hadoop.mapreduce.Mapper;
  9. import org.apache.hadoop.util.StringUtils;
  10.  
  11. public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
  12.  
  13. //该方法循环调用,从文件的split中读取每行调用一次,把该行所在的下标为key,该行的内容为value
  14. protected void map(LongWritable key, Text value,
  15. Context context)
  16. throws IOException, InterruptedException {
  17. String[] words = StringUtils.split(value.toString(), ' ');
  18. for(String w :words){
  19. context.write(new Text(w), new IntWritable(1));
  20. }
  21. }
  22. }
  1. package zhouls.bigdata.myMapReduce.wordcount4;
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Reducer;
  8.  
  9. public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
  10.  
  11. //每组调用一次,这一组数据特点:key相同,value可能有多个。
  12. protected void reduce(Text arg0, Iterable<IntWritable> arg1,
  13. Context arg2)
  14. throws IOException, InterruptedException {
  15. int sum =0;
  16. for(IntWritable i: arg1){
  17. sum=sum+i.get();
  18. }
  19. arg2.write(arg0, new IntWritable(sum));
  20. }
  21. }

//System.setProperty("HADOOP_USER_NAME", "root");
//
//1、MR执行环境有两种:本地测试环境,服务器环境
//
//本地测试环境(windows):(便于调试)
// 在windows的hadoop目录bin目录有一个winutils.exe
// 1、在windows下配置hadoop的环境变量
// 2、拷贝debug工具(winutils.exe)到HADOOP_HOME/bin
// 3、修改hadoop的源码 ,注意:确保项目的lib需要真实安装的jdk的lib
//
// 4、MR调用的代码需要改变:
// a、src不能有服务器的hadoop配置文件(因为,本地是调试,去服务器环境集群那边的)
// b、再调用是使用:
// Configuration config = new Configuration();
// config.set("fs.defaultFS", "hdfs://HadoopMaster:9000");
// config.set("yarn.resourcemanager.hostname", "HadoopMaster");

//服务器环境:(不便于调试),有两种方式。
//首先需要在src下放置服务器上的hadoop配置文件(都要这一步)
//1、在本地直接调用,执行过程在服务器上(真正企业运行环境)
// a、把MR程序打包(jar),直接放到本地
// b、修改hadoop的源码 ,注意:确保项目的lib需要真实安装的jdk的lib
// c、增加一个属性:
// config.set("mapred.jar", "C:\\Users\\Administrator\\Desktop\\wc.jar");
// d、本地执行main方法,servlet调用MR。
//
//
//2、直接在服务器上,使用命令的方式调用,执行过程也在服务器上
// a、把MR程序打包(jar),传送到服务器上
// b、通过: hadoop jar jar路径 类的全限定名
//
//
//
//
//a,1 b,1
//a,3 c,3
//a,2 d,2
//
//
//a,3 c,3
//a,2 d,2
//a,1 b,1
//

  1. package zhouls.bigdata.myMapReduce.wordcount4;
  2.  
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.fs.FileSystem;
  5. import org.apache.hadoop.fs.Path;
  6. import org.apache.hadoop.io.IntWritable;
  7. import org.apache.hadoop.io.Text;
  8. import org.apache.hadoop.mapreduce.Job;
  9. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  10. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  11.  
  12. public class RunJob {
  13.  
  14. public static void main(String[] args) {
  15. Configuration config =new Configuration();
  16. config.set("fs.defaultFS", "hdfs://HadoopMaster:9000");
  17. config.set("yarn.resourcemanager.hostname", "HadoopMaster");
  18. // config.set("mapred.jar", "C:\\Users\\Administrator\\Desktop\\wc.jar");//先打包好wc.jar
  19. try {
  20. FileSystem fs =FileSystem.get(config);
  21.  
  22. Job job =Job.getInstance(config);
  23. job.setJarByClass(RunJob.class);
  24.  
  25. job.setJobName("wc");
  26.  
  27. job.setMapperClass(WordCountMapper.class);
  28. job.setReducerClass(WordCountReducer.class);
  29.  
  30. job.setMapOutputKeyClass(Text.class);
  31. job.setMapOutputValueClass(IntWritable.class);
  32.  
  33. FileInputFormat.addInputPath(job, new Path("/usr/input/wc/wc.txt"));//新建好输入路径,且数据源
  34.  
  35. Path outpath =new Path("/usr/output/wc");
  36. if(fs.exists(outpath)){
  37. fs.delete(outpath, true);
  38. }
  39. FileOutputFormat.setOutputPath(job, outpath);
  40.  
  41. boolean f= job.waitForCompletion(true);
  42. if(f){
  43. System.out.println("job任务执行成功");
  44. }
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }

Hadoop MapReduce编程 API入门系列之wordcount版本2(六)的更多相关文章

  1. Hadoop MapReduce编程 API入门系列之wordcount版本1(五)

    这个很简单哈,编程的版本很多种. 代码版本1 package zhouls.bigdata.myMapReduce.wordcount5; import java.io.IOException; im ...

  2. Hadoop MapReduce编程 API入门系列之wordcount版本4(八)

    这篇博客,给大家,体会不一样的版本编程. 是将map.combiner.shuffle.reduce等分开放一个.java里.则需要实现Tool. 代码 package zhouls.bigdata. ...

  3. Hadoop MapReduce编程 API入门系列之wordcount版本5(九)

    这篇博客,给大家,体会不一样的版本编程. 代码 package zhouls.bigdata.myMapReduce.wordcount1; import java.io.IOException; i ...

  4. Hadoop MapReduce编程 API入门系列之wordcount版本3(七)

    这篇博客,给大家,体会不一样的版本编程. 代码 package zhouls.bigdata.myMapReduce.wordcount3; import java.io.IOException; i ...

  5. Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)

    不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...

  6. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本3(九)

    不多说,直接上干货! 下面,是版本1. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本1(一) 下面是版本2. Hadoop MapReduce编程 API入门系列之挖掘气象数 ...

  7. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本2(十)

    下面,是版本1. Hadoop MapReduce编程 API入门系列之挖掘气象数据版本1(一) 这篇博文,包括了,实际生产开发非常重要的,单元测试和调试代码.这里不多赘述,直接送上代码. MRUni ...

  8. Hadoop MapReduce编程 API入门系列之join(二十六)(未完)

    不多说,直接上代码. 天气记录数据库 Station ID Timestamp Temperature 气象站数据库 Station ID Station Name 气象站和天气记录合并之后的示意图如 ...

  9. Hadoop MapReduce编程 API入门系列之MapReduce多种输入格式(十七)

    不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.ScoreCount; import java.io.DataInput; import java.i ...

随机推荐

  1. Linux下Shell脚本输出带颜色文字

    文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置作用如下: 背景色为蓝色 ...

  2. DB120连接TTL--OpenWRT

    DB120 TTL线连接 1.解压文件安装USB TTL PL2303HX 驱动 2.插上usb转ttl设备 3.串口调试 4.连接ttl线到db120 5.The END

  3. 简单servlet调用dao层完整步骤

    导入包lib(文件名称) 目录结构:web下:views.web-inf.index.jsp views下各种jsp文件和js(里面放封装好的jquery包) js下:jquery包(js文件后缀) ...

  4. 【转载】JSP 中EL表达式用法详解

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...

  5. 连接mysql时遇到的问题

    1.报错:The server time zone value '???ú±ê×??±??' is unrecognized or represents 解决方法:在jdbc连接的url后面加上ser ...

  6. 从零开始创建一个 PHP 扩展

    创建一个扩展的基本步骤都有哪些.示例中,我们将实现如下功能: <?phpecho say();?> 输出内容: $ php ./test.php$ hello word 在扩展中实现一个s ...

  7. 2、Linux的关机方式

    shutdown 关机指令,你可以man shutdown 来看一下帮助文档.例如你可以运行如下命令关机: shutdown –h 10 ‘This server will shutdown afte ...

  8. ReentrantLock(排他锁)

    在多线程操作时.保证一块共享资源的原子性.第一想到的就是用synchronized关键字 在jdk5提供一个更灵活更强大的 ReentrantLock 使用reentrantLock.lock();获 ...

  9. Official Documents

    1. Docker Installation https://docs.docker.com/install/linux/docker-ee/suse/ 2. Docker hub https://d ...

  10. CODEVS——T 1004 四子连棋

    http://codevs.cn/problem/1004/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descr ...