win10 Intellij idea开发Hadoop MapReduce程序单机测试

原创 2016年10月22日 15:58:40

测试《Hadoop权威指南》第二章的天气例子
环境;win10,JDK1.8,Intellij idea,hadoop2.7.2

1.下载Hadoop包

2.打开IDEA新建Java项目
这里写图片描述
这里写图片描述

3.项目配置 File —- Project Structure
(1)首先注意SDK的正确配置,使用JDK1.8
这里写图片描述

(2)加入hadoop的jar依赖包
这里写图片描述
这里写图片描述

(3)打包配置
这里写图片描述
这里写图片描述
这里写图片描述

4.编写map-reduce代码
这里写图片描述

(1)Mapper
负责预处理文件,准备数据

package com.hadoop.tempearture;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class MaxTemperatureMapper
        extends Mapper<LongWritable, Text, Text, IntWritable> {  //注1
    private static final int MISSING = 9999;
    @Override
    public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        String line = value.toString();
        String year = line.substring(15, 19);
        int airTemperature;
        if (line.charAt(87) == '+') { // parseInt doesn't like leading plus signs
            airTemperature = Integer.parseInt(line.substring(88, 92));
        } else {
            airTemperature = Integer.parseInt(line.substring(87, 92));
        }
        String quality = line.substring(92, 93);
        if (airTemperature != MISSING && quality.matches("[01459]")) {
            context.write(new Text(year), new IntWritable(airTemperature));
        }
    }
}

(2)reducer
处理数据

package com.hadoop.tempearture;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class MaxTemperatureReducer
        extends Reducer<Text, IntWritable, Text, IntWritable> {
    @Override
    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context)
            throws IOException, InterruptedException {
        int maxValue = Integer.MIN_VALUE;
        for (IntWritable value : values) {
            maxValue = Math.max(maxValue, value.get());
        }
        context.write(key, new IntWritable(maxValue));
    }
}

(3) main()

package com.hadoop.tempearture;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class MaxTemperature {
    public static void main(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: MaxTemperature <input path> <output path>");
            System.exit(-1);
        }

        Job job = new Job();
        job.setJarByClass(MaxTemperature.class);
        job.setJobName("Max temperature");

        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));

        job.setMapperClass(MaxTemperatureMapper.class);
        job.setReducerClass(MaxTemperatureReducer.class);

        job.setOutputKeyClass(Text.class);              
        job.setOutputValueClass(IntWritable.class);

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

5.配置编译器
这里写图片描述
这里写图片描述

注意:第三个框里只需添入输入路径和输出路径即可

6、将数据导入到你的程序中
这里写图片描述
注意:不要创建output目录,系统会自动创建。否则会报目录已存在的错。

simple.txt

0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9+00001+99999999999
0043011990999991950051512004+68750+023550FM-12+038299999V0203201N00671220001CN9999999N9+00221+99999999999
0043011990999991950051518004+68750+023550FM-12+038299999V0203201N00261220001CN9999999N9-00111+99999999999
0043012650999991949032412004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+01111+99999999999
0043012650999991949032418004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+00781+99999999999

7.运行
出错:
这里写图片描述
缺少hadoop.dll和winutils.exe

hadoop.2.7.2的hadoop.dll和winutils.exe下载后,粘贴在hadoop-2.7.2/bin目录下

运行成功:
output目录下有输出的结果文件
output\part-r-00000.txt

1949 111
1950 22

版权声明:本文为博主原创文章,未经博主允许不得转载。

IDEA 调试 Hadoop程序

原文地址:http://blog.csdn.net/uq_jin/article/details/522351211、解压Hadoop到任意目录比如:D:\soft\dev\hadoop-2.7.22...
  • u010435203
  • u010435203
  • 2016年08月17日 22:51
  • 4994

Intellij idea开发Hadoop MapReduce程序

一、下载一个Hadoop包 http://mirrors.hust.edu.cn/apache/hadoop/common/ 二、打开Idea新建一个java项目 ...
  • fenghuibian
  • fenghuibian
  • 2016年10月25日 10:07
  • 4856

intellij idea本地开发调试hadoop的方法

我的intellij idea版本是14,hadoop版本2.6,使用《hadoop权威指南》的天气统计源码作为示例。 1、首先在hadoop官网上下载hadoop到本地(不需要进行环境变量的配置,仅...
  • programmer_wei
  • programmer_wei
  • 2015年04月26日 11:09
  • 11380

windows10+eclipse neon+hadoop2.6.4(伪分布式)远程连接虚拟机环境搭建

windows64位系统下使用eclipse连接hadoop服务器
  • chenruicsdn
  • chenruicsdn
  • 2017年03月03日 00:25
  • 777

Hadoop Intellij IDEA本地开发环境搭建

首先我们需要新建一个java工程用于开发Mapper与Reducer,同时我们也需要导入hadoop的依赖包,这些包可以在hadoop的 share/hadoop 目录下找到,你可以把这些包单独取出来...
  • u010171031
  • u010171031
  • 2016年11月03日 19:16
  • 8870

win 10 + maven + idea 15 + Hadoop 2.7.3开发环境配置

前言今天想在win 10上搭一个Hadoop的开发环境,希望能够直联Hadoop集群并提交MapReduce任务,这里给出相关的关键配置。步骤关于maven以及idea的安装这里不再赘述,非常简单。 ...
  • solo_sky
  • solo_sky
  • 2016年12月17日 14:35
  • 3860

idea本地运行mapreduce程序

上一篇文章介绍了如何在idea上运行hdfs程序,中间出现了很多错误,通过不断的在网上查找资料和自己的尝试。终于可以正常运行了。 这篇我们将进行mapreduce程序的调试。 准备工作: 下载ha...
  • chenzhongwei99
  • chenzhongwei99
  • 2017年05月19日 18:11
  • 1476

从自定义排序深入理解单机hadoop执行mapreduce过程

我们对数据进行处理的过程中,最常见的一种操作是排序和统计,特别是在数据量大的场景,实现高效的排序是业务系统开发过程中非常重要的一块。本人所在的公司是个电商企业,交易量非常大,同时产生的财务数据量也是非...
  • lm2009200
  • lm2009200
  • 2016年06月02日 21:03
  • 249

Eclipse下使用Hadoop单机模式调试MapReduce程序

在单机模式下Hadoop不会使用HDFS,也不会开启任何Hadoop守护进程,所有程序将在一个JVM上运行并且最多只允许拥有一个reducer 在Eclipse中新创建一个hadoop-test...
  • zhousenshan
  • zhousenshan
  • 2015年12月23日 19:43
  • 324

Eclipse下使用Hadoop单机模式调试MapReduce程序

java.io.IOException: Failed to set permissions of path: \tmp\hadoop-linkage\mapred\staging\linkage11...
  • a19881029
  • a19881029
  • 2014年02月11日 22:04
  • 15887
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:win10 Intellij idea开发Hadoop MapReduce程序单机测试
举报原因:
原因补充:

(最多只允许输入30个字)