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

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

一.系统环境

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了。

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hadoop is an open-source software framework used for distributed storage and processing of large datasets across clusters of computers. It is commonly used for big data processing and analytics. To install Hadoop on Ubuntu, you can follow these steps: 1. Update your system packages: ``` sudo apt update ``` 2. Install Java Development Kit (JDK): ``` sudo apt install default-jdk ``` 3. Download the latest stable release of Hadoop from the official website: ``` wget https://downloads.apache.org/hadoop/common/hadoop-x.y.z/hadoop-x.y.z.tar.gz ``` Replace `x.y.z` with the version number you want to install. 4. Extract the downloaded tarball: ``` tar xf hadoop-x.y.z.tar.gz ``` 5. Move the extracted folder to a desired location (e.g., `/opt`): ``` sudo mv hadoop-x.y.z /opt/hadoop ``` 6. Set up environment variables by editing the `~/.bashrc` file: ``` export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 7. Reload the `~/.bashrc` file: ``` source ~/.bashrc ``` 8. Configure Hadoop by modifying the necessary configuration files located in `$HADOOP_HOME/etc/hadoop/` directory. The core configuration file is `core-site.xml`, and the HDFS configuration file is `hdfs-site.xml`. 9. Format the Hadoop Distributed File System (HDFS) using the following command: ``` hdfs namenode -format ``` 10. Start the Hadoop daemons: ``` start-dfs.sh start-yarn.sh ``` 11. Verify the installation by accessing the Hadoop web interface at `http://localhost:9870` in your web browser. These steps provide a basic setup of Hadoop on Ubuntu. However, it's important to consult the official Hadoop documentation for detailed configuration and usage instructions.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值