org.apache.tez.mapreduce.client.ClientServiceDelegate.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.tez.mapreduce.client.ClientServiceDelegate.java

Source

/**
 * 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 org.apache.tez.mapreduce.client;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
import org.apache.hadoop.mapreduce.v2.LogParams;
import org.apache.hadoop.mapreduce.Counters;
import org.apache.hadoop.mapreduce.JobID;
import org.apache.hadoop.mapreduce.JobStatus;
import org.apache.hadoop.mapreduce.MRJobConfig;
import org.apache.hadoop.mapreduce.TaskCompletionEvent;
import org.apache.hadoop.mapreduce.TaskAttemptID;
import org.apache.hadoop.mapreduce.TaskReport;
import org.apache.hadoop.mapreduce.TaskType;
import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.tez.dag.api.TezConfiguration;

import java.io.IOException;

public class ClientServiceDelegate {

    private final TezConfiguration conf;

    // FIXME
    // how to handle completed jobs that the RM does not know about?

    public ClientServiceDelegate(Configuration conf, ResourceMgrDelegate rm, JobID jobId) {
        this.conf = new TezConfiguration(conf); // Cloning for modifying.
        // For faster redirects from AM to HS.
        this.conf.setInt(CommonConfigurationKeysPublic.IPC_CLIENT_CONNECT_MAX_RETRIES_KEY, this.conf.getInt(
                MRJobConfig.MR_CLIENT_TO_AM_IPC_MAX_RETRIES, MRJobConfig.DEFAULT_MR_CLIENT_TO_AM_IPC_MAX_RETRIES));
    }

    public Counters getJobCounters(JobID jobId) throws IOException, InterruptedException {
        // FIXME needs counters support from DAG
        // with a translation layer on client side
        Counters empty = new Counters();
        return empty;
    }

    public TaskCompletionEvent[] getTaskCompletionEvents(JobID jobId, int fromEventId, int maxEvents)
            throws IOException, InterruptedException {
        // FIXME seems like there is support in client to query task failure
        // related information
        // However, api does not make sense for DAG
        return new TaskCompletionEvent[0];
    }

    public String[] getTaskDiagnostics(org.apache.hadoop.mapreduce.TaskAttemptID taId)
            throws IOException, InterruptedException {
        // FIXME need support to query task diagnostics?
        return new String[0];
    }

    public JobStatus getJobStatus(JobID oldJobID) throws IOException {
        // handled in YARNRunner
        throw new UnsupportedOperationException();
    }

    public TaskReport[] getTaskReports(JobID oldJobID, TaskType taskType) throws IOException {
        // TEZ-146: need to return real task reports
        return new TaskReport[0];
    }

    public boolean killTask(TaskAttemptID taskAttemptID, boolean fail) throws IOException {
        // FIXME need support to kill a task attempt?
        throw new UnsupportedOperationException();
    }

    public boolean killJob(JobID oldJobID) throws IOException {
        // FIXME need support to kill a dag?
        // Should this be just an RM killApplication?
        // For one dag per AM, RM kill should suffice
        throw new UnsupportedOperationException();
    }

    public LogParams getLogFilePath(JobID oldJobID, TaskAttemptID oldTaskAttemptID)
            throws YarnException, IOException {
        // FIXME logs for an attempt?
        throw new UnsupportedOperationException();
    }
}