2

我有如下要求:

  1. 有一个 30 节点的 hadoop YARN 集群,以及一个用于提交作业的客户端机器。
  2. 让我们使用 wordcount MR 示例,因为它世界闻名。我想通过 java 方法提交并运行 wordcount MR 作业。

那么提交作业所需的代码是什么?任何特定于客户端计算机上的配置?

4

2 回答 2

0

Hadoop 应该存在于您的客户端计算机上,并且与您的 hadoop 集群中的其他计算机具有相同的配置。

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

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

于 2015-04-24T19:27:06.967 回答
0

您应该创建一个实现 Tool 的类。这里有一个例子:

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 配置,就像集群中的任何其他节点一样。

于 2015-08-22T05:03:52.937 回答