在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)