转帖-hadoop的JobId TaskId生成规则
在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)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Hive过滤脏数据的一些经验
如下文件需要处理,每个文件大概13G,其中字段以空格(32)分隔的7个字段;最麻烦的是中间有脏数据: -rw-r--r-- 1 hadoop ifengdev 1895843464 May 6 14:56 feedback201503_201.tar.gz -rw-r--r-- 1 hadoop ifengdev 1896885848 May 6 14:59 feedback201503_202.tar.gz -rw-r--r-- 1 hadoop ifengdev 1891790676 May 6 15:00 feedback201503_203.tar.gz -rw-r--r-- 1 hadoop ifengdev 1894197100 May 6 15:01 feedback201503_204.tar.gz -rw-r--r-- 1 hadoop ifengdev 1894074074 May 6 15:02 feedback201503_205.tar.gz -rw-r--r-- 1 hadoop ifengdev 1829224750 May 6 16:13 feedbac...
- 下一篇
Hadoop学习笔记(三):Hive简介
定义 Hive是一个构建在Hadoop上的数据仓库框架。可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。(来自百度百科~~) metastore metastore是Hive元数据的集中存放地,metastore包括两部分:服务和后台数据的存储。默认情况下,元数据存储在Derby数据库实例中。由于是本地数据库且不支持并发访问,故多作为练手使用。还一种使用其他数据库的方式称为“Local metastore”,支持并发访问,但metestore服务仍然和hive服务运行在同一个进程中,故称之为本地metastore。还有第三种方式:“Remote metastore”,metastore无武器和hive服务运行在不同的进程内,可以提供更好的可管理性和安全性。(怎么配Local metastore和Remte metastore先不搞了,先拿默认方式练手为主~...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)