hadoop-mapreduce分析
时间:2015-10-08 12:02 来源:linux.it.net.cn 作者:IT
把整个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:结束某一个任务;
(责任编辑:IT)
把整个Hadoop看作是容器,那么Mapper和Reduce就是容器里的组件,*Context保存了组件的一些配置信息,同时也是和容器通信的机制。
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:结束某一个任务; (责任编辑:IT) |