FIFO调度器--用户提交的作业用到的三个容器
2013-05-15 20:06
316 查看
当运用FIFO调度器时,用户提交的作业放到了三个容器中,核心代码如下:
jobs是JobTracker的成员变量,它其中存放的是<JobID,JobInProgress>的key-value对。
Map<JobID, JobInProgress> jobs = Collections.synchronizedMap(new TreeMap<JobID, JobInProgress>());
通过jobs.values()方法,我们可以得到一个存放JobInProgress对象的容器,里面有正在运行的作业,失败的作业,完成的作业,因此,我们通过就jobs就可以知道,此刻都是有哪些作业正在运行。
2. JobQueueJobInProgressListener维护了一个jobQueue,用来管理和调度所有的JobInProgress,如增加作业、移除作业以及更新作业。
private Map<JobSchedulingInfo, JobInProgress> jobQueue;
public Collection<JobInProgress> getJobQueue() {
return jobQueue.values();
}
从jobqueue_details.jsp中,我们可以看到,它是通过jobQueue来获取正在运行的作业列表的,作业调度时也是根据jobs来选择优先级高,开始时间早(提交时间即为开始时间)的作业来执行。。
3. EagerTaskInitializationListener中维护了一个链表,主要用于作业的初始化。
private List<JobInProgress> jobInitQueue = new ArrayList<JobInProgress>();
对jobInitQueue根据优先级和startTime进行排序后,后台线程负责对链表中的作业进行初始化。
synchronized (jobs) { synchronized (taskScheduler) { jobs.put(job.getProfile().getJobID(), job); for (JobInProgressListener listener : jobInProgressListeners) { listener.jobAdded(job); } } }
jobs是JobTracker的成员变量,它其中存放的是<JobID,JobInProgress>的key-value对。
Map<JobID, JobInProgress> jobs = Collections.synchronizedMap(new TreeMap<JobID, JobInProgress>());
通过jobs.values()方法,我们可以得到一个存放JobInProgress对象的容器,里面有正在运行的作业,失败的作业,完成的作业,因此,我们通过就jobs就可以知道,此刻都是有哪些作业正在运行。
2. JobQueueJobInProgressListener维护了一个jobQueue,用来管理和调度所有的JobInProgress,如增加作业、移除作业以及更新作业。
private Map<JobSchedulingInfo, JobInProgress> jobQueue;
public Collection<JobInProgress> getJobQueue() {
return jobQueue.values();
}
从jobqueue_details.jsp中,我们可以看到,它是通过jobQueue来获取正在运行的作业列表的,作业调度时也是根据jobs来选择优先级高,开始时间早(提交时间即为开始时间)的作业来执行。。
3. EagerTaskInitializationListener中维护了一个链表,主要用于作业的初始化。
private List<JobInProgress> jobInitQueue = new ArrayList<JobInProgress>();
对jobInitQueue根据优先级和startTime进行排序后,后台线程负责对链表中的作业进行初始化。
相关文章推荐
- 在提交订单时,为了让用户体验更好,一般改成正在提交,后面加三个点,为了让页面更生动,可以把点点改成动态
- ***微信中用户提交信息的流程(网址接入流程)
- (大数据之MapReduce) Hadoop作业提交分析(四)
- stl提供了三个最基本的容器:vector,list,deque
- 浅谈PHP之对于用户提交数据的过滤
- 制作一个银行卡用户登录页面,提交后连接数据库进行登录验证,根据验证结果跳转到不同页面
- 四种常见的 POST 提交数据方式,使用postman会用到
- Hadoop作业提交分析(五)
- Spark提交作业运行过程
- spark源码研究---作业提交
- Hadoop客户端提交作业时java.lang.ClassNotFoundException
- struts2拦截器实现用户提交订单前必须登入
- 基于容器的用户安全管理系统和JMS(6)
- AJAX避免用户重复提交请求
- 利用spring-boot构建spark job作业提交服务
- 4.构造方法与重载:定义一个网络用户类,要处理的信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 ema
- ASP轻松地实现了防止用户刷新多次提交表单和使用后退钮重复多次提交表单
- STL提供了三个最基本的容器:vector,list,deque
- 领英大数据平台--超过1万节点,每天15万个作业,智能连接4.7亿职场用户 [session]
- 如何防止用户重复提交表单