hadoop环境配置 windows+eclipse

一、安装hadoop

参考给力星我安装的版本是2.7.0

在linux下开发会有一些不方便,非mac档只能尝试在win上远程连接了,幸好有大神写了eclipse的hadoop插件,并且支持远程连接,于是来折腾这一环境。


二、插件安装参考http://yntmdr.blog.51cto.com/3829621/1633528

除hadoop安装包外,还需要三个文件,见网盘链接: https://pan.baidu.com/s/1dFE6UjR密码: xbfc

1.注意linux机器(可为虚拟机)中hadoop环境的配置文件core-site.xml中的localhost需要改成机器ip,为什么呢?因为本机能够通过localhost找到自己,其他机器就找不到了呢,需要通过ip查找。

2.下载插件hadoop-eclipse-plugin,将其拷到eclipse安装目录的dropins下,打开eclipse发现左边多出来一个DFS Locations。

3.解压hadoop2.7.0到windows一份,在eclipse中window->preferences->hadoop设置刚刚解压的路径,参考


4.将winutils.exe(见网盘)拷贝到hadoop-2.7.0\bin目录下,将hadoop.dll(见网盘)拷到C:\Windows\System32下面,这两个文件的版本一定要对,网盘上的是2.7的,开始我是用的2.2版本的,一直出错不知道原因- -

5.显示Map/Reduce选项卡

选择Window->Open Perspective->Other->Map/Reduce,会看到右上角有一个大象图标。

6.配置hdfs连接

点击右上角大象,切换到Map/Reduce 开发视图,点击 Eclipse软件右下角的 Map/Reduce Locations 面板,在面板中单击右键,选择 New Hadoop Location进行配置,这里面的Host为liunx机器的ip,Port分别为你在mapred-site.xml、core-site.xml的端口,我的分别为50020和9000.

7.安装好插件后,查看左侧MapReduce Location 能否直接查看hdfs文件,注意要在启动了hadoop、yarn之后再看喔,能够的话就说明插件安装没有什么问题了。

8.配置环境变量

在环境变量中添加HADOOP_HOME为解压的目录,并将hadoop-2.7.0\bin目录添加至环境变量,参考图


9.将linux上将三个配置文件拷到eclipse该工程运行目录下面,然后尝试运行wordcount,

设置输入输出参数,可以在run as配置中设置输入输出参数,更好的方法是在程序中设置otherArgs,注意路径要写全,wordcount代码(更改了otherArgs):

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);
    }
  }
 
  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    String[] otherArgs=
    		new String[]{"hdfs://你的ip/user/hadoop/输入路径",
    		"hdfs://你的ip/user/hadoop/输出路径"}; 
    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);
  }
}

若运行如果提示没有权限操作文件等,可设置权限hadoop fs -chmod -R 777 /user

更多出错参考http://www.cnblogs.com/baixl/p/4154429.html

10.以上为本人的安装经验,可供参考,根据实际环境、hadoop安装版本等可能会发生一些小出入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值