把整个Hadoop看作是容器,那么Mapper和Reduce就是容器里的组件,*Context保存了组件的一些配置信息,同时也是和容器通信的机制。
参数 |
作用 |
缺省值 |
其它实现 |
InputFormat |
将输入的数据集切割成小数据集 InputSplits, 每一个InputSplit 将由一个 Mapper负责处理。此外InputFormat 中还提供一个RecordReader 的实现, 将一个 InputSplit 解析成<key,value> 对提供给 map函数。 |
TextInputFormat (针对文本文件,按行将文本文件切割成 InputSplits, 并用LineRecordReader 将 InputSplit 解析成 <key,value> 对,key 是行在文件中的位置,value 是文件中的一行) |
SequenceFileInputFormat |
OutputFormat |
提供一个 RecordWriter 的实现,负责输出最终结果 |
TextOutputFormat (用 LineRecordWriter 将最终结果写成纯文件文件,每个 <key,value> 对一行,key 和 value 之间用 tab 分隔) |
SequenceFileOutputFormat |
OutputKeyClass |
输出的最终结果中 key 的类型 |
LongWritable |
|
OutputValueClass |
输出的最终结果中 value 的类型 |
Text |
|
MapperClass |
Mapper 类,实现 map 函数,完成输入的<key,value> 到中间结果的映射 |
IdentityMapper (将输入的 <key,value> 原封不动的输出为中间结果) |
LongSumReducer, LogRegexMapper, InverseMapper |
CombinerClass |
实现 combine 函数,将中间结果中的重复 key 做合并 |
null (不对中间结果中的重复 key 做合并) |
|
ReducerClass |
Reducer 类,实现 reduce函数,对中间结果做合并,形成最终结果 |
IdentityReducer (将中间结果直接输出为最终结果) |
AccumulatingReducer, LongSumReducer |
InputPath |
设定 job 的输入目录, job 运行时会处理输入目录下的所有文件 |
null |
|
OutputPath |
设定 job 的输出目录,job的最终结果会写入输出目录下 |
null |
|
MapOutputKeyClass |
设定 map 函数输出的中间结果中 key 的类型 |
如果用户没有设定的话,使用OutputKeyClass |
|
MapOutputValueClass |
设定 map 函数输出的中间结果中 value 的类型 |
如果用户没有设定的话,使用OutputValuesClass |
|
OutputKeyComparator |
对结果中的 key 进行排序时的使用的比较器 |
WritableComparable |
|
PartitionerClass |
对中间结果的 key 排序后,用此 Partition 函数将其划分为R份,每份由一个Reducer 负责处理。 |
HashPartitioner (使用 Hash 函数做 partition) |
KeyFieldBasedPartitioner PipesPartitioner |
Job继承自JobContext,提供了一系列的set方法,用于设置Job的一些属性(Job更新属性,JobContext读属性),同时,Job还提供了一些对Job进行控制的方法,如下:
l mapProgress:map的进度(0—1.0);
l reduceProgress:reduce的进度(0—1.0);
l isComplete:作业是否已经完成;
l isSuccessful:作业是否成功;
l killJob:结束一个在运行中的作业;
l getTaskCompletionEvents:得到任务完成的应答(成功/失败);
l killTask:结束某一个任务;
|