4.4.2 JobSubmissionProtocol通信协议

JobSubmissionProtocol是Client与JobTracker之间的通信协议。用户可通过该协议提交作业和查看作业运行状态。该协议中的接口可分为三类:

(1)作业提交

Client可通过以下RPC函数提交作业:


public JobStatus submitJob(JobID jobName, String jobSubmitDir, Credentials ts)throws IOException;


其中,jobName为该作业的ID, Client可通过getNewJobId()函数为作业获取一个唯一的ID;jobSubmitDir为作业文件(如jar包,xml文件等)所在的目录,一般为HDFS上的一个目录;ts是该作业分配到的密钥或者安全令牌。

(2)作业控制

当用户提交作业之后,可进一步控制该作业,主要有三个操作:修改其作业优先级(setJobPriority函数)、杀死一个作业(killJob函数)、杀死一个任务(killTask函数)。

(3)查看系统状态和作业运行状态

该协议提供了一系列函数以供Client查看集群状态。下面是其中几个函数的声明:


//获取集群当前状态,如slot总数,所有正在运行的Task数目等

public ClusterStatus getClusterStatus(boolean detailed)throws IOException;

//获取某个作业的运行状态

public JobStatus getJobStatus(JobID jobid)throws IOException;

//获取所有作业的运行状态

public JobStatus[]getAllJobs()throws IOException;