推荐答案
在 Hadoop MapReduce 中,提交作业通常通过以下步骤完成:
- 编写 MapReduce 程序:首先,编写包含
Mapper和Reducer类的 Java 程序。 - 打包程序:将程序打包成 JAR 文件。
- 提交作业:使用
hadoop jar命令提交作业到 Hadoop 集群。
hadoop jar <jar-file> <main-class> <input-path> <output-path>
<jar-file>:打包好的 JAR 文件路径。<main-class>:包含main方法的类名。<input-path>:输入数据的 HDFS 路径。<output-path>:输出结果的 HDFS 路径。
本题详细解读
1. 编写 MapReduce 程序
MapReduce 程序通常包含以下几个部分:
- Mapper 类:负责处理输入数据并生成中间键值对。
- Reducer 类:负责处理 Mapper 输出的中间键值对并生成最终结果。
- Driver 类:包含
main方法,用于配置和提交作业。
// www.javascriptcn.com code example
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;
public class WordCount {
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
// Mapper 实现
}
public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
// Reducer 实现
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(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);
}
}2. 打包程序
将编写好的 MapReduce 程序打包成 JAR 文件。可以使用 Maven 或手动打包。
mvn clean package
3. 提交作业
使用 hadoop jar 命令提交作业到 Hadoop 集群。
hadoop jar target/wordcount.jar WordCount /input /output
target/wordcount.jar:打包好的 JAR 文件路径。WordCount:包含main方法的类名。/input:输入数据的 HDFS 路径。/output:输出结果的 HDFS 路径。
4. 监控作业状态
提交作业后,可以通过 Hadoop 的 Web UI 或命令行工具监控作业的执行状态。
hadoop job -status <job-id>
<job-id>:作业的 ID,可以在提交作业时获取。
5. 查看作业结果
作业完成后,可以在指定的输出路径查看结果。
hadoop fs -cat /output/part-r-00000
通过以上步骤,你可以成功提交并运行一个 MapReduce 作业。