1、Jobtracker启动过程
Jobtracker是一个后台进程,它包含了一个main函数。我们可以从main函数入手,逐步分析Jobtracker启动过程。在main函数中有2行比较重要的代码分别是:
JobTracker tracker = startTracker(new JobConf());//创建一个JobTracker的对象
tracker.offerService();//启动各个服务
2、其中startTracker()的主要工作是创建一个JobTracker的对象,其构造函数的主要作用是对一些重要的变量进行初始化;而函数offerService()则是启动JobTracker的内部一些重要的线程
2、1ACLsManager类
它是权限管理类,提供了checkAccess方法以对用户的各种操作进行权限检查,比如用户提交作业后,JobTracker.submintJob函数中包含以下代码检查用户是否可以提交作业
代码 下面是对用户进行一次鉴权
try {
aclsManager.checkAccess(job, ugi, Operation.SUBMIT_JOB);
} catch (IOException ioe) {
LOG.warn(“Access denied for user ” + job.getJobConf().getUser()
+ “. Ignoring job ” + jobId, ioe);
job.fail();
throw ioe;
}
该类涉及2种权限,队列权限和作业权限,分别有QueueManager类和JobACLsManager类进行管理
下面这对代码可以看出
aclsManager = new ACLsManager(conf, new JobACLsManager(conf),