本文整理汇总了Java中org.apache.kylin.job.execution.Output类的典型用法代码示例。如果您正苦于以下问题:Java Output类的具体用法?Java Output怎么用?Java Output使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Output类属于org.apache.kylin.job.execution包,在下文中一共展示了Output类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: listJobInstances
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
private List<JobInstance> listJobInstances(String project, String cube, long startTime, long endTime) {
final List<JobInstance> result = Lists.newArrayList();
final List<AbstractExecutable> executables = executableManager.getAllExecutables(startTime, endTime);
final Map<String, Output> allOutputs = executableManager.getAllOutputs();
for (AbstractExecutable executable : executables) {
if (executable instanceof CubingJob) {
String cubeName = CubingExecutableUtil.getCubeName(executable.getParams());
boolean shouldExtract = false;
if (cube == null || cube.equalsIgnoreCase(cubeName)) {
if (project == null) {
shouldExtract = true;
} else {
ProjectInstance projectInstance = projectManager.getProject(project);
if (projectInstance != null && projectInstance.containsRealization(RealizationType.CUBE, cubeName)) {
shouldExtract = true;
}
}
}
if (shouldExtract) {
result.add(parseToJobInstance((CubingJob) executable, allOutputs));
}
}
}
return result;
}
开发者ID:apache,项目名称:kylin,代码行数:27,代码来源:JobInstanceExtractor.java
示例2: parseToJobStep
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
private JobInstance.JobStep parseToJobStep(AbstractExecutable task, int i, Output stepOutput) {
Preconditions.checkNotNull(stepOutput);
JobInstance.JobStep result = new JobInstance.JobStep();
result.setId(task.getId());
result.setName(task.getName());
result.setSequenceID(i);
result.setStatus(parseToJobStepStatus(stepOutput.getState()));
for (Map.Entry<String, String> entry : stepOutput.getExtra().entrySet()) {
if (entry.getKey() != null && entry.getValue() != null) {
result.putInfo(entry.getKey(), entry.getValue());
}
}
result.setExecStartTime(AbstractExecutable.getStartTime(stepOutput));
result.setExecEndTime(AbstractExecutable.getEndTime(stepOutput));
if (task instanceof ShellExecutable) {
result.setExecCmd(((ShellExecutable) task).getCmd());
}
if (task instanceof MapReduceExecutable) {
result.setExecCmd(((MapReduceExecutable) task).getMapReduceParams());
result.setExecWaitTime(AbstractExecutable.getExtraInfoAsLong(stepOutput, MapReduceExecutable.MAP_REDUCE_WAIT_TIME, 0L) / 1000);
}
if (task instanceof HadoopShellExecutable) {
result.setExecCmd(((HadoopShellExecutable) task).getJobParams());
}
return result;
}
开发者ID:apache,项目名称:kylin,代码行数:27,代码来源:JobInstanceExtractor.java
示例3: resumeAllRunningJobs
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
private void resumeAllRunningJobs() {
for (final String id : executableManager.getAllJobIds()) {
final Output output = executableManager.getOutput(id);
AbstractExecutable executable = executableManager.getJob(id);
if (output.getState() == ExecutableState.RUNNING && executable instanceof DefaultChainedExecutable) {
try {
if (!jobLock.isLocked(getLockPath(executable.getParam(SEGMENT_ID)))) {
executableManager.resumeRunningJobForce(executable.getId());
fetcherPool.schedule(fetcher, 0, TimeUnit.SECONDS);
}
} catch (Exception e) {
logger.error("resume the job " + id + " fail in server: " + serverName, e);
}
}
}
}
开发者ID:apache,项目名称:kylin,代码行数:17,代码来源:DistributedScheduler.java
示例4: innerSearchCheckpointJobs
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
public List<JobInstance> innerSearchCheckpointJobs(final String cubeName, final String jobName,
final String projectName, final List<JobStatusEnum> statusList, final JobTimeFilterEnum timeFilter) {
// prepare time range
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
long timeStartInMillis = getTimeStartInMillis(calendar, timeFilter);
long timeEndInMillis = Long.MAX_VALUE;
Set<ExecutableState> states = convertStatusEnumToStates(statusList);
final Map<String, Output> allOutputs = getExecutableManager().getAllOutputs(timeStartInMillis, timeEndInMillis);
return Lists
.newArrayList(FluentIterable
.from(innerSearchCheckpointJobs(cubeName, jobName, states, timeStartInMillis, timeEndInMillis,
allOutputs, false, projectName))
.transform(new Function<CheckpointExecutable, JobInstance>() {
@Override
public JobInstance apply(CheckpointExecutable checkpointExecutable) {
return JobInfoConverter.parseToJobInstanceQuietly(checkpointExecutable, allOutputs);
}
}));
}
开发者ID:apache,项目名称:kylin,代码行数:22,代码来源:JobService.java
示例5: parseToJobStep
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
private JobInstance.JobStep parseToJobStep(AbstractExecutable task, int i) {
JobInstance.JobStep result = new JobInstance.JobStep();
result.setId(task.getId());
result.setName(task.getName());
result.setSequenceID(i);
result.setStatus(parseToJobStepStatus(task.getStatus()));
final Output output = getExecutableManager().getOutput(task.getId());
for (Map.Entry<String, String> entry : output.getExtra().entrySet()) {
if (entry.getKey() != null && entry.getValue() != null) {
result.putInfo(entry.getKey(), entry.getValue());
}
}
result.setExecStartTime(task.getStartTime());
result.setExecEndTime(task.getEndTime());
if (task instanceof ShellExecutable) {
result.setExecCmd(((ShellExecutable) task).getCmd());
}
if (task instanceof MapReduceExecutable) {
result.setExecCmd(((MapReduceExecutable) task).getMapReduceParams());
result.setExecWaitTime(((MapReduceExecutable) task).getMapReduceWaitTime() / 1000);
}
if (task instanceof HadoopShellExecutable) {
result.setExecCmd(((HadoopShellExecutable) task).getJobParams());
}
return result;
}
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:27,代码来源:JobService.java
示例6: parseToJobInstance
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
private JobInstance parseToJobInstance(CubingJob cubeJob, Map<String, Output> outputs) {
CubeInstance cube = CubeManager.getInstance(KylinConfig.getInstanceFromEnv())
.getCube(CubingExecutableUtil.getCubeName(cubeJob.getParams()));
Output output = outputs.get(cubeJob.getId());
final JobInstance result = new JobInstance();
result.setName(cubeJob.getName());
if (cube != null) {
result.setRelatedCube(cube.getDisplayName());
} else {
result.setRelatedCube(CubingExecutableUtil.getCubeName(cubeJob.getParams()));
}
result.setRelatedSegment(CubingExecutableUtil.getSegmentId(cubeJob.getParams()));
result.setLastModified(output.getLastModified());
result.setSubmitter(cubeJob.getSubmitter());
result.setUuid(cubeJob.getId());
result.setType(CubeBuildTypeEnum.BUILD);
result.setStatus(parseToJobStatus(output.getState()));
result.setMrWaiting(AbstractExecutable.getExtraInfoAsLong(output, CubingJob.MAP_REDUCE_WAIT_TIME, 0L) / 1000);
result.setExecStartTime(AbstractExecutable.getStartTime(output));
result.setExecEndTime(AbstractExecutable.getEndTime(output));
result.setExecInterruptTime(AbstractExecutable.getInterruptTime(output));
result.setDuration(AbstractExecutable.getDuration(AbstractExecutable.getStartTime(output), AbstractExecutable.getEndTime(output), AbstractExecutable.getInterruptTime(output)) / 1000);
for (int i = 0; i < cubeJob.getTasks().size(); ++i) {
AbstractExecutable task = cubeJob.getTasks().get(i);
result.addStep(parseToJobStep(task, i, outputs.get(task.getId())));
}
return result;
}
开发者ID:apache,项目名称:kylin,代码行数:30,代码来源:JobInstanceExtractor.java
示例7: parseToJobInstanceQuietly
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
public static JobInstance parseToJobInstanceQuietly(CubingJob job, Map<String, Output> outputs) {
try {
return parseToJobInstance(job, outputs);
} catch (Exception e) {
logger.error("Failed to parse job instance: uuid={}", job, e);
return null;
}
}
开发者ID:apache,项目名称:kylin,代码行数:9,代码来源:JobInfoConverter.java
示例8: parseToJobInstance
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
public static JobInstance parseToJobInstance(CubingJob job, Map<String, Output> outputs) {
if (job == null) {
logger.warn("job is null.");
return null;
}
Output output = outputs.get(job.getId());
if (output == null) {
logger.warn("job output is null.");
return null;
}
CubingJob cubeJob = (CubingJob) job;
CubeInstance cube = CubeManager.getInstance(KylinConfig.getInstanceFromEnv())
.getCube(CubingExecutableUtil.getCubeName(cubeJob.getParams()));
final JobInstance result = new JobInstance();
result.setName(job.getName());
result.setRelatedCube(cube != null ? cube.getDisplayName() : CubingExecutableUtil.getCubeName(cubeJob.getParams()));
result.setRelatedSegment(CubingExecutableUtil.getSegmentId(cubeJob.getParams()));
result.setLastModified(output.getLastModified());
result.setSubmitter(job.getSubmitter());
result.setUuid(job.getId());
result.setType(CubeBuildTypeEnum.BUILD);
result.setStatus(parseToJobStatus(output.getState()));
result.setMrWaiting(AbstractExecutable.getExtraInfoAsLong(output, CubingJob.MAP_REDUCE_WAIT_TIME, 0L) / 1000);
result.setExecStartTime(AbstractExecutable.getStartTime(output));
result.setExecEndTime(AbstractExecutable.getEndTime(output));
result.setExecInterruptTime(AbstractExecutable.getInterruptTime(output));
result.setDuration(AbstractExecutable.getDuration(result.getExecStartTime(), result.getExecEndTime(),
result.getExecInterruptTime()) / 1000);
for (int i = 0; i < job.getTasks().size(); ++i) {
AbstractExecutable task = job.getTasks().get(i);
result.addStep(parseToJobStep(task, i, outputs.get(task.getId())));
}
return result;
}
开发者ID:apache,项目名称:kylin,代码行数:38,代码来源:JobInfoConverter.java
示例9: parseToJobStep
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
public static JobInstance.JobStep parseToJobStep(AbstractExecutable task, int i, Output stepOutput) {
JobInstance.JobStep result = new JobInstance.JobStep();
result.setId(task.getId());
result.setName(task.getName());
result.setSequenceID(i);
if (stepOutput == null) {
logger.warn("Cannot found output for task: id={}", task.getId());
return result;
}
result.setStatus(parseToJobStepStatus(stepOutput.getState()));
for (Map.Entry<String, String> entry : stepOutput.getExtra().entrySet()) {
if (entry.getKey() != null && entry.getValue() != null) {
result.putInfo(entry.getKey(), entry.getValue());
}
}
result.setExecStartTime(AbstractExecutable.getStartTime(stepOutput));
result.setExecEndTime(AbstractExecutable.getEndTime(stepOutput));
if (task instanceof ShellExecutable) {
result.setExecCmd(((ShellExecutable) task).getCmd());
}
if (task instanceof MapReduceExecutable) {
result.setExecCmd(((MapReduceExecutable) task).getMapReduceParams());
result.setExecWaitTime(
AbstractExecutable.getExtraInfoAsLong(stepOutput, MapReduceExecutable.MAP_REDUCE_WAIT_TIME, 0L)
/ 1000);
}
if (task instanceof HadoopShellExecutable) {
result.setExecCmd(((HadoopShellExecutable) task).getJobParams());
}
return result;
}
开发者ID:apache,项目名称:kylin,代码行数:34,代码来源:JobInfoConverter.java
示例10: findExtraInfo
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
private String findExtraInfo(String key, String dft, boolean backward) {
ArrayList<AbstractExecutable> tasks = new ArrayList<AbstractExecutable>(getTasks());
if (backward) {
Collections.reverse(tasks);
}
for (AbstractExecutable child : tasks) {
Output output = getManager().getOutput(child.getId());
String value = output.getExtra().get(key);
if (value != null)
return value;
}
return dft;
}
开发者ID:apache,项目名称:kylin,代码行数:16,代码来源:CubingJob.java
示例11: testParseToJobInstance
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Test
public void testParseToJobInstance() {
TestJob task = new TestJob();
JobInstance instance = JobInfoConverter.parseToJobInstanceQuietly(task, Maps.<String, Output> newHashMap());
// no exception thrown is expected
Assert.assertTrue(instance == null);
}
开发者ID:apache,项目名称:kylin,代码行数:8,代码来源:JobInfoConverterTest.java
示例12: onUnlock
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Override
public void onUnlock(String path, String nodeData) {
String[] paths = path.split("/");
String segmentId = paths[paths.length - 1];
for (final String id : executableManager.getAllJobIds()) {
final Output output = executableManager.getOutput(id);
if (output.getState() == ExecutableState.RUNNING) {
AbstractExecutable executable = executableManager.getJob(id);
if (executable instanceof DefaultChainedExecutable
&& executable.getParams().get(SEGMENT_ID).equalsIgnoreCase(segmentId)
&& !nodeData.equalsIgnoreCase(serverName)) {
try {
logger.warn(nodeData + " has released the lock for: " + segmentId
+ " but the job still running. so " + serverName + " resume the job");
if (!jobLock.isLocked(getLockPath(segmentId))) {
executableManager.resumeRunningJobForce(executable.getId());
fetcherPool.schedule(fetcher, 0, TimeUnit.SECONDS);
break;
}
} catch (Exception e) {
logger.error("resume the job but fail in server: " + serverName, e);
}
}
}
}
}
开发者ID:apache,项目名称:kylin,代码行数:28,代码来源:DistributedScheduler.java
示例13: testExceptionOnLostJobOutput
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Test
public void testExceptionOnLostJobOutput() {
ExecutableManager manager = ExecutableManager.getInstance(jobService.getConfig());
AbstractExecutable executable = new TestJob();
manager.addJob(executable);
List<CubingJob> jobs = jobService.innerSearchCubingJobs("cube", "jobName",
Collections.<ExecutableState> emptySet(), 0, Long.MAX_VALUE, Collections.<String, Output> emptyMap(),
true, "project");
Assert.assertEquals(0, jobs.size());
}
开发者ID:apache,项目名称:kylin,代码行数:11,代码来源:JobServiceTest.java
示例14: innerSearchCubingJobs
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
public List<JobInstance> innerSearchCubingJobs(final String cubeName, final String jobName,
final String projectName, final List<JobStatusEnum> statusList, final JobTimeFilterEnum timeFilter) {
if (null == projectName) {
aclEvaluate.checkIsGlobalAdmin();
} else {
aclEvaluate.checkProjectOperationPermission(projectName);
}
// prepare time range
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
long timeStartInMillis = getTimeStartInMillis(calendar, timeFilter);
long timeEndInMillis = Long.MAX_VALUE;
Set<ExecutableState> states = convertStatusEnumToStates(statusList);
final Map<String, Output> allOutputs = getExecutableManager().getAllOutputs(timeStartInMillis, timeEndInMillis);
return Lists
.newArrayList(
FluentIterable
.from(innerSearchCubingJobs(cubeName, jobName, states, timeStartInMillis,
timeEndInMillis, allOutputs, false, projectName))
.transform(new Function<CubingJob, JobInstance>() {
@Override
public JobInstance apply(CubingJob cubingJob) {
return JobInfoConverter.parseToJobInstanceQuietly(cubingJob, allOutputs);
}
}).filter(new Predicate<JobInstance>() {
@Override
public boolean apply(@Nullable JobInstance input) {
return input != null;
}
}));
}
开发者ID:apache,项目名称:kylin,代码行数:33,代码来源:JobService.java
示例15: getOutput
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
public Output getOutput(String uuid) {
try {
final ExecutableOutputPO jobOutput = executableDao.getJobOutput(uuid);
Preconditions.checkArgument(jobOutput != null, "there is no related output for job id:" + uuid);
final DefaultOutput result = new DefaultOutput();
result.setExtra(jobOutput.getInfo());
result.setState(ExecutableState.valueOf(jobOutput.getStatus()));
result.setVerboseMsg(jobOutput.getContent());
result.setLastModified(jobOutput.getLastModified());
return result;
} catch (PersistentException e) {
logger.error("fail to get job output:" + uuid, e);
throw new RuntimeException(e);
}
}
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:16,代码来源:ExecutableManager.java
示例16: formatNotifications
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Override
protected Pair<String, String> formatNotifications(ExecutableState state) {
final Output output = jobService.getOutput(getId());
String logMsg;
switch (output.getState()) {
case ERROR:
logMsg = output.getVerboseMsg();
break;
case DISCARDED:
logMsg = "";
break;
case SUCCEED:
logMsg = "";
break;
default:
return null;
}
String content = ExecutableConstants.NOTIFY_EMAIL_TEMPLATE;
content = content.replaceAll("\\$\\{job_name\\}", getName());
content = content.replaceAll("\\$\\{result\\}", state.toString());
content = content.replaceAll("\\$\\{cube_name\\}", getCubeName());
content = content.replaceAll("\\$\\{start_time\\}", new Date(getStartTime()).toString());
content = content.replaceAll("\\$\\{duration\\}", getDuration() / 60000 + "mins");
content = content.replaceAll("\\$\\{mr_waiting\\}", getMapReduceWaitTime() / 60000 + "mins");
content = content.replaceAll("\\$\\{last_update_time\\}", new Date(getLastModified()).toString());
content = content.replaceAll("\\$\\{submitter\\}", getSubmitter());
content = content.replaceAll("\\$\\{error_log\\}", logMsg);
try {
InetAddress inetAddress = InetAddress.getLocalHost();
content = content.replaceAll("\\$\\{job_engine\\}", inetAddress.getCanonicalHostName());
} catch (UnknownHostException e) {
logger.warn(e.getLocalizedMessage(), e);
}
String title = "["+ state.toString() + "] - [Kylin Cube Build Job]-" + getCubeName();
return Pair.of(title, content);
}
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:39,代码来源:CubingJob.java
示例17: run
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Override
public void run() {
// logger.debug("Job Fetcher is running...");
Map<String, Executable> runningJobs = context.getRunningJobs();
if (runningJobs.size() >= jobEngineConfig.getMaxConcurrentJobLimit()) {
logger.warn("There are too many jobs running, Job Fetch will wait until next schedule time");
return;
}
int nRunning = 0, nReady = 0, nOthers = 0;
for (final String id : executableManager.getAllJobIds()) {
if (runningJobs.containsKey(id)) {
// logger.debug("Job id:" + id + " is already running");
nRunning++;
continue;
}
final Output output = executableManager.getOutput(id);
if ((output.getState() != ExecutableState.READY)) {
// logger.debug("Job id:" + id + " not runnable");
nOthers++;
continue;
}
nReady++;
AbstractExecutable executable = executableManager.getJob(id);
String jobDesc = executable.toString();
logger.info(jobDesc + " prepare to schedule");
try {
context.addRunningJob(executable);
jobPool.execute(new JobRunner(executable));
logger.info(jobDesc + " scheduled");
} catch (Exception ex) {
context.removeRunningJob(executable);
logger.warn(jobDesc + " fail to schedule", ex);
}
}
logger.info("Job Fetcher: " + nRunning + " running, " + runningJobs.size() + " actual running, " + nReady + " ready, " + nOthers + " others");
}
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:38,代码来源:DefaultScheduler.java
示例18: formatNotifications
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Override
protected Pair<String, String> formatNotifications(ExecutableContext context, ExecutableState state) {
CubeInstance cubeInstance = CubeManager.getInstance(context.getConfig())
.getCube(CubingExecutableUtil.getCubeName(this.getParams()));
final Output output = getManager().getOutput(getId());
String logMsg;
state = output.getState();
if (state != ExecutableState.ERROR
&& !cubeInstance.getDescriptor().getStatusNeedNotify().contains(state.toString())) {
logger.info("state:" + state + " no need to notify users");
return null;
}
switch (state) {
case ERROR:
logMsg = output.getVerboseMsg();
break;
case DISCARDED:
logMsg = "job has been discarded";
break;
case SUCCEED:
logMsg = "job has succeeded";
break;
default:
return null;
}
String content = ExecutableConstants.NOTIFY_EMAIL_TEMPLATE;
content = content.replaceAll("\\$\\{job_name\\}", getName());
content = content.replaceAll("\\$\\{result\\}", state.toString());
content = content.replaceAll("\\$\\{env_name\\}", getDeployEnvName());
content = content.replaceAll("\\$\\{project_name\\}", getProjectName());
content = content.replaceAll("\\$\\{cube_name\\}", CubingExecutableUtil.getCubeName(this.getParams()));
content = content.replaceAll("\\$\\{source_records_count\\}", String.valueOf(findSourceRecordCount()));
content = content.replaceAll("\\$\\{start_time\\}", new Date(getStartTime()).toString());
content = content.replaceAll("\\$\\{duration\\}", getDuration() / 60000 + "mins");
content = content.replaceAll("\\$\\{mr_waiting\\}", getMapReduceWaitTime() / 60000 + "mins");
content = content.replaceAll("\\$\\{last_update_time\\}", new Date(getLastModified()).toString());
content = content.replaceAll("\\$\\{submitter\\}", StringUtil.noBlank(getSubmitter(), "missing submitter"));
content = content.replaceAll("\\$\\{error_log\\}",
Matcher.quoteReplacement(StringUtil.noBlank(logMsg, "no error message")));
try {
InetAddress inetAddress = InetAddress.getLocalHost();
content = content.replaceAll("\\$\\{job_engine\\}", inetAddress.getCanonicalHostName());
} catch (UnknownHostException e) {
logger.warn(e.getLocalizedMessage(), e);
}
String title = "[" + state.toString() + "] - [" + getDeployEnvName() + "] - [" + getProjectName() + "] - "
+ CubingExecutableUtil.getCubeName(this.getParams());
return Pair.of(title, content);
}
开发者ID:apache,项目名称:kylin,代码行数:53,代码来源:CubingJob.java
示例19: run
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Override
synchronized public void run() {
try {
Map<String, Executable> runningJobs = context.getRunningJobs();
if (runningJobs.size() >= jobEngineConfig.getMaxConcurrentJobLimit()) {
logger.warn("There are too many jobs running, Job Fetch will wait until next schedule time");
return;
}
int nRunning = 0, nOtherRunning = 0, nReady = 0, nOthers = 0;
for (final String id : executableManager.getAllJobIds()) {
if (runningJobs.containsKey(id)) {
nRunning++;
continue;
}
final Output output = executableManager.getOutput(id);
if ((output.getState() != ExecutableState.READY)) {
if (output.getState() == ExecutableState.RUNNING) {
nOtherRunning++;
} else {
nOthers++;
}
continue;
}
nReady++;
final AbstractExecutable executable = executableManager.getJob(id);
try {
jobPool.execute(new JobRunner(executable));
} catch (Exception ex) {
logger.warn(executable.toString() + " fail to schedule in server: " + serverName, ex);
}
}
logger.info("Job Fetcher: " + nRunning + " should running, " + runningJobs.size() + " actual running, "
+ nOtherRunning + " running in other server, " + nReady + " ready, " + nOthers + " others");
} catch (Exception e) {
logger.warn("Job Fetcher caught a exception " + e);
}
}
开发者ID:apache,项目名称:kylin,代码行数:42,代码来源:DistributedScheduler.java
示例20: run
import org.apache.kylin.job.execution.Output; //导入依赖的package包/类
@Override
synchronized public void run() {
try (SetThreadName ignored = new SetThreadName("Scheduler %s FetcherRunner",
System.identityHashCode(DefaultScheduler.this))) {
// logger.debug("Job Fetcher is running...");
Map<String, Executable> runningJobs = context.getRunningJobs();
if (isJobPoolFull()) {
return;
}
int nRunning = 0, nReady = 0, nStopped = 0, nOthers = 0, nError = 0, nDiscarded = 0, nSUCCEED = 0;
for (final String id : executableManager.getAllJobIds()) {
if (isJobPoolFull()) {
return;
}
if (runningJobs.containsKey(id)) {
// logger.debug("Job id:" + id + " is already running");
nRunning++;
continue;
}
final AbstractExecutable executable = executableManager.getJob(id);
if (!executable.isReady()) {
final Output output = executableManager.getOutput(id);
// logger.debug("Job id:" + id + " not runnable");
if (output.getState() == ExecutableState.DISCARDED) {
nDiscarded++;
} else if (output.getState() == ExecutableState.ERROR) {
nError++;
} else if (output.getState() == ExecutableState.SUCCEED) {
nSUCCEED++;
} else if (output.getState() == ExecutableState.STOPPED) {
nStopped++;
} else {
if (fetchFailed) {
executableManager.forceKillJob(id);
nError++;
} else {
nOthers++;
}
}
continue;
}
nReady++;
String jobDesc = null;
try {
jobDesc = executable.toString();
logger.info(jobDesc + " prepare to schedule");
context.addRunningJob(executable);
jobPool.execute(new JobRunner(executable));
logger.info(jobDesc + " scheduled");
} catch (Exception ex) {
if (executable != null)
context.removeRunningJob(executable);
logger.warn(jobDesc + " fail to schedule", ex);
}
}
fetchFailed = false;
logger.info("Job Fetcher: " + nRunning + " should running, " + runningJobs.size() + " actual running, "
+ nStopped + " stopped, " + nReady + " ready, " + nSUCCEED + " already succeed, " + nError
+ " error, " + nDiscarded + " discarded, " + nOthers + " others");
} catch (Exception e) {
fetchFailed = true; // this could happen when resource store is unavailable
logger.warn("Job Fetcher caught a exception ", e);
}
}
开发者ID:apache,项目名称:kylin,代码行数:67,代码来源:DefaultScheduler.java
注:本文中的org.apache.kylin.job.execution.Output类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论