一.准备工作

1.eclipse连接hadoop的插件,需要版本匹配,这有几个常用的 2 版本的插件

hadoop2x-eclipse-plugin-master

密码:feg1

2.hadoop-common-2.2.0-bin-master,这个跟版本无关,直接用就可以。

hadoop-common-2.2.0-bin-master

密码:nr3h

二.环境搭建

1.将 hadoop2x-eclipse-plugin-master 中对应的插件放到 eclipse 目录中的 plugin 下。

2.放入插件后重启 eclipse 生效,点击 windows->preferences->搜索hadoop,搜索出来说明成功。右边有hadoop installation directory,点击browser,选择hadoop的解压路径。点击Apply -> OK(我的hadoop是配置好的再从linux 中复制出来的,配置文件齐全,不知道没有配置的hadoop行不行。。。)

3.配置这个插件,点击 windows -> show view -> other

4.搜索 map,会出现如下图所示。

5.双击小黄象,在控制台会看到如下图

6.右击,选择第一个小蓝象。

7.配置连接信息

8.要注意的是两个端口号(hadoop2x)

port 50020是 mapred-site.xml 中配置的端口号,默认为9001

port 9000 是
core-site.xml 中配置的端口号,默认为9000

9.点击 finish 完成配置,会显示如下图,表示配置成功。

10.测试是否连接上 HDFS,点击右上角的 javaEE,会出现 DFS Locations

11.点击 DFS Locations,如果出现 HDFS 中的目录则连接成功。

12.配置HADOOP_HOME 和 path

13.配置 vinutils

将前面下载的 hadoop-common-2.2.0-bin-master 解压,复制 bin 里面的所有东西到本地的{HADOOP_HOME}/bin 下

14.把 hadoop-common-2.2.0-bin-master 下的bin的 hadoop.dll 放到 C:\Windows\System32 下,重启电脑

三.运行程序

1.伪造一份测试数据,并上传到HDFS中相应目录,在此省略。。

2.接下来运行 mapreduce 程序

package test;

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<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);
System.out.println("hello");
}
}
} 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();
//System.setProperty("hadoop.home.dir", "F:\\课件\\hadoop\\hadoop-2.5.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(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1); } }

3.将{‘HADOOP_HOME’}/etc/hadoop/log4j.properties 复制到该项目的 src 下面

右击 run as -> run configuration

4.配置路径,这个是HDFS 中的输入和输出路径

对应 new Path(args[0]) 和new Path(args[1])

5.在 console 控制台会出现类似命令行运行成功的标志表示 job 运行成功

6.结果可以在左侧看,右击蓝色小象,点击 Reconnect

嗨~磕磕绊绊总算弄出来了,下面是过程中遇到的一些问题。

1.配置连接信息的时候生搬硬套,端口号没改

注意:两个端口号有不同的作用,都是配置在hadoop集群配置文件中

一个是core-site.xml,另外一个是hdfs-site.xml 。

2.eclipse 执行 MapReduce 程序时会出现程序控制台不输出任何输出信息,没有日志信息,没有执行信息,无法知道程序执行的结果如何。

解决方法:将 hadoop 配置文件目录($HADOOP_HOME/etc/hadoop/)下的 log4j.properties 文件 copy 进工程中的src下。

3.Exception in thread "main" java.lang.NullPointerException

解决方法:在Hadoop2的bin目录下没有winutils.exe,所以下载
hadoop-common-2.2.0-bin-master,把 bin 下面的东西都复制到 {HADOOP_HOME}/bin 中就可以了

4.Failed to locate the winutils binary in the hadoop binary path,这是找不到
winutils 这个文件。

解决方法:跟3类似,重启电脑。

参考:http://blog.csdn.net/brotherdong90/article/details/50680458

http://www.cnblogs.com/braveym/p/6282420.html

