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 作业的相关参数,并启动作业。具体来说,它包含以下几个关键步骤:

  1. 配置作业参数

    • 创建 Configuration 对象,用于存储作业配置信息。
    • 创建 Job 对象,并设置作业名称为 'Secondary Sort'。
    • 通过 setJarByClass() 设置作业使用的 Jar 包。
    • 通过 setMapperClass()、setPartitionerClass()、setSortComparatorClass() 和 setReducerClass() 设置作业使用的 Mapper、Partitioner、SortComparator 和 Reducer 类。
    • 通过 setOutputKeyClass() 和 setOutputValueClass() 设置作业的输出键值类型。
  2. 设置输入输出路径

    • 通过 FileInputFormat.addInputPath() 设置作业的输入路径,该路径从命令行参数 args[0] 中获取。
    • 通过 FileSystem.get() 获取 FileSystem 对象。
    • 通过 Path 类设置作业的输出路径,该路径从命令行参数 args[1] 中获取。
    • 如果输出路径已经存在,则通过 fs.delete() 删除该路径。
    • 通过 FileOutputFormat.setOutputPath() 设置作业的输出路径。
  3. 设置分区数

    • 通过 job.setNumReduceTasks() 设置作业的分区数为 26。
  4. 启动作业并等待完成

    • 通过 job.waitForCompletion() 启动作业并等待完成。
    • 根据作业完成状态返回 0 或 1,并退出程序。

设计图纸

image

该图展示了 Driver 类中的主要流程,包括配置作业参数、设置输入输出路径、设置分区数、启动作业和等待完成。

总结:

Driver 类是 Hadoop Secondary Sort 中的关键类,它负责配置作业参数、设置输入输出路径、启动作业并等待完成。通过分析代码和设计图纸,我们可以更深入地理解 Driver 类的工作原理和流程。

Hadoop Secondary Sort Driver 类代码分析及设计图纸

原文地址: https://www.cveoy.top/t/topic/oSwF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录