MapReduce编程模型简解

1 MapReduce编程模型
根据运行顺序,主要由以下五部分组成:
1.1 InputFormat
主要用于描述输入数据的格式。
提供以下两个功能:
1) 数据切分:按照某个策略将输入数据切分成若干个split,以便确定Map Task个数以及对应的split;
2) 为Mapper提供输入数据:给定某个split,能将其解析成一个个key/value对。
包含算法:
1) 文件切分算法:用于确定InputSplit的个数,以及每个InputSplit对应的数据段;
2) Host选择算法:确定每个InputSplit的元数据信息;
1.2 Map
1) 初始化:对Map的运行,进行初始化处理;
2) Map操作:调用用户实现的Map方法,对一个个key/value对进行处理;
3) 清理:对Mapper进行清理;
1.3 Partitioner
对Mpaaer产生的中间结果进行分片,以便将同一分组的数据交给同一个Reduce处理,它直接影响到Reduce阶段的负载均衡;
1.4 Reduce
1) 初始化:对Reduce的运行,进行初始化处理;
2) Map操作:调用用户实现的Reduce方法,对各个key/value组对进行处理;
3) 清理:对Reduce进行清理;
1.5 OutputFormat
主要用于描述输出数据的格式,它能够将Reduce输出的key/value对写入特定格式的文件中。
1) 实现checkOutputSpecs接口:检查用户配置的输出目录是否存在,如果存在则抛出异常,以防止之前的数据被覆盖;
2) 处理side-effect file:对于运行缓慢的任务,会在另外一个节点上启动一个相同的任务,当其中一个完成任务时,会kill掉另外一个还没完成的任务。任务运行过程中,会把输出结果先写在side-effect file中,当任务完成时,才把结果移动到用户指定的输出目录中;

猜你喜欢

转载自szjian.iteye.com/blog/1984419
今日推荐