windows下eclipse连接hadoop开发并运行wordcount程序

前提:已经安装好eclipse并且设置好jdk环境变量

1、把hadoop-eclipse-plugin-2.×.×.jar放到eclipse下的plugins目录中,这里版本号自己决定,我的是2.8.3


2、启动eclipse,如果1步骤没有问题,点击window>preferences,会看到下图圈红部分。

这里如果没有的话,可以试着删掉下图圈出文件再重启eclipse,如果不行就说明jar与eclipse版本有冲突,换个jar包试试。


3、配置hadoop安装路径>也就是从官网下载的hadoop解压的路径,我下载的是2.7.7版本的,与plugin插件版本不一致但是没有问题,最好还是用相近版本的。这里配置是为了创建mapreduce项目时可以自动导入hadoop相关包,如果配置错误,会发现项目编写时提醒缺少hadoop包。


4、点击window>show view,找到下图圈出tool并打开,


然后点击new hadoop location,


然后按照下图中所示填写,


完成以后点击finish,然后可以在project  explorer(记得在eclipse最右边上面切换成hadoop布局)那里看到dfs  locations,如下图。


5、找到hadoop在windows下运行的程序工具,winutils.exe和hadoop.dll,将winutils.exe放在hadoop安装目录下的bin目录里,hadoop.dll放在c>windows>system32 里面,否则运行程序时会报错,这里要注意的是这两个工具要和windows版本一致,我是win10,如果不一致程序也会报错。

6、配置环境变量,HADOOP_HOME就是hadoop安装路径啦,然后再path里面增加bin,这个不细说了。最好重启电脑使他生效。

7、新建map/reduce project,命名为wordcount,然后新建一个类叫WordCount,源代码下面会贴出。package org.apache.hadoop.examples;

import java.io.IOException;

import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;

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.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;

public class WordCount {

    public static class TokenizerMapper extends

            Mapper {

        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 {

            String line = value.toString();

            StringTokenizer itr = new StringTokenizer(line);

            while (itr.hasMoreTokens()) {

                word.set(itr.nextToken().toLowerCase());

                context.write(word, one);

            }

        }

    }

    public static class IntSumReducer extends

            Reducer {

        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable values,

                Context context) throws IOException, InterruptedException {

            int sum = 0;

            for (IntWritable val : values) {

                sum += val.get();

            }

            result.set(sum);

            context.write(key, new IntWritable(sum));

        }

    }

    public static void main(String[] args) throws Exception {

        Configuration conf = new Configuration();

        String[] otherArgs = new GenericOptionsParser(conf, args)

                .getRemainingArgs();

        if (otherArgs.length != 2) {

            System.err.println("Usage: wordcount ");

            System.exit(2);

        }

        Job job = new Job(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);

        FileInputFormat.addInputPath(job, new Path(otherArgs[0]));

        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

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

    }

}

这里还要在src下面新建一个log4j.properties文件,里面代码如下

# Configure logging for testing: optionally with log file

 

#log4j.rootLogger=debug,appender

log4j.rootLogger=info,appender

#log4j.rootLogger=error,appender

 

#\u8F93\u51FA\u5230\u63A7\u5236\u53F0

log4j.appender.appender=org.apache.log4j.ConsoleAppender

#\u6837\u5F0F\u4E3ATTCCLayout

log4j.appender.appender.layout=org.apache.log4j.TTCCLayout

如果没有这个文件运行时会报错找不到日志文件。

8、接下来要做运行前的准备了,首先在hdfs里面用命令新建一个input目录,hadoop fs -mkdir /input

然后hadoop fs -put test.txt /input/ #向input文件夹里放入所在路径的test.txt文件,这个文件也要自己建,自己往里面随便写几个单词。

对wordcount.java右键,run as>run  configurations,然后像下图这样配置。


注意检查里面的output在hdfs下是没有的,如果已经有了先把它删除掉。

9、运行,run  on hadoop,等待程序运行结束,结束后可以看到dfs locations下面蓝色小象下面会有output目录,点击第二个文件就能看到统计结果啦,到这里就结束啦!

最后是hadoop-eclipse-plugin-2.8.3.jar插件和win10下hadoop2.7.7对应的winutils.exe,hadoop.dll资源。

链接:https://pan.baidu.com/s/1kw33aDoE-sauXYUH7qzyww

提取码:v695

你可能感兴趣的:(windows下eclipse连接hadoop开发并运行wordcount程序)