/**
*
*/
package com.taobao.top.analysis.node;
import java.util.Map;
import com.taobao.top.analysis.config.MasterConfig;
import com.taobao.top.analysis.exception.AnalysisException;
import com.taobao.top.analysis.node.component.MasterNode;
import com.taobao.top.analysis.node.event.GetTaskRequestEvent;
import com.taobao.top.analysis.node.event.SendResultsRequestEvent;
import com.taobao.top.analysis.node.job.Job;
/**
* 任务管理类,是Master的核心类,负责对于整个任务管理流程
* 注意由于默认的master是单线程执行任务管理,因此要保证jobManager的各个方法都能够快速返回避免影响流程
* 同时由于单线程管理,对于任务管理和分配的并发控制就可以比较简单处理
* @author fangweng
* @Email fangweng@taobao.com
* 2011-11-28
*
*/
public interface IJobManager extends IComponent<MasterConfig>{
/**
* 包括重新载入任务列表,检查Task执行状况判断是否需要重置,检查Job状态判断是否需要导出,重置,合并结果
* @throws AnalysisException
*/
public void checkJobStatus() throws AnalysisException;
/**
* 获取没有完成的任务
* @param 个数
*/
public void getUnDoJobTasks(GetTaskRequestEvent jobRequestEvent);
/**
* 增加Slave计算后的返回结果
* @param 分析后结果
*/
public void addTaskResultToQueue(SendResultsRequestEvent jobResponseEvent);
/**
* 导出内存任务数据到磁盘
* @param 需要导出的任务
*/
public void exportJobData(String jobName);
/**
* 从磁盘载入任务数据到内存,Job主干
* @param 需要导入的任务
*/
public void loadJobData(String jobName);
/**
* 从磁盘载入任务数据到内存,非Job主干
* @param 需要导入的任务
*/
public void loadJobDataToTmp(String jobName);
/**
* 清除掉某一个job在内存的数据
* @param 任务名称
*/
public void clearJobData(String jobName);
/**
* 从某一个年代载入job的临时数据开始恢复
* @param jobName
* @param epoch
*/
public void loadJobBackupData(String jobName,String epoch);
/**
* 设置masterNode来向上传递消息,由master向另一些部件发起消息或者处理
* @param masterNode
*/
public void setMasterNode(MasterNode masterNode);
public IJobBuilder getJobBuilder();
public void setJobBuilder(IJobBuilder jobBuilder);
public IJobExporter getJobExporter();
public void setJobExporter(IJobExporter jobExporter);
public IJobResultMerger getJobResultMerger();
public void setJobResultMerger(IJobResultMerger jobResultMerger);
public Map<String,Job> getJobs();
public void setJobs(Map<String,Job> jobs);
}