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    

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

       

          

    好记性不如烂笔头^_^!
  • 相关阅读:
    插件开发遇到的坑------final 型变量,编译过程被优化
    java.lang.NoClassDefFoundError 错误解决思路
    Android stadio bug
    android去掉button默认的点击阴影
    Andrid 打印调用堆栈
    Gradle 设置本地meaven
    Android log 里面快速搜索错误堆栈 ( 关键字)
    java doc 编写
    android 怎么判断activity 从哪里启动的
    Android Stadio调试gradle 插件 || Android Stadio 远程调试 || Anroid APT调试
  • 原文地址:https://www.cnblogs.com/luobiao320/p/7381657.html
Copyright © 2011-2022 走看看