window10下的eclipse用java连接hadoop执行mapreduce任务的更多相关文章

  1. windows下在eclipse上远程连接hadoop集群调试mapreduce错误记录

    第一次跑mapreduce,记录遇到的几个问题,hadoop集群是CDH版本的,但我windows本地的jar包是直接用hadoop2.6.0的版本,并没有特意找CDH版本的 1.Exception ...

  2. ubuntu 下安装eclipse &amp;java环境配置

    前面有一篇的博客写的是ubuntu下安装eclipse和java环境的配置.当时是安装网上的攻略进行的 ,当然也是能够成功的. 近期把那台电脑送人了 ,仅仅好在自己的这台电脑上又一次安装一次了 ,唯一 ...

  3. windows 下用eclipse搭建java、python开发环境

    本人只针对小白!本文只针对小白!本文只针对小白! 最近闲来无事,加上之前虽没有做过eclipse上java.python的开发工作,但一直想尝试一下.于是边查找资料边试验,花了一天时间在自己的机器上用 ...

  4. 64位CentOS6.5下Eclipse用Java连接mysql

    1.到官网上下载jdbc驱动,我下载的是mysql-connector-java-5.0.8.tar.gz 2.解压下载到的文件 tar -zxvf mysql-connector-java-5.0. ...

  5. Windows平台下安装Eclipse插件,开发Hadoop应用

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  6. 在window下远程虚拟机(centos)hadoop运行mapreduce程序

    (注:虽然连接成功但是还是执行不了.以后有时间再解决吧 看到的人别参考仅作个人笔记)先mark下 1.首先在window下载好一个eclipse.和拷贝好linux里面hadoop版本对应的插件(我是 ...

  7. java连接ssh执行shell脚本

    在liunx上写了一个shell脚本,想通过java去调用这个shell脚本,不知道怎么去调用,在网上说使用process这个进程方式,但是我执行机和我shell脚本都不在同一台电脑,老大说java中 ...

  8. 使用eclipse创建java程序可执行jar包

    一.eclipse中,在要打成jar包的项目名上右击,出现如下弹出框,选择“export”: 二.在接下来出现的界面中点击“jar file”,然后next: 三.在接下来出现的界面中,如图所示勾选上 ...

  9. 对hadoop 执行mapreduce时发生异常Illegal partition for的解决过程

    来自:http://blog.csdn.net/hezuoxiang/article/details/6878026 写了个mapreduce的JAVA程序,自定义了个partition class ...

随机推荐

  1. 【JavaScript】设计模式-module模式及其改进

    写在前面 编写易于维护的代码,其中最重要的方面就是能够找到代码中重复出现的主题并优化他们,这也是设计模式最有价值的地方 说到这里...... <head first设计模式>里有一篇文章, ...

  2. spring依赖注入中接口的问题

    问题描述:一个接口,有俩个实现类当注入时候名字不同时,会出现不同的情况 action层: @Controller("userAction") @Scope("protot ...

  3. Floyd算法(最短路)

    如题,这是最短路算法Floyd. Floyd,是只有五行的代码. 简单,易懂.O(N的三方)的时间也可以. 遇到简单的就这么用. #include<iostream> #include&l ...

  4. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya's Game。

    废话不多说,先上题目. 51nod Codeforces 两个其实是一个意思,看51nod题目就讲的很清楚了,题意不再赘述. 直接讲我的分析过程:刚开始拿到手有点蒙蔽,看起来很难,然后......然后 ...

  5. 一个“.java”文件中是否可以包含多个类(不是内部类)?有什么限制?

    可以,若这个类的修饰符是public则,其类名须与文件名相同.

  6. css 浮动和清除浮动

    在写页面布局的过程中,浮动是大家经常用的属性.在好多的排版布局中都是用的的浮动比如说下面这些地方都是应用到了浮动. 在我学习浮动的时候可是熬坏了脑筋,在这里我分享一下我对浮动这块知识的总结. 一.浮动 ...

  7. 【bzoj2761】[JLOI2011]不重复数字

    给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4. Inpu ...

  8. C#分布式事务解决方案-TransactionScope

    引用一下别人的导读:在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我们所希望的是能够在整个这个方法定义为一个事务,Transacti ...

  9. ch7-列表渲染(v-for key 数组更新检测 显示过滤/排序结果)

    1 说明 我们用 v-for 指令根据一组数组的选项列表进行渲染. v-for 指令需要以 item in items 形式的特殊语法, items 是源数据数组并且 item 是数组元素迭代的别名. ...

  10. 扩展jquery.validate自定义验证,自定义提示,本地化

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...