⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskstatus.java

📁 hadoop:Nutch集群平台
💻 JAVA
字号:
/** * Copyright 2005 The Apache Software Foundation * * Licensed 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 org.apache.hadoop.mapred;import org.apache.hadoop.io.*;import java.io.*;// enumeration for reporting current phase of a task. enum Phase{STARTING, MAP, SHUFFLE, SORT, REDUCE}/************************************************** * Describes the current status of a task.  This is * not intended to be a comprehensive piece of data. * * @author Mike Cafarella **************************************************/class TaskStatus implements Writable {    public static enum State {RUNNING, SUCCEEDED, FAILED, UNASSIGNED, KILLED};        private String taskid;    private boolean isMap;    private float progress;    private State runState;    private String diagnosticInfo;    private String stateString;    private String taskTracker;        private long startTime ;     private long finishTime ;         // only for reduce tasks    private long shuffleFinishTime ;     private long sortFinishTime ;         private Phase phase = Phase.STARTING;     public TaskStatus() {}    public TaskStatus(String taskid, boolean isMap, float progress,                      State runState, String diagnosticInfo,                      String stateString, String taskTracker,                      Phase phase) {        this.taskid = taskid;        this.isMap = isMap;        this.progress = progress;        this.runState = runState;        this.diagnosticInfo = diagnosticInfo;        this.stateString = stateString;        this.taskTracker = taskTracker;        this.phase = phase ;    }        public String getTaskId() { return taskid; }    public boolean getIsMap() { return isMap; }    public float getProgress() { return progress; }    public void setProgress(float progress) { this.progress = progress; }     public State getRunState() { return runState; }    public String getTaskTracker() {return taskTracker;}    public void setTaskTracker(String tracker) { this.taskTracker = tracker;}    public void setRunState(State runState) { this.runState = runState; }    public String getDiagnosticInfo() { return diagnosticInfo; }    public void setDiagnosticInfo(String info) { this.diagnosticInfo = info; }    public String getStateString() { return stateString; }    public void setStateString(String stateString) { this.stateString = stateString; }    /**     * Get task finish time. if shuffleFinishTime and sortFinishTime      * are not set before, these are set to finishTime. It takes care of      * the case when shuffle, sort and finish are completed with in the      * heartbeat interval and are not reported separately. if task state is      * TaskStatus.FAILED then finish time represents when the task failed.     * @return finish time of the task.      */    public long getFinishTime() {      return finishTime;    }    /**     * Sets finishTime.      * @param finishTime finish time of task.     */    void setFinishTime(long finishTime) {      if( shuffleFinishTime == 0 ) {        this.shuffleFinishTime = finishTime ;       }      if( sortFinishTime == 0 ){        this.sortFinishTime = finishTime ;      }      this.finishTime = finishTime;    }    /**     * Get shuffle finish time for the task. If shuffle finish time was      * not set due to shuffle/sort/finish phases ending within same     * heartbeat interval, it is set to finish time of next phase i.e. sort      * or task finish when these are set.       * @return 0 if shuffleFinishTime, sortFinishTime and finish time are not set. else      * it returns approximate shuffle finish time.       */    public long getShuffleFinishTime() {      return shuffleFinishTime;    }    /**     * Set shuffle finish time.      * @param shuffleFinishTime      */    void setShuffleFinishTime(long shuffleFinishTime) {      this.shuffleFinishTime = shuffleFinishTime;    }    /**     * Get sort finish time for the task,. If sort finish time was not set      * due to sort and reduce phase finishing in same heartebat interval, it is      * set to finish time, when finish time is set.      * @return 0 if sort finish time and finish time are not set, else returns sort     * finish time if that is set, else it returns finish time.      */    public long getSortFinishTime() {      return sortFinishTime;    }    /**     * Sets sortFinishTime, if shuffleFinishTime is not set before      * then its set to sortFinishTime.       * @param sortFinishTime     */    void setSortFinishTime(long sortFinishTime) {      this.sortFinishTime = sortFinishTime;      if( 0 == this.shuffleFinishTime){        this.shuffleFinishTime = sortFinishTime ;      }    }    /**     * Get start time of the task.      * @return 0 is start time is not set, else returns start time.      */    public long getStartTime() {      return startTime;    }    /**     * Set startTime of the task.     * @param startTime start time     */    void setStartTime(long startTime) {      this.startTime = startTime;    }    /**     * Get current phase of this task. Phase.Map in case of map tasks,      * for reduce one of Phase.SHUFFLE, Phase.SORT or Phase.REDUCE.      * @return .      */    public Phase getPhase(){      return this.phase;     }    /**     * Set current phase of this task.       * @param p     */    void setPhase(Phase p){      this.phase = p ;     }    //////////////////////////////////////////////    // Writable    //////////////////////////////////////////////    public void write(DataOutput out) throws IOException {        UTF8.writeString(out, taskid);        out.writeBoolean(isMap);        out.writeFloat(progress);        WritableUtils.writeEnum(out, runState);        UTF8.writeString(out, diagnosticInfo);        UTF8.writeString(out, stateString);        WritableUtils.writeEnum(out, phase);        out.writeLong(startTime);        out.writeLong(finishTime);        if(! isMap){          out.writeLong(shuffleFinishTime);          out.writeLong(sortFinishTime);        }    }    public void readFields(DataInput in) throws IOException {        this.taskid = UTF8.readString(in);        this.isMap = in.readBoolean();        this.progress = in.readFloat();        this.runState = WritableUtils.readEnum(in, State.class);        this.diagnosticInfo = UTF8.readString(in);        this.stateString = UTF8.readString(in);        this.phase = WritableUtils.readEnum(in, Phase.class);         this.startTime = in.readLong();         this.finishTime = in.readLong() ;         if( ! this.isMap ){          shuffleFinishTime = in.readLong();           sortFinishTime = in.readLong();         }     }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -