Java tutorial
/* * Copyright 2014 the original author or authors. * * Licensed 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 demo.utils; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.util.Assert; import oz.hadoop.yarn.api.core.CommandProcessLauncher; /** * @author Oleg Zhurakousky * */ public class MiniClusterUtils { private final static Log logger = LogFactory.getLog(MiniClusterUtils.class); private static CommandProcessLauncher clusterLauncher; private static ExecutorService executor; public static void startMiniCluster() { if (clusterLauncher != null) { throw new IllegalStateException("MiniClustrer is currently running"); } File file = new File(System.getProperty("user.dir")); Path path = Paths.get(file.getAbsolutePath()); Path parentPath = path.getParent(); String[] resources = file.list(); for (String resource : resources) { if (resource.equals("yaya-demo")) { parentPath = path; break; } } File miniClusterExe = new File( parentPath.toString() + "/yarn-test-cluster/build/install/yarn-test-cluster/bin/yarn-test-cluster"); System.out.println(miniClusterExe.getAbsolutePath()); if (!miniClusterExe.exists()) { logger.info("BUILDING MINI_CLUSTER"); CommandProcessLauncher buildLauncher = new CommandProcessLauncher( path.toString() + "/build-mini-cluster"); buildLauncher.launch(); } Assert.isTrue(miniClusterExe.exists(), "Failed to find mini-cluster executable"); clusterLauncher = new CommandProcessLauncher(miniClusterExe.getAbsolutePath()); executor = Executors.newSingleThreadExecutor(); executor.execute(new Runnable() { @Override public void run() { logger.info("STARTING MINI_CLUSTER"); clusterLauncher.launch(); } }); try { Thread.sleep(2000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } public static void stoptMiniCluster() { if (clusterLauncher == null) { return; } logger.info("STOPPING MINI_CLUSTER"); clusterLauncher.finish(); executor.shutdownNow(); } }