我有如下要求:
- 有一个 30 节点的 hadoop YARN 集群,以及一个用于提交作业的客户端机器。
- 让我们使用 wordcount MR 示例,因为它世界闻名。我想通过 java 方法提交并运行 wordcount MR 作业。
那么提交作业所需的代码是什么?任何特定于客户端计算机上的配置?
我有如下要求:
那么提交作业所需的代码是什么?任何特定于客户端计算机上的配置?
Hadoop 应该存在于您的客户端计算机上,并且与您的 hadoop 集群中的其他计算机具有相同的配置。
要从 java 方法提交 MR 作业,请参考 java ProcessBuilder并传递 hadoop 命令以启动您的 wordcount 示例。
wordcount 的命令和必要的应用程序特定要求可以在这里找到
您应该创建一个实现 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 配置,就像集群中的任何其他节点一样。