当前位置: > Linux集群 > Hadoop >

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)
------分隔线----------------------------