`
zpball
  • 浏览: 914782 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

win7安装hadoop及eclipse调试mapreduce的配置方法(转)

阅读更多
http://qiaoshi.iteye.com/blog/1851496

本文来自网络整理,原文存在一定的问题,而且有解释不是很清楚以及错误的地方,我在这里进行了详细的描述,希望对大家有用。

主要流程分为4部分:
1.安装cygwin配置sshd服务
2.配置hadoop
3.配置eclipse访问hadoop
4.配置eclipse测试mapreduce

第1步是最容易出现各种问题的地方,我在配置服务的时候前后遇到解决过一二十个问题,建议1、2步如果出现什么问题最好完全卸载删除然后严格按照步骤重新来。
1.安装cygwin配置sshd服务
安装cygwin是为了给hadoop提供linux环境,sshd是为了提供hadoop的通信方式。
1.1安装cygwin
从官网上下载安装就好,安装选项的时候在net模块下需要选择安装openssh和openssl两个子模块





【在安装过程中会让你搜索你要安装的模块,单击对应模块的bin属性,使他产生个叉,就表示他被选中了,详情请查看http://wenku.baidu.com/view/7e8dd50b52ea551810a6879c.html,此处我是把所有的与openssh和openssl相关的部分都安装了。】,其他default就好。
安装完成后需要配置系统变量,在Path里面加入cygwin的bin目录和usr/sbin目录

1.2取得cygwin的root权限
安装完成后运行一个bash窗口再关闭,在/home/目录下就会出现一个以你的用户名命名的文件夹(也就是cygwin为你创建了一个和windows一样的用户),例如我的就是/home/WANGCHAO,将这个文件夹改名为root
在/etc/passwd文件中找到你的用户名的哪一行,(WANGCHAO:unused:1000:513:U-WANGCHAO-PC\WANGCHAO,S-1-5-21-703394362-527095193-1703888876-1000:/home/WANGCHAO:/bin/bash)【小心此处会有三个这样类似的条目,administrator、guest、WANGCHAO,修改WANGCHAO这个条目】把这一行的用户名都改为root同时设置权限为最大(root:unused:0:0:U-WANGCHAO-PC\root,S-1-5-21-703394362-527095193-1703888876-1000:/home/root:/bin/bash)
保存完成以后再打开bash就会发现你的用户名变为了root并且通配符是#,这样就拿到了root权限并创建了root用户
1.3安装sshd服务 【可参看http://wenku.baidu.com/view/7e8dd50b52ea551810a6879c.html
在bash里面运行ssh-host-config,第一个问题"Should privilege separation be used?"选no,“Do you want to install sshd as a service?”选yes,“enter the value of CYGWIN for the daemon:”,填“ntsec”,“Do you want to proceed anyway?”,选yes。其他都选no。后面就是创建sshd的用户名密码,自己设一下就好,最后告诉你"Have fun!"【这个是必须要出现的,不然表示你安装失败了】就是安装成功了,这时候执行net start sshd是启动不起来的,因为上一步配置服务的时候强制需要设置密码,但我们不需要密码,所以接下来在/etc/passwd里面追加一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

重开一个bash运行net start sshd如果没有返回错误代码就可以在win7自己的查看服务里面看是不是有一个交CYGWIN_SSHD的服务以及启动了.
1.4建立sshd和localhost互信
运行ssh localhost,会让你输入密码,这是因为此时localhost还不在服务的信任列表中【密码为你计算机的密码,此时不用登入】,需要

ssh-keygen -t dsa出现提示都回车就行。
cd ~/.ssh
cat id_dsa.pub >> authorized_keys  【此为一行命令】
然后ssh localhost如果不需要密码就是设置成功了.
如果不成功,检查authorized_keys和.ssh目录的权限

chmod 644 authorized_keys
cd ~
chmod 700 .ssh

应该就可以了.
至此第一步就完成了,这一步可能会有非常多的错误,目前写得是最简单且成功的方法,请务必按照说明的步骤顺序严格执行.

2.配置hadoop
2.1下载hadoop

从官网上下载hadoop1.0.2版本的hadoop1.0.2.tar.gz,之所以下这个版本是因为要想在eclipse里面跑需要编译插件及修改源码,网上有人把这个版本做好了,咱们可以直接拿来用,否则需要找源代码自己修改打包,我在官网没找到src的包,所以就使用了这个版本,不过最新也才1.0.4,这个还不错
2.2配置java系统变量
这一步是必须的,因为hadoop自己的代码实现的问题,所以你的jdk必须要安装在C:\program\目录下.请注意不是program files,如果不是对应的位置就重装一下jdk吧.
配置环境变量,例如我的jdk在C:\Program\Java\jdk1.7.0_05下面,新建JAVA_HOME变量,值为jdk下面的jre目录,即C:\Program\Java\jdk1.7.0_05\jre;
在Path里面加入jdk的bin目录C:\Program\Java\jdk1.7.0_05\bin

2.3配置hadoop
将hadoop1.0.2.tar.gz解压到cygwin的目录下,例如我放在了/home/root/,进入conf目录修改3个文件

2.3.1 hadoop-env.sh
在里面设置JAVA_HOME的路径,里面注释部分有写法示例,我的是export JAVA_HOME=C:\\Program\\Java\\jdk1.7.0_05\\jre

2.3.2 core-site.xml
在configuration节点里面加入两个property节点
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9100</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/log/hadoop/tmp</value>
<description>A base for other temporary directories</description>
</property>
第一个指明hadoop filesystem的路径,端口号可以自己设置;第二个指明fs的存储位置
2.3.3mapred-site.xml
在configuration节点里面加入property节点
<property>
<name>mapred.job.tracker</name>
<value>localhost:9101</value>
</property>
这个是指明mapreduce的时候的jobtrack路径,端口自己设

2.4启动hadoop
开一个bash进到hadoop的bin目录下,首先初始化filesystem的数据节点,运行./hadoop namenode -format;完成后运行./start-all.sh,如果没有出现有错误的信息就可以使用
./hadoop fs -ls / 命令看到hadoop 文件系统了

3.配置eclipse访问hadoop
3.1安装eclipse hadoop插件

在附件里面有我从别人那里下好的hadoop-eclipse-plugin-1.0.2.jar【可以直接从网上找到】,把它放到eclipse的plugins目录下,打开eclipse在Window->open perspective里面就可以看到一个大象图表的Map/Reduce选项,选出来在console同级那里的窗口就可以看到一个mapreduce location窗口了,右键新建一个,
location name: localhost
Map/Reduce master端口:9101(自己设置的对应端口)
dfs master端口:9100
user name:root






即可新建出来,这样在左边显示Project Explorer窗口就可以看到一个Dfs location的选项了,点开如果正确就可以看到之前配好的hadoop的目录结构和文件了

4.配置eclipse测试mapreduce




此目录刷新才可看到,在此处要常刷新。
这样可以正常的进行HDFS分布式文件系统的管理:上传,删除等操作。
为下面测试做准备,需要先建了一个目录 user/root/input2,然后上传两个txt文件到此目录:

intput1.txt 对应内容:Hello Hadoop Goodbye Hadoop

intput2.txt 对应内容:Hello World Bye World

HDFS的准备工作好了,下面可以开始测试了。

Hadoop工程

新建一个Map/Reduce Project工程,设定好本地的hadoop目录




新建一个测试类WordCountTest:

package com.hadoop.learn.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;
import org.apache.log4j.Logger;
 
/**
 * 运行测试程序
 * 
 * @author yongboy
 * @date 2012-04-16
 */
public class WordCountTest {
	private static final Logger log = Logger.getLogger(WordCountTest.class);
 
	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 {
			log.info("Map key : " + key);
			log.info("Map value : " + value);
			StringTokenizer itr = new StringTokenizer(value.toString());
			while (itr.hasMoreTokens()) {
				String wordStr = itr.nextToken();
				word.set(wordStr);
				log.info("Map word : " + wordStr);
				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 {
			log.info("Reduce key : " + key);
			log.info("Reduce value : " + values);
			int sum = 0;
			for (IntWritable val : values) {
				sum += val.get();
			}
			result.set(sum);
			log.info("Reduce sum : " + sum);
			context.write(key, result);
		}
	}
 
	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: WordCountTest <in> <out>");
			System.exit(2);
		}
 
		Job job = new Job(conf, "word count");
		job.setJarByClass(WordCountTest.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);
	}
}




右键,选择“Run Configurations”,弹出窗口,点击“Arguments”选项卡,在“Program argumetns”处预先输入参数:

hdfs://localhost:9100/user/root/input2 hdfs://localhost:9100/user/root/output2



备注:参数为了在本地调试使用,而非真实环境。

然后,点击“Apply”,然后“Close”。现在可以右键,选择“Run on Hadoop”,运行。

但此时会出现类似异常信息:

12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
12/04/24 15:32:44 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
    at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)
    at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:655)
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
    at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)
    at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
    at com.hadoop.learn.test.WordCountTest.main(WordCountTest.java:85)


这个是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。

这里提供一份修改版的hadoop-core-1.0.2.jar文件【此文件在本文的附件中】,替换原C:\cygwin\home\root\hadoop-1.0.2\hadoop-core-1.0.2.jar即可。

替换之后,刷新项目,设置好正确的jar包依赖,现在再运行WordCountTest,即可。

成功之后,在Eclipse下刷新HDFS目录,可以看到生成了ouput2目录:


点击“ part-r-00000”文件,可以看到排序结果:
Bye	1
Goodbye	1
Hadoop	2
Hello	2
World	2

  • 大小: 76.3 KB
  • 大小: 182.9 KB
  • 大小: 63.7 KB
  • 大小: 76 KB
  • 大小: 102 KB
  • 大小: 95.9 KB
  • 大小: 2.7 KB
分享到:
评论

相关推荐

    win7安装hadoop及eclipse调试mapreduce的配置方法

    【标题】: "win7环境下Hadoop安装及Eclipse调试MapReduce配置教程" 【描述】: "本教程详细讲解在Windows 7操作系统中如何安装Hadoop,并配置Eclipse进行MapReduce程序的调试,涵盖可能出现的问题及其解决方案。" ...

    Linux和Win下配置eclipse开发hadoop

    8. **配置Eclipse**: 在Eclipse的`Window &gt; Preferences &gt; Hadoop Map/Reduce`中配置Hadoop的连接信息,如Hadoop的安装路径和集群地址。 9. **创建项目**: 创建一个Map/Reduce项目,编写Hadoop程序,如WordCount...

    win7搭建hadoop开发环境工具文件

    在Windows 7操作系统中搭建Hadoop开发环境,...总之,搭建Win7上的Hadoop开发环境涉及下载和配置Hadoop,安装Eclipse插件,以及对相关文件进行适当修改。一旦完成,你就可以在Eclipse中愉快地开发和测试Hadoop应用了。

    hadoop2.6(x64)Win7上远程调试hadoop 集群

    - 修改配置文件:`hadoop-env.cmd`设置`HADOOP_OPTS`为远程调试选项(例如,`-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005`),以便在Win7上启动Hadoop时开启调试。 4. **配置SSH**: ...

    hadoop2+eclipse+win7开发所需环境

    标题"hadop2+eclipse+win7开发所需环境"指的是在Windows 7操作系统上,使用Eclipse集成开发环境进行Hadoop 2.x应用程序的开发所需的一系列配置和工具。在这样的环境中,开发者可以编写、测试和调试Hadoop MapReduce...

    win7下Eclipse开发Hadoop应用程序环境搭建

    在Windows 7操作系统中,使用Eclipse开发Hadoop应用程序的过程涉及多个步骤,涵盖了从环境配置到实际编程的各个层面。以下是对这个主题的详细讲解: 首先,我们需要了解Hadoop和Eclipse的基础。Hadoop是一个开源的...

    window7+eclipse4.7+Hadoop2.9.0环境搭建所需的全套插件及文档

    在所有这些配置完成后,你将拥有一个完整的Hadoop开发环境,可以在Windows 7上的Eclipse 4.7中编写、测试和调试Hadoop应用。Hadoop的分布式文件系统(HDFS)和MapReduce框架将为大数据处理提供强大的平台,而Eclipse...

    Win7中使用Eclipse连接虚拟机中的Linux中的Hadoop2.5.0经验总结

    本文将详细阐述如何解决在Win7中使用Eclipse连接运行在虚拟机Linux上的Hadoop 2.5.0时遇到的问题,这些解决方案同样适用于更高版本的Hadoop。 1. **解决Windows7下Eclipse代码执行MapReduce报错** 当尝试在...

    hadoop_win7_32位环境配置

    这将允许Eclipse与Hadoop集成,便于开发和调试MapReduce程序。重启Eclipse后,打开`Window--Preference--Hadoop Map/Reduce`进行配置,确保正确设置了Hadoop的路径和其他相关参数。 接下来,为了查看和管理Hadoop...

    Win10的eclipse连接CentOS的Hadoop集群.doc

    通过以上步骤,你就可以在Windows 10的Eclipse环境中编写、测试和调试MapReduce程序,然后部署到远程的CentOS Hadoop集群上进行运行。记得在开发过程中,保持Hadoop版本的一致性,以及及时更新Hadoop的配置文件,以...

    Win本地测试hadoop

    在开发和测试过程中,开发者可能会使用Eclipse、IntelliJ IDEA等集成开发环境(IDE)配合Hadoop插件,使得调试和运行MapReduce程序更加便捷。此外,Hadoop的YARN资源管理器允许开发者管理和调度计算任务,以优化资源...

    windows版hadoop

    - 对于开发和测试,可以使用Eclipse、IntelliJ IDEA等IDE的Hadoop插件,方便地编写和调试MapReduce程序。 7. **注意事项**: - Windows与Unix/Linux的文件路径格式不同,需要确保配置文件中的路径正确无误。 - ...

    win7+eclipse+hadoop开发环境搭建[收集].pdf

    至此,你已经在Win7+Eclipse+Ubuntu的环境中搭建起了Hadoop的单机开发环境。你可以使用Eclipse的Hadoop插件(如Hadoop Eclipse Plugin)来编写、调试和运行Hadoop MapReduce程序。记住,这只是一个基本的配置,实际...

    win10下hadoop2.6.4 bin(含winutils.exe和hadoop.dll).zip

    9. **开发与调试**: 开发Hadoop应用时,IDE如IntelliJ IDEA或Eclipse可以提供插件支持,便于编写、调试和部署MapReduce程序。此外,使用Hadoop的命令行工具或Web界面来监控HDFS和MapReduce作业的状态。 10. **社区...

    hadoop-2.7.7-win7x64.

    描述中提到的“编译环境:win7x64专业版,jdk1.7,hadoop-2.7.7”,意味着在安装Hadoop之前,你需要先确保拥有一个合适的Java Development Kit (JDK)。这里是JDK 1.7,因为Hadoop 2.7.7兼容Java 7。JDK是运行和开发...

    第二节:win 7下编译eclispe hadoop plugin

    在Windows 7操作系统中编译Eclipse Hadoop Plugin是一个对开发者而言非常实用的过程,这个插件可以帮助用户在Eclipse集成开发环境中更方便地管理和调试Hadoop项目。在本节中,我们将深入探讨如何在Windows 7环境下...

    windows 32位eclipse远程hadoop开发环境搭建

    搭建Windows 32位环境下Eclipse远程Hadoop开发环境是一个复杂的过程,涉及到多个软件的安装配置以及环境变量的设置。以下是对整个搭建过程的知识点进行详细说明。 首先,搭建开发环境需要明确使用的操作系统、开发...

    hadoop-2.6.5-win10x64-1809.tar.gz

    在使用这个Hadoop版本时,你需要配置`core-site.xml`(Hadoop核心配置)、`hdfs-site.xml`(HDFS配置)、`yarn-site.xml`(YARN配置)和`mapred-site.xml`(MapReduce配置)等文件,以适应你的Windows环境。...

    Windows装Hadoop的一些必须文件和包

    7. **集成开发环境(IDE)**: 如果你打算在Windows上进行Hadoop开发,可能还需要安装支持Hadoop的IDE,如IntelliJ IDEA或Eclipse,以及相关的插件,如Hadoop插件或Apache Spark和Hadoop插件。 8. **SSH客户端**: 虽然...

Global site tag (gtag.js) - Google Analytics