MapReduce API基础教程文档

收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

在本章中,我们将仔细研究 MapReduce 编程操作中涉及的类及其方法。我们将主要关注以下方面-
JobContext Interface Job Class Mapper Class Reducer Class

JobContext Interface

JobContext 接口是所有类的超级接口,它定义了 MapReduce 中的不同作业。它为您提供了在任务运行时提供给任务的作业的只读视图。
以下是JobContext接口的子接口。
子接口说明
MapContext ,>
定义提供给映射器的上下文。
ReduceContext ,>
定义传递给Reducer的上下文。
Job 类是实现 JobContext 接口的主要类。

Job Class

Job 类是 MapReduce API 中最重要的类。它允许用户配置作业、提交作业、控制其执行和查询状态。 set 方法只在作业提交之前起作用,之后它们将抛出 IllegalStateException。
通常,用户创建应用程序,描述作业的各个方面,然后提交作业并监控其进度。
这是如何提交作业的示例-
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);

Constructors

以下是Job类的构造函数总结。
构造函数总结
Job()
Job(Configuration conf)
Job(Configuration conf, String jobName)

方法

Job 类的一些重要方法如下-
方法说明
getJobName()
用户指定的作业名称。
getJobState()
返回作业的当前状态。
isComplete()
检查作业是否完成。
setInputFormatClass()
设置作业的 InputFormat。
setJobName(String name)
设置用户指定的作业名称。
setOutputFormatClass()
设置作业的输出格式。
setMapperClass(Class)
为作业设置映射器。
setReducerClass(Class)
为作业设置 Reducer。
setPartitionerClass(Class)
为作业设置分区器。
setCombinerClass(Class)
为作业设置组合器。

Mapper Class

Mapper 类定义了 Map 作业。将输入键值对映射到一组中间键值对。映射是将输入记录转换为中间记录的单个任务。转换后的中间记录不需要与输入记录的类型相同。一个给定的输入对可能映射到零个或多个输出对。

方法

map 是 Mapper 类中最突出的方法。语法定义如下-
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
此方法对输入拆分中的每个键值对调用一次。

减速器类

Reducer 类定义了 MapReduce 中的 Reduce 作业。它将共享一个键的一组中间值减少到一组较小的值。 Reducer 实现可以通过 JobContext.getConfiguration() 方法访问作业的配置。 Reducer 具有三个主要阶段-Shuffle、Sort 和 Reduce。
Shuffle-Reducer 使用 HTTP 跨网络复制每个 Mapper 的排序输出。 Sort-框架按键对 Reducer 输入进行合并排序(因为不同的 Mapper 可能输出相同的键)。 shuffle 和 sort 阶段同时发生,即在获取输出时,它们会被合并。 Reduce-在此阶段,为排序输入中的每个 <key, (collection of values)> 调用 reduce (Object, Iterable, Context) 方法。

方法

reduce 是 Reducer 类中最突出的方法。语法定义如下-
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)
此方法对键值对集合中的每个键调用一次。