码迷,mamicode.com
首页 > Windows程序 > 详细

windows上eclipse搭建hadoop开发环境(自用,备忘)

时间:2016-07-22 19:21:12      阅读:498      评论:0      收藏:0      [点我收藏+]

标签:

注:本文为自用,随时更新。

一.系统环境

Windows7、Ecplise 4.4.0,Hadoop2.7.2
Hadoop安装教程请看:Hadoop2.7.2安装教程
此处需要注意的是:你的hadoop运行在远程的虚拟机上,但是你的windows上也需要有hadoop的运行环境,这样eclipse才能进行远程调试,所按照上面教程安装完虚拟机上的hadoop,还需要下载同样版本的Hadoop加压到windows上即可,还需要配置相应的环境变量,拷贝winutil.exe.hadoop.dll等文件到hadoop安装目录bin文件夹下,你可以在网上搜一下,或者可以参考一下这篇文章http://blog.csdn.net/fly_leopard/article/details/51250443

二.安装步骤

1.安装hadoop插件

下载hadoop-eclipse-plugin-2.7.2.jar(点击下载),并且拷贝到eclipse根目录下/dropins下

2.启动myeclipse,打开Perspective:

【Window】->【Open Perspective】->【Other...】->【Map/Reduce】->【OK】
技术分享

3、 打开一个View:

【Window】->【Show View】->【Other...】->【MapReduce Tools】->【Map/Reduce Locations】->【OK】
技术分享

4.添加Hadoop Location:

技术分享
点击New Hadoop location
技术分享
修改其中的内容:
我的hadoop安装在虚拟机上,地址为192.168.48.129
修改其中内容:
Map/Reduce Master 这个框里
Host:就是jobtracker 所在的集群机器,这里写192.168.48.129
Hort:就是jobtracker 的port,这里写的是9001
Map/Reduce Master 这个框里:这两个参数就是mapred-site.xml里面mapred.job.tracker里面的ip和port
DFS Master 这个框里
Host:就是namenode所在的集群机器,这里写192.168.48.129
Port:就是namenode的port,这里写9000
DFS Master 这个框里:这两个参数就是core-site.xml里面fs.defaultFS(或fs.default.name)里面的ip和port
user name:这个是连接hadoop的用户名
因为我是用hadoop用户安装的hadoop,而且没建立其他的用户,所以用hadoop。下面的不用填写。然后点击finish按钮,此时,这个视图中就有多了一条记录。
技术分享
重启eclipse并重新编辑刚才建立的那个连接记录,现在我们编辑advance parameters tab页
(重启编辑advance parameters tab页原因:在新建连接的时候,这个advance paramters  tab页面的一些属性会显示不出来,显示不出来也就没法设置,所以必须重启一下eclipse再进来编辑才能看到)
这里大部分的属性都已经自动填写上了,其实就是把core-site.xml,hdfs-site.xml,mapred-site.xml里面的一些配置属性展示出来。因为在安装hadoop的时候,其site系列配置文件里有改动,所以这里也要弄成一样的设置。主要关注的有以下属性:
fs.defualt.name(fs.defaultFS):这个在General tab页已经设置了
mapred.job.tracker:这个在General tab页也设置了
dfs.replication:这个这里默认是3,因为我在hdfs-site.xml里面设置成了1,所以这里也要设置成1 
hadoop.tmp.dir:这里填写你在core-site.xml中设置的hadoop.tmp.dir
需要修改的内容如下图
技术分享
技术分享

然后点击finish,然后就连接上了(先要启动sshd服务,启动hadoop进程),连接上的标志如图:
技术分享
注1:我在这里遇到一个小问题,我在ubutun上安装hadoop时,core-site.xml属性fs.defaultFS设置的地址是localhost,由于权限原因,我在windows上用eclipse进行连接hadoop,被hadoop拒绝了连接.如下所示:
技术分享

