zoukankan      html  css  js  c++  java
  • WordCount 远程集群源码

    package 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);
        }
        
        
      }
     
      public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        //conf.set("mapred.job.tracker", "192.168.2.35:9001");
      //在你的文件地址前自动添加:hdfs://master:9000/
        //conf.set("fs.defaultFS", "hdfs://192.168.2.35:9001/");
        //conf.set("hadoop.job.user","hadoop");  
        //指定jobtracker的ip和端口号,master在/etc/hosts中可以配置
        //conf.set("mapred.job.tracker","192.168.2.35:9001");
        
        //在你的文件地址前自动添加:hdfs://master:9000/
    
        conf.set("fs.defaultFS", "hdfs://192.168.2.35:9000/");
        ////conf.set("hadoop.job.user","hadoop");  
       //// conf.set("Master","1234");
        //指定jobtracker的ip和端口号,master在/etc/hosts中可以配置
        //////conf.set("mapred.job.tracker","Master:9001");
        String[] ars=new String[]{"input","out"};
        String[] otherArgs = new GenericOptionsParser(conf, ars).getRemainingArgs();
        if (otherArgs.length != 2) {
          System.err.println("Usage: wordcount  ");
          System.exit(2);
        }
        Job job = new Job(conf, "wordcount");
        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);
      }
    }
  • 相关阅读:
    如何让nodejs使用多线程执行
    web input光标的颜色
    web视频自定义规划
    webgl 学习注意事项
    前端url创建,以及base64与url的转化
    微信 input 照相机 呼出
    js 资源下载方法
    在React项目中使用React-intl实现多语言支持,以及对react-init各组件的解读
    React Native 的组件定义及使用
    AMD模块&CommonJs模块&ES6模块
  • 原文地址:https://www.cnblogs.com/canyangfeixue/p/4599925.html
Copyright © 2011-2022 走看看