/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.aliyun.odps.mapred;
import java.io.IOException;
import com.aliyun.odps.counter.Counters;
/**
* 作业运行时对象,用于跟踪运行中的 MapReduce作业实例.
*
* @see JobClient
*/
public interface RunningJob {
/**
* 获取作业运行实例ID,用于查看运行日志和作业管理.
*
* @return 作业运行实例ID
*/
public String getInstanceID();
/**
* 查询作业是否结束.
*
* <p>
* 结束状态:
* <ul>
* <li>{@link JobStatus#SUCCEEDED}
* <li>{@link JobStatus#FAILED}
* <li>{@link JobStatus#KILLED}
* </ul>
* 如果 {@link #getJobStatus()} 返回状态是上述三种,则返回true
* </p>
*
* @return 如果作业结束,返回true,否则false
*/
public boolean isComplete();
/**
* 查询作业实例是否运行成功.
*
* <p>
* 如果 {@link #getJobStatus()} 返回状态为{@link JobStatus#SUCCEEDED}
* ,返回true,否则返回false
* </p>
*
* @return 作业实例成功结束,返回true,否则返回false
*/
public boolean isSuccessful();
/**
* 等待直至作业实例结束
*
* @throws IOException
*/
public void waitForCompletion();
/**
* 查询作业实例运行状态.
*
* <p>
* 作业状态定义见:{@link JobStatus}
* </p>
*
* @return 作业状态
* @see JobStatus
*/
public JobStatus getJobStatus();
/**
* Kill 此作业运行实例
*/
public void killJob();
/**
* 获取作业运行实例的 Counters 信息,MapReduce 框架会汇总所有 Mapper/Reducer 任务设置的 Counters.
*
* @return 作业运行实例的 {@link Counters} 信息
*/
public Counters getCounters();
/**
* 获取任务的诊断信息.
*
* @return 诊断信息
*/
public String getDiagnostics();
/**
* 获取作业的Map进度,通过计算已完成map数/map总数得到,返回值范围在0.0到1.0之间,当所有Mapper完成后,则返回1.0.
*
* @return 作业的map进度
* @throws IOException
*/
public float mapProgress() throws IOException;
/**
* 获取作业的Reduce进度,通过计算已完成reduce数/reduce总数得到,返回值范围在0.0到1.0之间,当所有Reducer完成后,则返回1.0;
* 对于map-only作业,作业未完成时返回0.0,作业完成后返回1.0.
*
* @return 作业的reduce进度
* @throws IOException
*/
public float reduceProgress() throws IOException;
}