You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by gu...@apache.org on 2014/10/09 01:03:35 UTC
svn commit: r1630249 - in /hive/branches/branch-0.14:
cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java
ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java
Author: gunther
Date: Wed Oct 8 23:03:35 2014
New Revision: 1630249
URL: http://svn.apache.org/r1630249
Log:
HIVE-8393: Handle SIGINT on Tez (Gunther Hagleitner, reviewed by Vikram Dixit K)
Added:
hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java
Modified:
hive/branches/branch-0.14/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java
Modified: hive/branches/branch-0.14/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java?rev=1630249&r1=1630248&r2=1630249&view=diff
==============================================================================
--- hive/branches/branch-0.14/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java (original)
+++ hive/branches/branch-0.14/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java Wed Oct 8 23:03:35 2014
@@ -60,6 +60,7 @@ import org.apache.hadoop.hive.ql.Driver;
import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
import org.apache.hadoop.hive.ql.exec.Utilities;
import org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper;
+import org.apache.hadoop.hive.ql.exec.tez.TezJobExecHelper;
import org.apache.hadoop.hive.ql.parse.HiveParser;
import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
import org.apache.hadoop.hive.ql.processors.CommandProcessor;
@@ -384,6 +385,7 @@ public class CliDriver {
// First, kill any running MR jobs
HadoopJobExecHelper.killRunningJobs();
+ TezJobExecHelper.killRunningJobs();
HiveInterruptUtils.interrupt();
}
});
Added: hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java?rev=1630249&view=auto
==============================================================================
--- hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java (added)
+++ hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobExecHelper.java Wed Oct 8 23:03:35 2014
@@ -0,0 +1,49 @@
+/**
+ * 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.hadoop.hive.ql.exec.tez;
+
+import java.lang.reflect.Method;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * TezJobExecHelper is a utility to safely call Tez functionality from
+ * common code paths. It will check if tez is available/installed before
+ * invoking the code.
+ */
+public class TezJobExecHelper {
+
+ private static final Log LOG = LogFactory.getLog(TezJobExecHelper.class.getName());
+
+ public static void killRunningJobs() {
+ try {
+ Class.forName("org.apache.tez.dag.api.DAG");
+
+ // we have tez installed
+ ClassLoader classLoader = TezJobExecHelper.class.getClassLoader();
+ Method method = classLoader.loadClass("org.apache.hadoop.hive.ql.exec.tez.TezJobMonitor")
+ .getMethod("killRunningJobs");
+ method.invoke(null, null);
+ }
+ catch (Exception e) {
+ // It is not available do nothing
+ LOG.debug("Could not stop tez dags: ", e);
+ }
+ }
+}
Modified: hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java?rev=1630249&r1=1630248&r2=1630249&view=diff
==============================================================================
--- hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java (original)
+++ hive/branches/branch-0.14/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java Wed Oct 8 23:03:35 2014
@@ -68,12 +68,7 @@ public class TezJobMonitor {
@Override
public void run() {
for (DAGClient c: shutdownList) {
- try {
- System.err.println("Trying to shutdown DAG");
- c.tryKillDAG();
- } catch (Exception e) {
- // ignore
- }
+ TezJobMonitor.killRunningJobs();
}
try {
for (TezSessionState s: TezSessionState.getOpenSessions()) {
@@ -212,6 +207,21 @@ public class TezJobMonitor {
return rc;
}
+ /**
+ * killRunningJobs tries to terminate execution of all
+ * currently running tez queries. No guarantees, best effort only.
+ */
+ public static void killRunningJobs() {
+ for (DAGClient c: shutdownList) {
+ try {
+ System.err.println("Trying to shutdown DAG");
+ c.tryKillDAG();
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ }
+
private String printStatus(Map<String, Progress> progressMap, String lastReport, LogHelper console) {
StringBuffer reportBuffer = new StringBuffer();