天天看点

转帖-hadoop的JobId TaskId生成规则

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

    jobid是如何生成的呢  ?

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

     代码二:

      trackeridentifier 和 nextjobid均是jobtracker的内部变量 。

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

      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号作业。

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

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

继续阅读