如何从Java代码在hadoop上运行单词计数作业?

如何从Java代码在hadoop上运行单词计数作业?,hadoop,yarn,Hadoop,Yarn,我有如下要求: 有一个30节点的hadoop纱线集群和一个用于作业提交的客户端机器 让我们以wordcount先生为例,因为它举世闻名。我想从java方法提交并运行wordcount MR作业 那么提交作业需要什么代码呢?客户机上的任何特定配置 Hadoop应该出现在您的客户机上,配置与Hadoop集群中的其他机器相同 要从java方法提交MR作业,请参考java并传递hadoop命令以启动wordcount示例 wordcount的命令和必要的特定于应用程序的要求可以找到您应该创建一个实现该工

我有如下要求:

  • 有一个30节点的hadoop纱线集群和一个用于作业提交的客户端机器
  • 让我们以wordcount先生为例,因为它举世闻名。我想从java方法提交并运行wordcount MR作业
    那么提交作业需要什么代码呢?客户机上的任何特定配置

    Hadoop应该出现在您的客户机上,配置与Hadoop集群中的其他机器相同

    要从java方法提交MR作业,请参考java并传递hadoop命令以启动wordcount示例


    wordcount的命令和必要的特定于应用程序的要求可以找到

    您应该创建一个实现该工具的类。这里举一个例子:

    public class AggregateJob extends Configured implements Tool {
    
      @Override
      public int run(String[] args) throws Exception {
        Job job = new Job(getConf());
        job.setJarByClass(getClass());
        job.setJobName(getClass().getSimpleName());
    
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
    
        job.setMapperClass(ProjectionMapper.class);
        job.setCombinerClass(LongSumReducer.class);
        job.setReducerClass(LongSumReducer.class);
    
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
    
        return job.waitForCompletion(true) ? 0 : 1;
      }
    
      public static void main(String[] args) throws Exception {
        int rc = ToolRunner.run(new AggregateJob(), args);
        System.exit(rc);
      }
    }
    
    此示例从中获得。正如@hamsa zafar已经说过的,客户机应该和集群中的任何其他节点一样具有当前的hadoop配置