window10下的eclipse用java连接hadoop执行mapreduce任务
一.准备工作
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任务的更多相关文章
- windows下在eclipse上远程连接hadoop集群调试mapreduce错误记录
第一次跑mapreduce,记录遇到的几个问题,hadoop集群是CDH版本的,但我windows本地的jar包是直接用hadoop2.6.0的版本,并没有特意找CDH版本的 1.Exception ...
- ubuntu 下安装eclipse &java环境配置
前面有一篇的博客写的是ubuntu下安装eclipse和java环境的配置.当时是安装网上的攻略进行的 ,当然也是能够成功的. 近期把那台电脑送人了 ,仅仅好在自己的这台电脑上又一次安装一次了 ,唯一 ...
- windows 下用eclipse搭建java、python开发环境
本人只针对小白!本文只针对小白!本文只针对小白! 最近闲来无事,加上之前虽没有做过eclipse上java.python的开发工作,但一直想尝试一下.于是边查找资料边试验,花了一天时间在自己的机器上用 ...
- 64位CentOS6.5下Eclipse用Java连接mysql
1.到官网上下载jdbc驱动,我下载的是mysql-connector-java-5.0.8.tar.gz 2.解压下载到的文件 tar -zxvf mysql-connector-java-5.0. ...
- Windows平台下安装Eclipse插件,开发Hadoop应用
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- 在window下远程虚拟机(centos)hadoop运行mapreduce程序
(注:虽然连接成功但是还是执行不了.以后有时间再解决吧 看到的人别参考仅作个人笔记)先mark下 1.首先在window下载好一个eclipse.和拷贝好linux里面hadoop版本对应的插件(我是 ...
- java连接ssh执行shell脚本
在liunx上写了一个shell脚本,想通过java去调用这个shell脚本,不知道怎么去调用,在网上说使用process这个进程方式,但是我执行机和我shell脚本都不在同一台电脑,老大说java中 ...
- 使用eclipse创建java程序可执行jar包
一.eclipse中,在要打成jar包的项目名上右击,出现如下弹出框,选择“export”: 二.在接下来出现的界面中点击“jar file”,然后next: 三.在接下来出现的界面中,如图所示勾选上 ...
- 对hadoop 执行mapreduce时发生异常Illegal partition for的解决过程
来自:http://blog.csdn.net/hezuoxiang/article/details/6878026 写了个mapreduce的JAVA程序,自定义了个partition class ...
随机推荐
- GCD之Apply
dispatch_apply函数是dispatch_sync函数和dispatch_group的结合体.该函数将按指定的次数将指定的block追加到指定的dispatch queue中,并等待全部处理 ...
- Redis常见的应用场景解析
Redis是一个key-value存储系统,现在在各种系统中的使用越来越多,大部分情况下是因为其高性能的特性,被当做缓存使用,这里介绍下Redis经常遇到的使用场景. Redis特性 一个产品的使用场 ...
- 如何解决Python.h:No such file or directory
安装python2.7对应的dev sudo apt-get install python-dev 安装python3.6对应的dev sudo apt-get install python3-dev
- Linux入门之常用命令(1)
退出系统 exit 图形界面 startx 时间 date 日历 cal [month] [year] 计算器 bc 帮助 man [command] // info [command] 在线用户 ...
- 洗礼灵魂,修炼python(7)--元组,集合,不可变集合
前面已经把列表的基本用法讲解完 接着讲python的几大核心之--元组(tuple) 1.什么是元组? 类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对 ...
- web应用中的异常处理
楼主前几天写了一篇“Java子线程中的异常处理(通用)”文章,介绍了在多线程环境下3种通用的异常处理方法. 但是平时大家的工作一般是基于开发框架进行的(比如Spring MVC,或Spring Boo ...
- hdu 4090--GemAnd Prince(搜索)
题目链接 Problem Description Nowadays princess Claire wants one more guard and posts the ads throughout ...
- 混合高斯模型(Mixtures of Gaussians)和EM算法
这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示 ...
- 张高兴的 Windows 10 IoT 开发笔记:使用 Lightning 中的软件 PWM 驱动 RGB LED
感觉又帮 Windows 10 IoT 开荒了,所以呢,正儿八经的写篇博客吧.其实大概半年前就想写的,那时候想做个基于 Windows 10 IoT 的小车,但树莓派原生不支持 PWM 啊.百度也搜不 ...
- Python实战之dict简单练习
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__forma ...