📜  MapReduce-API

📅  最后修改于: 2020-11-30 05:29:44             🧑  作者: Mango


在本章中,我们将仔细研究MapReduce编程操作中涉及的类及其方法。我们将主要专注于以下方面-

  • JobContext接口
  • 工作类别
  • 映射器类
  • 减速机类

JobContext接口

JobContext接口是所有类的超级接口,它们在MapReduce中定义了不同的作业。它为您提供了任务运行时提供给该任务的只读视图。

以下是JobContext接口的子接口。

S.No. Subinterface Description
1. MapContext

Defines the context that is given to the Mapper.

2. ReduceContext

Defines the context that is passed to the Reducer.

Job类是实现JobContext接口的主要类。

工作类别

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);

建设者

以下是Job类的构造函数摘要。

S.No Constructor Summary
1 Job()
2 Job(Configuration conf)
3 Job(Configuration conf, String jobName)

方法

Job类的一些重要方法如下-

S.No Method Description
1 getJobName()

User-specified job name.

2 getJobState()

Returns the current state of the Job.

3 isComplete()

Checks if the job is finished or not.

4 setInputFormatClass()

Sets the InputFormat for the job.

5 setJobName(String name)

Sets the user-specified job name.

6 setOutputFormatClass()

Sets the Output Format for the job.

7 setMapperClass(Class)

Sets the Mapper for the job.

8 setReducerClass(Class)

Sets the Reducer for the job.

9 setPartitionerClass(Class)

Sets the Partitioner for the job.

10 setCombinerClass(Class)

Sets the Combiner for the job.

映射器类

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

方法

map是Mapper类中最突出的方法。语法定义如下-

map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

对于输入拆分中的每个键值对,都会调用一次此方法。

减速机类

Reducer类在MapReduce中定义Reduce作业。它将一组共享密钥的中间值减少到较小的一组值。 Reducer实现可以通过JobContext.getConfiguration()方法访问作业的Configuration。 Reducer具有三个主要阶段-随机,排序和缩减。

  • 随机播放-Reducer使用HTTP通过网络从每个Mapper复制排序的输出。

  • 排序-框架按键合并对Reducer输入的排序(因为不同的Mappers可能输出相同的键)。混洗和排序阶段同时发生,即,在获取输出的同时,将它们合并。

  • Reduce-在此阶段,对排序后的输入中的每个<键((值的集合)>)调用reduce(对象,可迭代,上下文)方法。

方法

reduce是Reducer类中最突出的方法。语法定义如下-

reduce(KEYIN key, Iterable values, org.apache.hadoop.mapreduce.Reducer.Context context)

对于键值对集合上的每个键,都将调用此方法一次。