zoukankan      html  css  js  c++  java
  • windows中eclipse调试hadoop

      下载eclipse:https://www.eclipse.org/downloads/eclipse-packages

      下载hadoop eclipse插件:https://github.com/winghc/hadoop2x-eclipse-plugin/tree/master/release/hadoop-eclipse-plugin-2.6.0.jar

      下载hadoop:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz

      下载hadoop2.7.1的window下编译好的bin目录:http://url.cn/4EO196a

       1、配置hadoop环境变量

        将下载的hadoop-2.7.1.tar.gz进行解压,复制解压路径,配置到系统环境变量中

        

        

        解压下载hadoop windowsbin目录包

        

        将解压出来的内容复制到hadoop-2.7.1\bin 目录中,再将hadoop.dll文件复制到C:\Windows\System32中,然后重启机器;

      2、配置eclipse

        打开eclipse ,选择window/Peferences设置hadoop安装路径

        

        在eclipse中的MapReduce面板右击新建hadoop localtion

        

       在弹窗的面板中输入hadoop服务器的DFS Master ip和端口

       

       注意由于本机使用的是administrator的用户,所以访问服务器的DFS可能会有权限问题,可master服务器的hadoop/etc/hadoop/hdfs-site.xml 中添加如下配置

    <property>
    <name>dfs.permissions</name>
    <value>false</value> 
    </property>

       完成后可在Project Exploer中看到如下界面

       

      3、新建hadoop项目

         

        

        WordCount.java代码

    package com.apache.hadoop.examples;
    
    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();
      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(args[0]));
      FileOutputFormat.setOutputPath(job, new Path(args[1]));
      System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
    }

        在运行main方法前先配置参数,并且在项目跟目录(myFirstHadoop)下面新建input文件夹,再往里面添加测试文件,文件里面随意添加一些单词

        

        执行后会在myFirstHadoop下出现一个output文件夹,里面的文件中会有运行的结果,注意下次运行的时候要删除output目录

        

        

      4、在eclipse中连接服务器hdfs测试

        4.1、复制配置文件

          在master服务器中下载三个配置文件core-site.xml,hdfs-site.xml,log4j.properties,并复制到项目的src下

          

        4.2、修改运行参数

          由于window中调用服务器的时候是使用的administrator账号,而服务器fdfs在使用相对路径时是相对/user/用户名的路径

          而我们服务器中没有administrator用户,所以要将运行参数改成绝对路径

            

          如图我使用的是hadoop的账号,运算后的输入路径为/user/hadoop/input,输出路径为/user/hadoop/output

        4.3、新建目录并上传数据

          

          如图在user添加hadoop和input的目录与我们运行参数中的配置对应,然后上传我们的测试文件wordcount.txt

        4.4、运行测试程序

          运行配置和输入数据都准备好后执行程序,将在/user/hadoop/output中看到输出结果,结果应该和3中本地测试的结果一致;

        4.5、导出测试的jar包到服务器运行

          测试ok后可以将jar包进行导出,方便直接在服务器中运行使用

          在项目上右击,选择Export,再选择JAR file

          

          next后选择导出路径,将导出的wordcount.jar上传到hadoop的master服务器的/opt目录

          通过hdfs dfs -put /opt/wordcount.txt input 往input目录中添加测试文件,文件的内容跟eclipse中一致,如果input目录不存在则要先新建input目录

            hdfs dfs -mkdir input

          执行:

           hadoop jar /opt/wordcount.jar com.apache.hadoop.examples.WordCount input/wordcount.txt output

          通过

           hdfs dfs -cat /opt/test.txt output/part-r-00000    

          可看到输出和之前测试一样的结果

       

          

    好记性不如烂笔头^_^!
  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/luobiao320/p/7381657.html
Copyright © 2011-2022 走看看