2014年4月25日 Map-Reduce SDK简介 — ODPS 1.0 documentation
file:///C:/Users/Administrator/Desktop/alibaba/odps_doc/odps_doc/prddoc/odps_mr/odps_mr_sdk.html 1/9
Map-Reduce SDK简介
本章节将对ODPS MapReduce SDK的主要接口做简要介绍,更多详细信息请参阅SDK Java Doc。
核心接口
在本小节,我们仅会对较为常用的MapReduce核心接口做简短介绍:
主要接口 描述
MapperBase 用户自定义的Map函数需要继承自此类。处理输入表的记录对 象,
加工处理成键值对集合输出到Reduce阶段,或者不经过 Reduce阶
段直接输出结果记录到结果表。不经过Reduce阶段而 直接输出计
算结果的作业,也可称之为Map-Only作业。
ReduceBase 用户自定义的Reduce函数需要继承自此类。对与一个键(Key) 关联
的一组数值集(Values)进行归约计算。
TaskContext 是MapperBase及ReduceBase多个成员函数的输入参数之一。 含
有任务运行的上下文信息。
JobClient 用于提交和管理作业,提交方式包括阻塞(同步)方式及非阻塞 (异
步)方式。
RunningJob 作业运行时对象,用于跟踪运行中的MapReduce作业实例。
JobConf 描述一个MapReduce任务的配置,通常在主程序(main函数)中 定
义JobConf对象,然后通过JobClient提交作业给ODPS服务。
功能及SDK对比
ODPS提供的MapReduce与其他MapReduce框架提供的功能略有不同。本章节主要介绍ODPS Mapreduce
与Hadoop MapReduce 0.19版本的区别。
Mapper/Reducer
Hadoop MapReduce ODPS MapReduce
map(InKey key, InputValue value,
OutputCollector<OutKey, OutValue> output, Reporter
reporter)
map(long key, Record record,
TaskContext context)
reduce(InKey key, Iterator<InValue> values,
OutputCollector<OutKey, OutValue> output, Reporter
reporter)
reduce(Record key,
Iterator<Record> values,
TaskContext context)
ODPS的Map/Reduce接口没有Reporter参数。Reporter参数在Hadoop中被用来实时更新Worker进度及统
计信息等,但上述两种行为不受用户控制。目前,ODPS仅支持的进度汇报仅统计到Stage级别,不会统计
Worker级别的进度。ODPS支持用户自定义统计信息,但统计信息的收集工作不是实时进行的,会在任务
结束后进行统计信息的汇总。
ODPS的TaskContext接口中提供了progress功能,但此功能是防止Worker长时间运行未结束,被框架误认
为超时而被杀的情况出现。这个接口更类似于向框架发送心跳信息,并不是用来汇报Worker进度。ODPS
MapReduce默认Worker超时时间为10分钟(系统默认配置,不受用户控制),如果超过10分钟,Worker仍
然没有向框架发送心跳(调用progress接口),框架会强制停止该Worker,MapReduce任务失败退出。因