MapReduce教程

MapReduce API

在本章中,我们将仔细研究 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)
此方法对键值对集合中的每个键调用一次。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4