List of usage examples for org.apache.hadoop.yarn.conf YarnConfiguration DEFAULT_CONTAINER_TEMP_DIR
String DEFAULT_CONTAINER_TEMP_DIR
To view the source code for org.apache.hadoop.yarn.conf YarnConfiguration DEFAULT_CONTAINER_TEMP_DIR.
Click Source Link
From source file:com.datatorrent.stram.LaunchContainerRunnable.java
License:Apache License
/** * Build the command to launch the child VM in the container * * @param jvmID/* w w w .j a v a 2 s .c o m*/ * @return */ public List<CharSequence> getChildVMCommand(String jvmID) { List<CharSequence> vargs = new ArrayList<CharSequence>(8); if (!StringUtils.isBlank(System.getenv(Environment.JAVA_HOME.key()))) { // node manager provides JAVA_HOME vargs.add(Environment.JAVA_HOME.$() + "/bin/java"); } else { vargs.add("java"); } String jvmOpts = dag.getAttributes().get(LogicalPlan.CONTAINER_JVM_OPTIONS); if (jvmOpts == null) { if (dag.isDebug()) { vargs.add(JAVA_REMOTE_DEBUG_OPTS); } } else { Map<String, String> params = new HashMap<String, String>(); params.put("applicationId", Integer.toString(container.getId().getApplicationAttemptId().getApplicationId().getId())); params.put("containerId", Integer.toString(container.getId().getId())); StrSubstitutor sub = new StrSubstitutor(params, "%(", ")"); vargs.add(sub.replace(jvmOpts)); if (dag.isDebug() && !jvmOpts.contains("-agentlib:jdwp=")) { vargs.add(JAVA_REMOTE_DEBUG_OPTS); } } List<DAG.OperatorMeta> operatorMetaList = Lists.newArrayList(); int bufferServerMemory = 0; for (PTOperator operator : sca.getContainer().getOperators()) { bufferServerMemory += operator.getBufferServerMemory(); operatorMetaList.add(operator.getOperatorMeta()); } Context.ContainerOptConfigurator containerOptConfigurator = dag.getAttributes() .get(LogicalPlan.CONTAINER_OPTS_CONFIGURATOR); jvmOpts = containerOptConfigurator.getJVMOptions(operatorMetaList); jvmOpts = parseJvmOpts(jvmOpts, ((long) bufferServerMemory) * MB_TO_B); LOG.info("Jvm opts {} for container {}", jvmOpts, container.getId()); vargs.add(jvmOpts); Path childTmpDir = new Path(Environment.PWD.$(), YarnConfiguration.DEFAULT_CONTAINER_TEMP_DIR); vargs.add(String.format("-D%s=%s", StreamingContainer.PROP_APP_PATH, dag.assertAppPath())); vargs.add("-Djava.io.tmpdir=" + childTmpDir); vargs.add(String.format("-D%scid=%s", StreamingApplication.DT_PREFIX, jvmID)); vargs.add("-Dhadoop.root.logger=" + (dag.isDebug() ? "DEBUG" : "INFO") + ",RFA"); vargs.add("-Dhadoop.log.dir=" + ApplicationConstants.LOG_DIR_EXPANSION_VAR); String loggersLevel = System.getProperty(DTLoggerFactory.DT_LOGGERS_LEVEL); if (loggersLevel != null) { vargs.add(String.format("-D%s=%s", DTLoggerFactory.DT_LOGGERS_LEVEL, loggersLevel)); } // Add main class and its arguments vargs.add(StreamingContainer.class.getName()); // main of Child vargs.add("1>" + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stdout"); vargs.add("2>" + ApplicationConstants.LOG_DIR_EXPANSION_VAR + "/stderr"); // Final commmand StringBuilder mergedCommand = new StringBuilder(256); for (CharSequence str : vargs) { mergedCommand.append(str).append(" "); } List<CharSequence> vargsFinal = new ArrayList<CharSequence>(1); vargsFinal.add(mergedCommand.toString()); return vargsFinal; }
From source file:org.apache.tez.dag.utils.TezEngineChildJVM.java
License:Apache License
public static List<String> getVMCommand(InetSocketAddress taskAttemptListenerAddr, TezConfiguration conf, String containerIdentifier, String tokenIdentifier, int applicationAttemptNumber, boolean shouldProfile, String javaOpts) {/*from www . j a v a 2 s . c o m*/ Vector<String> vargs = new Vector<String>(9); vargs.add(Environment.JAVA_HOME.$() + "/bin/java"); //set custom javaOpts vargs.add(javaOpts); //[Debug Task] Current simplest way to attach debugger to Tez Child Task // Uncomment the following, then launch a regular job // Works best on one-box configured with a single container (hence one task at a time). // LOG.error(" !!!!!!!!! Launching Child-Task in debug/suspend mode. Attach to port 8003 !!!!!!!!"); // vargs.add("-Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8003,server=y,suspend=y"); Path childTmpDir = new Path(Environment.PWD.$(), YarnConfiguration.DEFAULT_CONTAINER_TEMP_DIR); vargs.add("-Djava.io.tmpdir=" + childTmpDir); // FIXME Setup the log4j properties // Decision to profile needs to be made in the scheduler. if (shouldProfile) { // FIXME add support for profiling } // Add main class and its arguments vargs.add(YarnTezDagChild.class.getName()); // main of Child // pass TaskAttemptListener's address vargs.add(taskAttemptListenerAddr.getAddress().getHostAddress()); vargs.add(Integer.toString(taskAttemptListenerAddr.getPort())); vargs.add(containerIdentifier); vargs.add(tokenIdentifier); vargs.add(Integer.toString(applicationAttemptNumber)); vargs.add("1>" + getTaskLogFile(LogName.STDOUT)); vargs.add("2>" + getTaskLogFile(LogName.STDERR)); // Final commmand StringBuilder mergedCommand = new StringBuilder(); for (CharSequence str : vargs) { mergedCommand.append(str).append(" "); } Vector<String> vargsFinal = new Vector<String>(1); vargsFinal.add(mergedCommand.toString()); return vargsFinal; }
From source file:org.apache.tez.dag.utils.TezRuntimeChildJVM.java
License:Apache License
public static List<String> getVMCommand(InetSocketAddress taskAttemptListenerAddr, String containerIdentifier, String tokenIdentifier, int applicationAttemptNumber, String javaOpts) { Vector<String> vargs = new Vector<String>(9); vargs.add(Environment.JAVA_HOME.$() + "/bin/java"); //set custom javaOpts vargs.add(javaOpts);/*from www .jav a 2 s .c o m*/ Path childTmpDir = new Path(Environment.PWD.$(), YarnConfiguration.DEFAULT_CONTAINER_TEMP_DIR); vargs.add("-Djava.io.tmpdir=" + childTmpDir); // Add main class and its arguments vargs.add(TezChild.class.getName()); // main of Child // pass TaskAttemptListener's address vargs.add(taskAttemptListenerAddr.getAddress().getHostAddress()); vargs.add(Integer.toString(taskAttemptListenerAddr.getPort())); vargs.add(containerIdentifier); vargs.add(tokenIdentifier); vargs.add(Integer.toString(applicationAttemptNumber)); vargs.add("1>" + getTaskLogFile(LogName.STDOUT)); vargs.add("2>" + getTaskLogFile(LogName.STDERR)); // TODO Is this StringBuilder really required ? YARN already accepts a list of commands. // Final commmand StringBuilder mergedCommand = new StringBuilder(); for (CharSequence str : vargs) { mergedCommand.append(str).append(" "); } Vector<String> vargsFinal = new Vector<String>(1); vargsFinal.add(mergedCommand.toString()); return vargsFinal; }
From source file:oz.hadoop.yarn.test.cluster.InJvmContainerExecutor.java
License:Apache License
/** * Most of this code is copied from the super class's launchContainer method (unfortunately), since directory * and other preparation logic is tightly coupled with the actual container launch. * Would be nice if it was broken apart where launch method would be invoked when * everything is prepared/*from ww w. j av a 2s . co m*/ */ private void prepareContainerDirectories(Container container, Path nmPrivateContainerScriptPath, Path nmPrivateTokensPath, String userName, String appId, Path containerWorkDir, List<String> localDirs, List<String> logDirs) { FsPermission dirPerm = new FsPermission(APPDIR_PERM); ContainerId containerId = container.getContainerId(); String containerIdStr = ConverterUtils.toString(containerId); String appIdStr = ConverterUtils.toString(containerId.getApplicationAttemptId().getApplicationId()); try { for (String sLocalDir : localDirs) { Path usersdir = new Path(sLocalDir, ContainerLocalizer.USERCACHE); Path userdir = new Path(usersdir, userName); Path appCacheDir = new Path(userdir, ContainerLocalizer.APPCACHE); Path appDir = new Path(appCacheDir, appIdStr); Path containerDir = new Path(appDir, containerIdStr); createDir(containerDir, dirPerm, true); } // Create the container log-dirs on all disks this.createLogDirs(appIdStr, containerIdStr, logDirs); Path tmpDir = new Path(containerWorkDir, YarnConfiguration.DEFAULT_CONTAINER_TEMP_DIR); createDir(tmpDir, dirPerm, false); // copy launch script to work dir Path launchDst = new Path(containerWorkDir, ContainerLaunch.CONTAINER_SCRIPT); fc.util().copy(nmPrivateContainerScriptPath, launchDst); // copy container tokens to work dir Path tokenDst = new Path(containerWorkDir, ContainerLaunch.FINAL_CONTAINER_TOKENS_FILE); fc.util().copy(nmPrivateTokensPath, tokenDst); } catch (Exception e) { throw new IllegalStateException("Failed to prepare container directories for container " + container, e); } }