Windows7下搭建Eclipse的Hadoop2.7.3开发环境

这篇文章讲述关于如何在windows7下搭建hadoop的开发环境,本人亲测可行,祝你好运!

(发表之后才发现,直接剪切粘贴的图片最后都没有了,这算是CSDN的不足之处啊。不得已又重新剪辑图片保存到本地上传。我也是理解网络上那么多无私奉献者,写博客也是蛮辛苦的,要好好感谢他们啊!)

一、前提条件

1、安装好java8,安装java8的时候最好不要采用默认路径,因为默认路径在“Program Files”目录包含空格,我这里安装路径是D:\appdevelop\jdk1.8

2、安装好eclipse,我这里是Neon Release (4.6.0)

3、把下载的hadoop2.7.3解压到自己要运行的目录,我这里解压目录为D:\appdevelop\deploy\hadoop273

3、设置好环境变量,这里主要有两个:JAVA_HOME,HADOOP_HOME,并设置好path路径,这个很重要,如果不设置HADOOP_HOME启动时会报找不到hadoop,如下图:



二、配置并启动hadoop

1、下载windows下启动hadoop需要依赖的工具和库文件,把hadoop.dll放到c:\windows\System32目录下一份,其他的解压后放到HADOOP_HOME\bin目录下,为了保险起见,我在HADOOP_HOME\sbin目录下也放了一份,可能不需要,我偷懒没测试。

下载地址:http://download.csdn.net/detail/n1007530194/9221605

2、几个配置文件,其中这里只有core-site.xml中配置了一个hdfs文件系统的端口号,其他的都采用默认值

=====core-site.xml=====

<configuration>
  <property>
       <name>fs.defaultFS</name>
       <value>hdfs://localhost:9000</value>
   </property>
</configuration>

=====hdfs-site.xml=====下面的路径根据自己需要进行配置,我是在HADOOP_HOME目录下新建的data目录

<configuration>
       <property>
               <name>dfs.replication</name>
                <value>1</value>
       </property>


       <property>
               <name>dfs.namenode.name.dir</name>
               <value>file:/appdevelop/deploy/hadoop273/data/dfs/namenode</value>
       </property>


       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/appdevelop/deploy/hadoop273/data/dfs/datanode</value>
       </property>
</configuration>


=====yarn-site.xml=====

<configuration>

<!-- Site specific YARN configuration properties -->
       <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
       </property>


       <property>
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
       </property>
</configuration>


=====mapred-site.xml=====,该文件默认可能不存在,把mapred-site.xml.template文件拷贝一份,去掉.template后缀后进行配置

<configuration>
       <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
       </property>       
</configuration>


3、打开cmd命令提示符,进入HADOOP_HOME\bin目录,格式化namenode,运行如下命令



4、如果上面格式化成功,没有报错,则可以启动hadoop了,进入HADOOP_HOME\sbin目录,运行如下命令:



注意两个命令目录位置不同,该命令运行后,会打开两个cmd窗口,分别启动datanode进程和namenode进程(如果要关闭hadoop则运行stop-dfs命令,我们这里要进行测试,暂时保持运行状态)



三、配置eclipse

1、下载hadoop的eclipse插件,并解压到eclipse的plugins目录

插件下载地址:http://download.csdn.net/download/stylereport/9696609


2、重启eclipse,并设置hadoop安装路径

eclipse的Window->Preferences进入进行设置,如下图:



3、把map\reduce设置窗口调出显示,方便设置Window->Show View->Other找到Map/Reduce Locations,单击确定。



经过上面步骤后,在eclipse下面会显示如下(默认是没有下面那行hadoop localhost的,我这里因为已经设置了):


单击带+号的大象图标,就可以进入设置界面了


这一步的设置是最容易出错的地方,我在前面配置文件中提到,只有hdfs文件系统的端口设置为9000了,其他的都是默认的,那么怎么知道我上面应该配置的是50010呢?很多时候,hadoop配置时可能显示可能是50020、50030等,这时候我们可以去看一下启动的hadoop窗口了,有一个namenode窗口,上面显示了我们要配置的这两个端口号




在namenode或datanode窗口会看到9000端口



4、在hdff上根据需要创建文件夹,可以创建、删除、上传文件和文件夹,这里的操作实际上是对hdfs文件系统的操作(你也可以到命令窗口操作,在HADOOP_HOME\bin目录下运行hdfs dfs -mkdir命令可以创建目录)




四、创建工程并进行开发调试

1、创建map/reduce工程wordcount



2、新建测试类MyWordCount

package hdp.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 MyWordCount {
	public static class WordCountMapper extends Mapper<Object, Text, Text, IntWritable>{
		private final IntWritable one=new IntWritable(1);
		private Text word=new Text();
		
		public void map(Object key, Text value, Context context) throws IOException, InterruptedException{
			StringTokenizer stn=new StringTokenizer(value.toString());
			while(stn.hasMoreTokens()){
				word.set(stn.nextToken());
				context.write(word, one);
			}
		}
		
	}
	
	public static class WordCountReducer 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 IOException, ClassNotFoundException, InterruptedException{
		Configuration conf=new Configuration();
		String[] cliArgs=new GenericOptionsParser(conf,args).getRemainingArgs();
		if(cliArgs.length!=2){
            System.err.println("Usage: MyWordCount <in> <out>");
            System.exit(2);
		}
		
		Job myJob=Job.getInstance(conf, "my first job");
		myJob.setJarByClass(MyWordCount.class);
		myJob.setMapperClass(WordCountMapper.class);
		myJob.setReducerClass(WordCountReducer.class);
		myJob.setCombinerClass(WordCountReducer.class);
		myJob.setOutputKeyClass(Text.class);
		myJob.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(myJob, new Path(cliArgs[0]));
        FileOutputFormat.setOutputPath(myJob, new Path(cliArgs[1]));
        boolean isSucced=myJob.waitForCompletion(true);
        System.out.println(isSucced);
        System.exit(isSucced? 0 : 1);
	}

}


3、设置WordCount运行参数

右键wordcount工程,Run As->Run Configurations


配置运行时的input和output两个参数,我这里把本地文件上传到了input目录,hdfs目录作为输出,其中out目录在hdfs中不存在,如果已经存在则先删除,或使用其他名字



4、经过配置后,运行WordCount程序,一切正常的化在eclipse控制台打印的信息如下


观察cmd中namenode和datanode窗口中信息的变化,程序运行完毕后,可以在eclipse中打开查看运行结果,至此在windows7中搭建hadoop2.7.3开发环境已经完成。


在配置过程中遇到的问题:

1、HADOOP_HOME和path配置出问题时,无法启动hadoop

2、在eclipse中配置map/reduce Locations时,报错往往是配置有问题,主要是端口,而不是插件或eclipse版本问题,如我就遇到如下报错

Hadoop异常:An internal error occurred during: “Map/Reduce location status updater”. 
Java.lang.NullPointerException; 


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值