Hadoop源代码分析(*IDs类和*Context类)
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,我们开始来分析Hadoop MapReduce的内部的运行机制。用户向Hadoop提交Job(作业),作业在JobTracker对象的控制下执行。Job被分解成为Task(任务),分发到集群中,在Ta
千家信息网最后更新 2025年01月23日Hadoop源代码分析(*IDs类和*Context类)
我们开始来分析Hadoop MapReduce的内部的运行机制。用户向Hadoop提交Job(作业),作业在JobTracker对象的控制下执行。Job被分解成为Task(任务),分发到集群中,在TaskTracker的控制下运行。Task包括MapTask和ReduceTask,是MapReduce的Map操作和Reduce操作执行的地方。这中任务分布的方法比较类似于HDFS中NameNode和DataNode的分工,NameNode对应的是JobTracker,DataNode对应的是TaskTracker。JobTracker,TaskTracker和MapReduce的客户端通过RPC通信,具体可以参考HDFS部分的分析。 我们先来分析一些辅助类,首先是和ID有关的类,ID的继承树如下: 这张图可以看出现在Hadoop的org.apache.hadoop.mapred向org.apache.hadoop.mapreduce迁移带来的一些问题,其中灰色是标注为@Deprecated的。ID携带一个整型,实现了WritableComparable接口,这表明它可以比较,而且可以被Hadoop的io机制串行化/解串行化(必须实现compareTo/readFields/write方法)。JobID是系统分配给作业的唯一标识符,它的toString结果是job_ 作业分成任务执行,任务号TaskID包含了它所属的作业ID,同时也有任务ID,同时还保持了这是否是一个Map任务(成员变量isMap)。任务号的字符串表示为task_ 一个任务有可能有多个执行(错误恢复/消除Stragglers等),所以必须区分任务的多个执行,这是通过类TaskAttemptID来完成,它在任务号的基础上添加了尝试号。一个任务尝试号的例子是attempt_200707121733_0003_m_000005_0,它是任务task_200707121733_0003_m_000005的第0号尝试。 JVMId用于管理任务执行过程中的Java虚拟机,我们后面再讨论。 为了使Job和Task工作,Hadoop提供了一系列的上下文,这些上下文保存了Job和Task工作的信息。 处于继承树的最上方是org.apache.hadoop.mapreduce.JobContext,前面我们已经介绍过了,它提供了Job的一些只读属性,两个成员变量,一个保存了JobID,另一个类型为JobConf,JobContext中除了JobID外,其它的信息都保持在JobConf中。它定义了如下配置项: l mapreduce.inputformat.class:InputFormat的实现 l mapreduce.map.class:Mapper的实现 l mapreduce.combine.class: Reducer的实现 l mapreduce.reduce.class:Reducer的实现 l mapreduce.outputformat.class: OutputFormat的实现 l mapreduce.partitioner.class: Partitioner的实现 同时,它提供方法,使得通过类名,利用Java反射提供的Class.forName方法,获得类对应的Class。org.apache.hadoop.mapred的JobContext对象比org.apache.hadoop.mapreduce.JobContext多了成员变量progress,用于获取进度信息,它类型为JobConf成员job指向mapreduce.JobContext对应的成员,没有添加任何新功能。JobConf继承自Configuration,保持了MapReduce执行需要的一些配置信息,它管理着46个配置参数,包括上面mapreduce配置项对应的老版本形式,如mapreduce.map.class 对应mapred.mapper.class。这些配置项我们在使用到它们的时候再介绍。 org.apache.hadoop.mapreduce.JobContext的子类Job前面也已经介绍了,后面在讨论系统的动态行为时,再回来看它。 TaskAttemptContext用于任务的执行,它引入了标识任务执行的TaskAttemptID和任务状态status,并提供新的访问接口。org.apache.hadoop.mapred的TaskAttemptContext继承自mapreduce的对应版本,只是增加了记录进度的progress。 更多精彩内容请关注:http://bbs.superwu.cn 关注超人学院微信二维码: |
任务
作业
成员
配置
信息
方法
分析
变量
同时
这是
尝试
上下
上下文
例子
多个
对象
接口
机制
标识
版本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安卓登录服务器
易木标准版提示数据库连接失败
宿州电商软件开发要多少钱
网络安全制度清单(含文号)
数据库关注
微信个人数据库
数据库英语题目
濮阳软件开发学校
gta5两个R星服务器
承影互联网科技有限公司
软件开发业务组
软件开发不赚钱
现有网络技术和电商的发展
安徽与江苏交界服务器
如何能查到怀旧服服务器人口
服务器dc-dc转换器
省考报名要求软件开发经验
职业院校劳务派遣软件开发
国家软件开发项目
国内高校网络安全专业少年班
山西鼎扬网络技术有限公司
宿州电商软件开发要多少钱
美国服务器ip地址
完美平台不能在安全服务器
广安网络技术操作
数据库开发技术实验一
计算机网络技术的主要技术是
后台管理系统服务器
蔚来软件开发中国
方舟手游服务器如何更改管理