Hadoop的MapReduce框架中,Map动作通过Mapper类来抽象。一般来说,我们会实现自己特殊的Mapper,并注册到系统中,执行时,我们的Mapper会被MapReduce框架调用。
内部类Context继承自MapContext,并没有引入任何新的方法。
Mapper的四个方法是setup,map,cleanup和run。其中,setup和cleanup用于管理Mapper生命周期中的资源,setup在完成Mapper构造,即将开始执行map动作前调用,cleanup则在所有的map动作完成后被调用。方法map用于对一次输入的key/value对进行map动作。run方法执行了上面描述的过程,它调用setup,让后迭代所有的key/value对,进行map,最后调用cleanup。
org.apache.hadoop.mapreduce.lib.map中实现了Mapper的三个子类,分别是InverseMapper(将输入<key, value> map为输出<value, key>),MultithreadedMapper(多线程执行map方法)和TokenCounterMapper(对输入的value分解为token并计数)。其中最复杂的是MultithreadedMapper,我们就以它为例,来分析Mapper的实现。
MultithreadedMapper会启动多个线程执行另一个Mapper的map方法,它会启动mapred.map.multithreadedrunner.threads(配置项)个线程执行Mapper:mapred.map.multithreadedrunner.class(配置项)。MultithreadedMapper重写了基类Mapper的run方法,启动N个线程(对应的类为MapRunner)执行mapred.map.multithreadedrunner.class(我们称为目标Mapper)的run方法(就是说,目标Mapper的setup和cleanup会被执行多次)。目标Mapper共享同一份InputSplit,这就意味着,对InputSplit的数据读必须线程安全。为此,MultithreadedMapper引入了内部类SubMapRecordReader,SubMapRecordWriter,SubMapStatusReporter,分别继承自RecordReader,RecordWriter和StatusReporter,它们通过互斥访问MultithreadedMapper的Mapper.Context,实现了对同一份InputSplit的线程安全访问,为Mapper提供所需的Context。这些类的实现方法都很简单。
分享到:
相关推荐
Hadoop源码 包含mapred
Hadoop源码分析,Map-Reduce作业提交运行入手分析这个过程中涉及到的Hadoop源码架构,此外本文基于的Hadoop版本是2.6.4
java map源码
Map-Reduce原理体系架构和工作机制,eclipse与Hadoop集群连接
世界风java源码悟空-Hadoop Wukong 的 Hadoop 插件可让您通过命令行运行。 在使用 Wukong-Hadoop 开发、测试和编写 Hadoop 作业之前,您可能需要阅读有关 . 您可能还想查看其他一些丰富 Wukong 和 Hadoop 体验的项目...
word源码java hadoop-test hadoop、mapreduce的一些练习 包org.dan.service Hadoop RPC练习 包org.dan.mr.wordcount MapReduce单词计数 包org.dan.mr.flowsum MapReduce流量统计 包org.dan.mr.flowsumsort MapReduce...
MapTask辅助类源代码分析III\ Hadoop
026 Eclipse导入Hadoop源码项目 027 HDFS 设计目标 028 HDFS 文件系统架构概述 029 HDFS架构之NameNode和DataNode 030 HDFS 架构讲解总结 031 回顾NameNode和DataNode 032 HDFS架构之Client和SNN功能 033 HDFS Shell...
HadoopFs 从 F# 的角度来看,在 HDInsight 上运行的 Hadoop 的现有 .NET API 有点尴尬:- 需要从抽象类继承不纯的风格使代码更难测试HadoopFs 让想要开发 map/reduce 作业的 F# 开发人员的生活更轻松:- 您的 map/...
hadoop分布式集群大数据云计算源码视频教程,包括Hadoop经典实战教程、hadoop高级讲解、HBase数据分析与建模,实战案例剖析、Map-Reduce体系架构
hadoop入门级的代码 Java编写 eclipse可运行 包含 hdfs的文件操作 rpc远程调用的简单示例 map-reduce的几个例子:wordcount 学生平均成绩 手机流量统计
java实现数据同步源码 BigData-In-Practice 大数据项目仓库、涉及 Hadoop、Spark、Kafka、Hbase..... 等,更新中... 综合实践项目 项目名 说明 使用 Spark SQL imooc 访问日志,数据清洗,统计,可视化 入门学习示例...
基于hadoop平台的k-means算法使用map-reduce模式
NULL 博文链接:https://sgq0085.iteye.com/blog/1879442
java操作hadoop之mapreduce分析年气象数据最低温度实战源码,附带所需jar包,欢迎学习。
毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以...
java map原始码K均值聚类Java源代码 使用Java源代码在Hadoop中进行K-Mean聚类
* 程序利用Eclipse EE在Hadoop平台下,使用Map/Reduce编程框架,将传统的C4.5决策树算法并行化; * 该部分属于本科毕业设计中,并行随机森林算法的核心部分; * Hadoop的搭建主要参考给力星的博客( ...
java8集合源码第1章:介绍 火花RDD Spark SQL 和数据帧 星火机器学习 Spark Streaming + Apache Kafka (Java8) Hadoop - 限制 Map & Reduce 不适用于所有情况 一个的输出作为另一个的输入 火花 还使用 M&R 磁盘速度...