JobTracker实现原理(二)

JobTracker为一个后台进程。首先由源代码入手,看一下JobTracker是如何启动起来的。

JobTrackermain函数中有两行核心代码:

        JobTracker tracker = startTracker(new JobConf());

            tracker.offerService();

首先创建JobTracker类的对象,然后开启JobTracker的必要的服务。

startTracker方法即为对一些重要的对象进行初始化。其中包括DelegationTokenSecretManagerACLsManagertaskSchedulerinterTrackerServerinfoServerdnsToSwitchMapping等。

ACLsManager:权限管理类。包括作业权限(查看权限、修改权限)和队列权限(作业提交权限、作业管理权限)

dnsToSwitchMapper:将IP地址或DNS节点名转换为网络位置。安装/数据中心/机架/节点。

可以编写脚本程序来解析,并在配置文件中指定使用该脚本程序进行解析。

offerService方法会启动JobTracker内部几个比较重要的后台服务进程,分别进行说明:

expireTrackersThread:用于发现和清理死掉的TaskTracker。通过心跳来检测,一旦10分钟内未收到心跳,则认为它已经死掉,然后将它的相关信息从数据结构maps中清除,并同时将在它之上运行的task标注为KILLED_UNCLEAN

retiredJobsThread:用于清理长时间驻留在内存中已经完成的作业信息。当然是在满足一定的条件后才能清除,并且也不是直接删除,而是放到过期队列中,超过配置的队列长度后再彻底删除。

expireLaunchingTaskThread:用于发现分配给TaskTracker但一直未汇报信息的task。将其状态标注为Failed

completedJobsStoreThread:将已经完成的作业运行信息保存到HDFS上。以供查询任意时间提交的作业和还原作业的运行信息。

③作业恢复机制:这是为了解决JobTracker的单点故障问题。

JobHistoryServerRecoveryManager负责。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值