出现这种情况只需要把fs.defaultFS属性改为你的ip地址即可,如下所示:
技术分享
注2:可以在文件上右击,选择删除试下,通常第一次是不成功的,会提示一堆东西,大意是权限不足之类,原因是当前的win7登录用户不是虚拟机里hadoop的运行用户,解决办法有很多,比如你可以在win7上新建一个hadoop的管理员用户,然后切换成hadoop登录win7,再使用eclipse开发,但是这样太烦,最简单的办法:

hdfs-site.xml里添加

1  <property>
2     <name>dfs.permissions</name>
3     <value>false</value>
4  </property>

然后在虚拟机里,运行hadoop dfsadmin -safemode leave

保险起见,再来一个 hadoop fs -chmod 777 /

总而言之,就是彻底把hadoop的安全检测关掉(学习阶段不需要这些,正式生产上时,不要这么干),最后重启hadoop,再到eclipse里,重复刚才的删除文件操作试下,应该可以了。

5.跑一个wordcount例子

(1)新建Map/Reduce Project:

【File】->【New】->【Project...】->【Map/Reduce】->【Map/Reduce Project】->【Project name: TestHadoop】->【Configure Hadoop install directory...】->【Hadoop installation directory: D:\hadoop\hadoop-2.7.2\hadoop-2.7.2】->【Apply】->【OK】->【Next】->【Allow output folders for source folders】->【Finish】
如下图所示:
技术分享
技术分享
技术分享

(2)新建WordCount类,代码是从Hadoop自带的例子中copy过来的,如下

技术分享
代码:
package com.wimang.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);

			}

		}

	}

	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);

		}

	}

	@SuppressWarnings("deprecation")
	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 <in> <out>");

			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);

	}
}

(3)造一些模拟数据

 为了运行程序,需要一个输入的文件夹和输出的文件夹。输出文件夹,在程序运行完成后会自动生成。我们需要给程序一个输入文件夹。
主要可以用两种方法:
方法一:在eclipse上用鼠标右键即可创建文件夹(首先要把权限解决了,上面有解决的方法),一个输入文件夹input(名字你任意命名),上传一两个带有单词的文件到该文件夹中即可。
方法二:在运行hadoop的虚拟机上直接用命令搞掉,具体请参考Hadoop安装教程_单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04(转载,修改部分内容)运行Hadoop伪分布式实例部分内容即可。

(4)配置运行参数

①在新建的项目WordCount,点击WordCount.java,右键-->Run As-->Run Configurations 
②在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount 
③配置运行参数,点Arguments,在Program arguments中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”,如:
技术分享

(5)点击run,运行程序。

出现如下图,即为运行成功。

技术分享

或者在hadoop运行的虚拟机上通过敲击命令查看也可以,可以在终端中用命令如下,查看是否生成文件夹output: 
bin/hadoop fs -ls  
用下面命令查看生成的文件内容: 
bin/hadoop fs -cat output1/* 

技术分享

(6)运行WordCount中出现的问题。

情况1
如下图:
技术分享
如果双击运行windows安装hadoop目录下的bin文件夹中的winutils.exe出现如下图所示:
注:若你的bin下没有这些文件,请点击hadoop_dll_winutil_2.7.2.zip进行下载,解压到bin目录下即可,注意hadoop.dll等文件不要与hadoop冲突。为了不出现依赖性错误可以将hadoop.dll放到c:/windows/System32下一份。hadoop windows下环境配置可以参考http://blog.csdn.net/fly_leopard/article/details/51250443
技术分享

出现如上问题,只需要下载安装vc+2013组件即可,下载地址为:http://www.microsoft.com/en-us/download/confirmation.aspx?id=40784

情况2

就是没有没有写的权限,这时候可以参考上面按照eclipse hadoop插件时有提到过解决办法。如果是安装我的这个流程走,应该不会出现这个问题。

到此,就可以在windows上进行eclipse远程开发调试ubutun上的Hadoop了。

注:本文为自用,随时更新。

windows上eclipse搭建hadoop开发环境(自用,备忘)

标签:

原文地址:http://blog.csdn.net/osaymissyou0/article/details/51981728

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!