Hadoop Secondary Sort Driver 类代码分析及设计图纸
Hadoop Secondary Sort Driver 类代码分析及设计图纸
package com.mystudy.Hadooppp;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class Driver {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, 'Secondary Sort');
job.setJarByClass(Driver.class);
job.setMapperClass(Mapper.class);
job.setPartitionerClass(Partitioner.class);
job.setSortComparatorClass(Comparator.class);
job.setReducerClass(Reducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileSystem fs = FileSystem.get(conf);
Path outputPath = new Path(args[1]);
if (fs.exists(outputPath)) {
fs.delete(outputPath, true);
}
FileOutputFormat.setOutputPath(job, outputPath);
job.setNumReduceTasks(26); // 分区数为26
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
这段代码是 Hadoop Secondary Sort 中的 Driver 类,它主要负责配置 MapReduce 作业的相关参数,并启动作业。具体来说,它包含以下几个关键步骤:
-
配置作业参数:
- 创建 Configuration 对象,用于存储作业配置信息。
- 创建 Job 对象,并设置作业名称为 'Secondary Sort'。
- 通过 setJarByClass() 设置作业使用的 Jar 包。
- 通过 setMapperClass()、setPartitionerClass()、setSortComparatorClass() 和 setReducerClass() 设置作业使用的 Mapper、Partitioner、SortComparator 和 Reducer 类。
- 通过 setOutputKeyClass() 和 setOutputValueClass() 设置作业的输出键值类型。
-
设置输入输出路径:
- 通过 FileInputFormat.addInputPath() 设置作业的输入路径,该路径从命令行参数 args[0] 中获取。
- 通过 FileSystem.get() 获取 FileSystem 对象。
- 通过 Path 类设置作业的输出路径,该路径从命令行参数 args[1] 中获取。
- 如果输出路径已经存在,则通过 fs.delete() 删除该路径。
- 通过 FileOutputFormat.setOutputPath() 设置作业的输出路径。
-
设置分区数:
- 通过 job.setNumReduceTasks() 设置作业的分区数为 26。
-
启动作业并等待完成:
- 通过 job.waitForCompletion() 启动作业并等待完成。
- 根据作业完成状态返回 0 或 1,并退出程序。
设计图纸

该图展示了 Driver 类中的主要流程,包括配置作业参数、设置输入输出路径、设置分区数、启动作业和等待完成。
总结:
Driver 类是 Hadoop Secondary Sort 中的关键类,它负责配置作业参数、设置输入输出路径、启动作业并等待完成。通过分析代码和设计图纸,我们可以更深入地理解 Driver 类的工作原理和流程。
原文地址: https://www.cveoy.top/t/topic/oSwF 著作权归作者所有。请勿转载和采集!