转帖-hadoop的JobId TaskId生成规则

简介:     在hadoop的任务job中,jobid是标志一个任务的唯一标志,可以用于定位到该job,查询该job相关信息,kill掉该job 。     jobId是如何生成的呢  ?     在一般的服务集群上我们通过JobTracker来管理job,该id既是通过JobTracke的getNewJobId()方法得到,具体代码如下:   public synchronized J

    在hadoop的任务job中,jobid是标志一个任务的唯一标志,可以用于定位到该job,查询该job相关信息,kill掉该job 。

    jobId是如何生成的呢  ?

    在一般的服务集群上我们通过JobTracker来管理job,该id既是通过JobTracke的getNewJobId()方法得到,具体代码如下:

 

public synchronized JobID getNewJobId() throws IOException {
    ensureRunning();
    return new JobID(getTrackerIdentifier(), nextJobId++);
  }

     代码二:

 

 /**
   * Get the unique identifier (ie. timestamp) of this job tracker start.
   * @return a string with a unique identifier
   */
  public String getTrackerIdentifier() {
    return trackerIdentifier;
  }

      trackerIdentifier 和 nextJobId均是JobTracker的内部变量 。

      trackerIdentifier 是固定的JobTracker启动(实例化)时就确定的,代码如下:

     

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");

trackerIdentifier = dateFormat.format(new Date());

 

       

      trackerIdentifier是启动时的时间戳 。 nextJobId是启动时赋值1,没执行一次该方法则nextJobId值+1 。 所以job即是:job_JobTracker启动时间戳_该JobTracker生成的顺序的一个id ,该id也叫做iobtracker的id。 JobID是系统分配给作业的唯一标识符,它的toString结果是job_<jobtrackerID>_<jobNumber>。例子:job_200707121733_0003表明这是jobtracker200707121733 (利用jobtracker的开始时间作为ID)的第3号作业。

      作业分成任务执行,任务号TaskID包含了它所属的作业ID,同时也有任务ID,同时还保持了这是否是一个Map任务(成员变量isMap)。任务号的字符串表示为task_<jobtrackerID>_<jobNumber>_[m|r]_<taskNumber>,如task_200707121733_0003_m_000005表示作业200707121733_0003的000005号任务,改任务是一个Map任务,同样,reduce任务中间是_r_.... 。

       一个任务有可能有多个执行(错误恢复/消除Stragglers等),所以必须区分任务的多个执行,这是通过类TaskAttemptID来完成,它在任务号的基础上添加了尝试号。一个任务尝试号的例子是attempt_200707121733_0003_m_000005_0,它是任务task_200707121733_0003_m_000005的第0号尝试。

      (原帖:http://blog.csdn.net/codestinity/article/details/6939086)

目录
相关文章
|
6月前
|
分布式计算 Hadoop Java
使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱
使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱
|
7月前
|
消息中间件 关系型数据库 MySQL
Hadoop学习笔记(HDP)-Part.03 资源规划
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
178 0
|
分布式计算 资源调度 Hadoop
Apache Oozie一 实战操作一修改 hadoop 资源分配属性|学习笔记
快速学习 Apache Oozie一 实战操作一修改 hadoop 资源分配属性
Apache Oozie一 实战操作一修改 hadoop 资源分配属性|学习笔记
|
存储 分布式计算 Hadoop
在Hadoop环境里面统计西游记文章的词组(hdfs实验)
在Hadoop环境里面统计西游记文章的词组(hdfs实验)
186 0
在Hadoop环境里面统计西游记文章的词组(hdfs实验)
|
分布式计算 Hadoop Scala
|
存储 分布式计算 安全
十一、Hadoop完全分布式的搭建详情
十一、Hadoop完全分布式的搭建详情
十一、Hadoop完全分布式的搭建详情
|
SQL 分布式计算 算法
《hadoop进阶》基于hadoop和hive的微博热词跟踪系统
打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.
1405 0
|
存储 分布式计算 Hadoop
Hadoop客户端Job提交流程
从源码层面,总结下Hadoop客户端提交作业的流程:   1. 选择使用分布式环境通信协议,还是本地调试通信协议      org.apache.hadoop.mapreduce.Job#connect   2. 上传作业代码jobjar, libjar等,从本地文件系统到HDFS中去。     &nbsp
1848 0