MapReduce程序的开发过程
1. 在linux(虚拟机环境)下安装hadoop2.8.3
1.1 安装JDK环境
1.2 安装hadoop
1.3 进行配置:core-site.xml,hdfs-site.xml设置
1.4 初始化namenode
1.5 启动dfs和yarn
2. 在主机WIN10下安装STS及maven
3. 在将linux下hadoop目录全部拷贝到WIN10下,设置HADOOP-HOME环境变量,并将HADOOP-HOME/bin加入PATH
4. 将hadoop-eclipse-plugin-2.8.3插件拷贝到STS的plugin目录下,并将winutils.exe放入win10中hadoop/bin目录下,将hadoop.dll加入到windows/system32目录下
5. 启动STS安装hadoop-eclipse-plugin-2.8.3插件(在sts中设置hadoop的安装目录,并建立一个linux下hadoop服务器的实例,设置其dfs server的IP和port),可以看到所有hadoop的节点内目录
6. 生成一个mapreduce项目,在项目的src中新建一个wordcount.java文件
7. 将代码加入其中:
package helloWordCount;
public class WordCount {
public static class TokenizerMapper 
       extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();
public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }
public static class IntSumReducer 
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values, 
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }
public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    conf.addResource("../core-site.xml");//将hadoop的设置导入,这样就不会出现找不到目录的情况了
    conf.addResource("../hdfs-site.xml");//将hadoop的设置导入,这样就不会出现找不到目录的情况了
    //String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    String[] otherArgs = new String[] {"/input", "/output"};
    if (otherArgs.length < 2) {
      System.err.println("Usage: wordcount <in> [<in>...] <out>");
      System.exit(2);
    }
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    for (int i = 0; i < otherArgs.length - 1; ++i) {
      FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
    }
    FileOutputFormat.setOutputPath(job,
      new Path(otherArgs[otherArgs.length - 1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}
8.完成后,右击文件wordcount.java,点击Run As-》run on hadoop运行
第一次运行时出现找不到指定的文件夹的异常,其原因是没有将hadoop的基本设置导入,这时需要加入上面带有下划线的两行,一切OK!
MapReduce程序的开发过程的更多相关文章
- 从零开始学习Hadoop--第2章 第一个MapReduce程序
		1.Hadoop从头说 1.1 Google是一家做搜索的公司 做搜索是技术难度很高的活.首先要存储很多的数据,要把全球的大部分网页都抓下来,可想而知存储量有多大.然后,要能快速检索网页,用户输入几个 ... 
- Hadoop(二):MapReduce程序(Java)
		Java版本程序开发过程主要包含三个步骤,一是map.reduce程序开发:第二是将程序编译成JAR包:第三使用Hadoop jar命令进行任务提交. 下面拿一个具体的例子进行说明,一个简单的词频统计 ... 
- 攻城狮在路上(陆)-- 配置hadoop本地windows运行MapReduce程序环境
		本文的目的是实现在windows环境下实现模拟运行Map/Reduce程序.最终实现效果:MapReduce程序不会被提交到实际集群,但是运算结果会写入到集群的HDFS系统中. 一.环境说明: ... 
- windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
		按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ... 
- 编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行
		今天主要来说说怎么在Hadoop2.2.0分布式上面运行写好的 Mapreduce 程序. 可以在eclipse写好程序,export或用fatjar打包成jar文件. 先给出这个程序所依赖的Mave ... 
- 如何在Hadoop的MapReduce程序中处理JSON文件
		简介: 最近在写MapReduce程序处理日志时,需要解析JSON配置文件,简化Java程序和处理逻辑.但是Hadoop本身似乎没有内置对JSON文件的解析功能,我们不得不求助于第三方JSON工具包. ... 
- hadoop——在命令行下编译并运行map-reduce程序  2
		hadoop map-reduce程序的编译需要依赖hadoop的jar包,我尝试javac编译map-reduce时指定-classpath的包路径,但无奈hadoop的jar分布太散乱,根据自己 ... 
- hadoop-初学者写map-reduce程序中容易出现的问题 3
		1.写hadoop的map-reduce程序之前所必须知道的基础知识: 1)hadoop map-reduce的自带的数据类型: Hadoop提供了如下内容的数据类型,这些数据类型都实现了Writab ... 
- mapreduce程序编写(WordCount)
		折腾了半天.终于编写成功了第一个自己的mapreduce程序,并通过打jar包的方式运行起来了. 运行环境: windows 64bit eclipse 64bit jdk6.0 64bit 一.工程 ... 
随机推荐
- JDK源码那些事儿之常用的ArrayList
			前面已经讲解集合中的HashMap并且也对其中使用的红黑树结构做了对应的说明,这次就来看下简单一些的另一个集合类,也是日常经常使用到的ArrayList,整体来说,算是比较好理解的集合了,一起来看下 ... 
- [ 转载 ] vue.js面试题一
			转载自:https://www.cnblogs.com/aimeeblogs/p/9501490.html 如有侵权 联系删除 Vue.js面试题整理 一.什么是MVVM? MVVM是Model-Vi ... 
- mybatis-oracle 新增序列
			1.参考 https://blog.csdn.net/qq_29001173/article/details/82106853 2.思考: 2.1获取序列下一个值:seq_car.nextval 2. ... 
- php基本语法形式
			站长新闻: 备注:目前有很多人通过李书记博客找到我,请教各种关于问题,而我这段时间是比较忙的,有时候真的是有心无力,网站更新也少了,希望大家见谅!还有很多phper希望我找下关于php相关的技术文档我 ... 
- 020_C语言常用函数
			1. 清除数组,初始化数值 头文件:#include <memory.h>或 #include <string.h>函数原型:memset(void *s,int ch,siz ... 
- react 后台(一) react + redux + react-route + webpack+ axios + antd + less
			create-react-app 项目名称(项目失败,ant 的样式出不来) 项目技术栈 react + redux + react-route + webpack+ axios + less + a ... 
- java中VO的使用(组成复杂的实体类)
			https://blog.csdn.net/G0_hw/article/details/78326359 
- background-size值为cover和值为100%的区别
			background-size:100% 100%;---按容器比例撑满,图片变形: background-size:cover;---把背景图片放大到适合元素容器的尺寸,图片比例不变. IE8及以下 ... 
- [报错解决] 关于windows下 使用Anaconda3安装的python无法使用ssl模块问题.关联pip无法下载https
			关联错误: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not ... 
- redis之哨兵集群
			一.主从复制背景问题 Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用: 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来. 扩展主节点的读能力,分担主节点读压力. 但是问题是: ... 
