diff --git a/ql/src/java/org/apache/hadoop/hive/ql/QueryState.java b/ql/src/java/org/apache/hadoop/hive/ql/QueryState.java index 028dd6017d..d312691dd5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/QueryState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/QueryState.java @@ -23,6 +23,7 @@ import org.apache.hadoop.hive.ql.lockmgr.HiveTxnManager; import org.apache.hadoop.hive.ql.plan.HiveOperation; import org.apache.hadoop.hive.ql.session.LineageState; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.mapreduce.MRJobConfig; /** @@ -65,6 +66,7 @@ */ private QueryState(HiveConf conf) { this.queryConf = conf; + ShimLoader.getHadoopShims().setHadoopQueryContext(getQueryId()); } // Get the query id stored in query specific config. diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 71e130b608..c16c66528f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -423,6 +423,8 @@ public SessionState(HiveConf conf, String userName) { resourceDownloader = new ResourceDownloader(conf, HiveConf.getVar(conf, ConfVars.DOWNLOADED_RESOURCES_DIR)); killQuery = new NullKillQuery(); + + ShimLoader.getHadoopShims().setHadoopSessionContext(getSessionId()); } public Map getHiveVariables() { diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java index 0e6bd4deb5..fcc80b29bf 100644 --- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java +++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java @@ -66,6 +66,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.shims.Utils; import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.security.UserGroupInformation; @@ -311,6 +312,8 @@ public Object run() throws HiveSQLException { SessionState.setCurrentSessionState(parentSessionState); PerfLogger.setPerfLogger(SessionState.getPerfLogger()); LogUtils.registerLoggingContext(queryState.getConf()); + ShimLoader.getHadoopShims().setHadoopQueryContext(queryState.getQueryId()); + try { if (asyncPrepare) { prepare(queryState); diff --git a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java index 98c3eef6fa..826dd6fe6c 100644 --- a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java +++ b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java @@ -71,6 +71,7 @@ import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.protocol.HdfsLocatedFileStatus; import org.apache.hadoop.io.LongWritable; +import org.apache.hadoop.ipc.CallerContext; import org.apache.hadoop.mapred.ClusterStatus; import org.apache.hadoop.mapred.InputSplit; import org.apache.hadoop.mapred.JobConf; @@ -481,6 +482,21 @@ public MiniMrShim getMiniSparkCluster(Configuration conf, int numberOfTaskTracke return new MiniSparkShim(conf, numberOfTaskTrackers, nameNode, numDir); } + @Override + public void setHadoopCallerContext(String callerContext) { + CallerContext.setCurrent(new CallerContext.Builder(callerContext).build()); + } + + @Override + public void setHadoopQueryContext(String queryId) { + setHadoopCallerContext("hive_queryId_" + queryId); + } + + @Override + public void setHadoopSessionContext(String sessionId) { + setHadoopCallerContext("hive_sessionId_:" + sessionId); + } + /** * Shim for MiniSparkOnYARNCluster */ @@ -1048,7 +1064,6 @@ public String getShortName() throws IOException { } } - public static class StoragePolicyShim implements HadoopShims.StoragePolicyShim { private final DistributedFileSystem dfs; diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java index 84e6430fcf..c569b242ae 100644 --- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -96,6 +96,22 @@ public MiniMrShim getMiniTezCluster(Configuration conf, int numberOfTaskTrackers public MiniMrShim getMiniSparkCluster(Configuration conf, int numberOfTaskTrackers, String nameNode, int numDir) throws IOException; + + /** + * Set up the caller context for HDFS and Yarn. + */ + void setHadoopCallerContext(String callerContext); + + /** + * Set up context specific caller context with query prefix. + */ + void setHadoopQueryContext(String queryId); + + /** + * Set up context specific caller context with session prefix. + */ + void setHadoopSessionContext(String sessionId); + /** * Shim for MiniMrCluster */