Search in sources :

Example 6 with TaskRunner

use of org.apache.hadoop.hive.ql.exec.TaskRunner in project hive by apache.

the class DriverContext method pollFinished.

/**
 * Polls running tasks to see if a task has ended.
 *
 * @return The result object for any completed/failed task
 */
public synchronized TaskRunner pollFinished() throws InterruptedException {
    while (!shutdown) {
        Iterator<TaskRunner> it = running.iterator();
        while (it.hasNext()) {
            TaskRunner runner = it.next();
            if (runner != null && !runner.isRunning()) {
                it.remove();
                return runner;
            }
        }
        wait(SLEEP_TIME);
    }
    return null;
}
Also used : TaskRunner(org.apache.hadoop.hive.ql.exec.TaskRunner)

Example 7 with TaskRunner

use of org.apache.hadoop.hive.ql.exec.TaskRunner in project hive by apache.

the class DriverContext method shutdown.

/**
 * Cleans up remaining tasks in case of failure
 */
public synchronized void shutdown() {
    LOG.debug("Shutting down query " + ctx.getCmd());
    shutdown = true;
    for (TaskRunner runner : running) {
        if (runner.isRunning()) {
            Task<?> task = runner.getTask();
            LOG.warn("Shutting down task : " + task);
            try {
                task.shutdown();
            } catch (Exception e) {
                console.printError("Exception on shutting down task " + task.getId() + ": " + e);
            }
            Thread thread = runner.getRunner();
            if (thread != null) {
                thread.interrupt();
            }
        }
    }
    running.clear();
}
Also used : HiveException(org.apache.hadoop.hive.ql.metadata.HiveException) TaskRunner(org.apache.hadoop.hive.ql.exec.TaskRunner)

Example 8 with TaskRunner

use of org.apache.hadoop.hive.ql.exec.TaskRunner in project ambrose by twitter.

the class AmbroseHiveFailHook method run.

@Override
public void run(HookContext hookContext) throws Exception {
    HiveConf conf = hookContext.getConf();
    Properties allConfProps = conf.getAllProperties();
    String queryId = AmbroseHiveUtil.getHiveQueryId(conf);
    EmbeddedAmbroseHiveProgressReporter reporter = getEmbeddedProgressReporter();
    List<TaskRunner> completeTaskList = hookContext.getCompleteTaskList();
    Field _taskResultField = accessTaskResultField();
    for (TaskRunner taskRunner : completeTaskList) {
        TaskResult taskResult = (TaskResult) _taskResultField.get(taskRunner);
        // get non-running, failed jobs
        if (!taskResult.isRunning() && taskResult.getExitVal() != 0) {
            Task<? extends Serializable> task = taskRunner.getTask();
            String nodeId = AmbroseHiveUtil.getNodeIdFromNodeName(conf, task.getId());
            DAGNode<Job> dagNode = reporter.getDAGNodeFromNodeId(nodeId);
            HiveJob job = (HiveJob) dagNode.getJob();
            job.setConfiguration(allConfProps);
            MapReduceJobState mrJobState = getJobState(job);
            mrJobState.setSuccessful(false);
            reporter.addJob((Job) job);
            reporter.pushEvent(queryId, new Event.JobFailedEvent(dagNode));
        }
    }
    reporter.restoreEventStack();
    String sleepTime = System.getProperty(POST_SCRIPT_SLEEP_SECS_PARAM, "10");
    try {
        int sleepTimeSeconds = Integer.parseInt(sleepTime);
        LOG.info("Script failed but sleeping for " + sleepTimeSeconds + " seconds to keep the HiveStats REST server running. Hit ctrl-c to exit.");
        Thread.sleep(sleepTimeSeconds * 1000L);
        reporter.stopServer();
    } catch (NumberFormatException e) {
        LOG.warn(POST_SCRIPT_SLEEP_SECS_PARAM + " param is not a valid number, not sleeping: " + sleepTime);
    } catch (InterruptedException e) {
        LOG.warn("Sleep interrupted", e);
    }
}
Also used : MapReduceJobState(com.twitter.ambrose.model.hadoop.MapReduceJobState) Properties(java.util.Properties) TaskRunner(org.apache.hadoop.hive.ql.exec.TaskRunner) Field(java.lang.reflect.Field) TaskResult(org.apache.hadoop.hive.ql.exec.TaskResult) Event(com.twitter.ambrose.model.Event) HiveConf(org.apache.hadoop.hive.conf.HiveConf) Job(com.twitter.ambrose.model.Job) EmbeddedAmbroseHiveProgressReporter(com.twitter.ambrose.hive.reporter.EmbeddedAmbroseHiveProgressReporter)

Aggregations

TaskRunner (org.apache.hadoop.hive.ql.exec.TaskRunner)8 HiveConf (org.apache.hadoop.hive.conf.HiveConf)3 TaskResult (org.apache.hadoop.hive.ql.exec.TaskResult)3 HiveException (org.apache.hadoop.hive.ql.metadata.HiveException)3 SessionState (org.apache.hadoop.hive.ql.session.SessionState)3 ImmutableMap (com.google.common.collect.ImmutableMap)2 IOException (java.io.IOException)2 HashMap (java.util.HashMap)2 LinkedHashMap (java.util.LinkedHashMap)2 LinkedHashSet (java.util.LinkedHashSet)2 Map (java.util.Map)2 Metrics (org.apache.hadoop.hive.common.metrics.common.Metrics)2 QueryPlan (org.apache.hadoop.hive.ql.QueryPlan)2 HookContext (org.apache.hadoop.hive.ql.hooks.HookContext)2 WriteEntity (org.apache.hadoop.hive.ql.hooks.WriteEntity)2 LockException (org.apache.hadoop.hive.ql.lockmgr.LockException)2 PerfLogger (org.apache.hadoop.hive.ql.log.PerfLogger)2 AuthorizationException (org.apache.hadoop.hive.ql.metadata.AuthorizationException)2 HiveSemanticAnalyzerHookContext (org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext)2 JsonWriter (com.google.gson.stream.JsonWriter)1