You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by th...@apache.org on 2014/04/02 23:18:24 UTC
svn commit: r1584197 - in
/hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton:
HiveDelegator.java tool/JobSubmissionConstants.java tool/LaunchMapper.java
Author: thejas
Date: Wed Apr 2 21:18:24 2014
New Revision: 1584197
URL: http://svn.apache.org/r1584197
Log:
HIVE-6780 : Set tez credential file property along with MR conf property for Tez jobs (Eugene Koifman via Thejas Nair)
Modified:
hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/HiveDelegator.java
hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java
hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java
Modified: hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/HiveDelegator.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/HiveDelegator.java?rev=1584197&r1=1584196&r2=1584197&view=diff
==============================================================================
--- hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/HiveDelegator.java (original)
+++ hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/HiveDelegator.java Wed Apr 2 21:18:24 2014
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.exec.ExecuteException;
+import org.apache.hive.hcatalog.templeton.tool.JobSubmissionConstants;
import org.apache.hive.hcatalog.templeton.tool.TempletonControllerJob;
import org.apache.hive.hcatalog.templeton.tool.TempletonUtils;
@@ -76,6 +77,11 @@ public class HiveDelegator extends Launc
args.add("--hiveconf");
args.add(TempletonControllerJob.TOKEN_FILE_ARG_PLACEHOLDER);
+ //this is needed specifcally for Hive on Tez (in addition to
+ //JobSubmissionConstants.TOKEN_FILE_ARG_PLACEHOLDER)
+ args.add("--hiveconf");
+ args.add(JobSubmissionConstants.TOKEN_FILE_ARG_PLACEHOLDER_TEZ);
+
for (String prop : appConf.getStrings(AppConfig.HIVE_PROPS_NAME)) {
args.add("--hiveconf");
args.add(TempletonUtils.quoteForWindows(prop));
Modified: hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java?rev=1584197&r1=1584196&r2=1584197&view=diff
==============================================================================
--- hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java (original)
+++ hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/JobSubmissionConstants.java Wed Apr 2 21:18:24 2014
@@ -41,6 +41,8 @@ public interface JobSubmissionConstants
*/
public static final String TOKEN_FILE_ARG_PLACEHOLDER =
"__MR_JOB_CREDENTIALS_OPTION=WEBHCAT_TOKEN_FILE_LOCATION__";
+ public static final String TOKEN_FILE_ARG_PLACEHOLDER_TEZ =
+ "__TEZ_CREDENTIALS_OPTION=WEBHCAT_TOKEN_FILE_LOCATION_TEZ__";
/**
* constants needed for Pig job submission
*/
Modified: hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java?rev=1584197&r1=1584196&r2=1584197&view=diff
==============================================================================
--- hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java (original)
+++ hive/branches/branch-0.13/hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/LaunchMapper.java Wed Apr 2 21:18:24 2014
@@ -100,41 +100,47 @@ public class LaunchMapper extends Mapper
Map<String, String> env = TempletonUtils.hadoopUserEnv(user, overrideClasspath);
handlePigEnvVars(conf, env);
List<String> jarArgsList = new LinkedList<String>(Arrays.asList(jarArgs));
- String tokenFile = System.getenv("HADOOP_TOKEN_FILE_LOCATION");
-
+ handleTokenFile(jarArgsList, JobSubmissionConstants.TOKEN_FILE_ARG_PLACEHOLDER, "mapreduce.job.credentials.binary");
+ handleTokenFile(jarArgsList, JobSubmissionConstants.TOKEN_FILE_ARG_PLACEHOLDER_TEZ, "tez.credentials.path");
+ boolean overrideLog4jProps = conf.get(OVERRIDE_CONTAINER_LOG4J_PROPS) == null ?
+ false : Boolean.valueOf(conf.get(OVERRIDE_CONTAINER_LOG4J_PROPS));
+ return TrivialExecService.getInstance().run(jarArgsList, removeEnv, env, overrideLog4jProps);
+ }
+ /**
+ * Replace placeholder with actual "prop=file". This is done multiple times (possibly) since
+ * Tez and MR use different property names
+ */
+ private static void handleTokenFile(List<String> jarArgsList, String tokenPlaceHolder, String tokenProperty) throws IOException {
+ String tokenFile = System.getenv("HADOOP_TOKEN_FILE_LOCATION");
if (tokenFile != null) {
//Token is available, so replace the placeholder
tokenFile = tokenFile.replaceAll("\"", "");
- String tokenArg = "mapreduce.job.credentials.binary=" + tokenFile;
+ String tokenArg = tokenProperty + "=" + tokenFile;
if (Shell.WINDOWS) {
try {
tokenArg = TempletonUtils.quoteForWindows(tokenArg);
} catch (BadParam e) {
- String msg = "cannot pass " + tokenFile + " to mapreduce.job.credentials.binary";
+ String msg = "cannot pass " + tokenFile + " to " + tokenProperty;
LOG.error(msg, e);
throw new IOException(msg, e);
}
}
for(int i=0; i<jarArgsList.size(); i++){
String newArg =
- jarArgsList.get(i).replace(TOKEN_FILE_ARG_PLACEHOLDER, tokenArg);
+ jarArgsList.get(i).replace(tokenPlaceHolder, tokenArg);
jarArgsList.set(i, newArg);
}
-
}else{
//No token, so remove the placeholder arg
Iterator<String> it = jarArgsList.iterator();
while(it.hasNext()){
String arg = it.next();
- if(arg.contains(TOKEN_FILE_ARG_PLACEHOLDER)){
+ if(arg.contains(tokenPlaceHolder)){
it.remove();
}
}
}
- boolean overrideLog4jProps = conf.get(OVERRIDE_CONTAINER_LOG4J_PROPS) == null ?
- false : Boolean.valueOf(conf.get(OVERRIDE_CONTAINER_LOG4J_PROPS));
- return TrivialExecService.getInstance().run(jarArgsList, removeEnv, env, overrideLog4jProps);
}
private void copyLocal(String var, Configuration conf) throws IOException {