All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.yarn.config.annotation.configurers.DefaultClientMasterRunnerConfigurer Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2013 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 org.springframework.yarn.config.annotation.configurers;

import java.util.Properties;

import org.springframework.data.hadoop.config.common.annotation.AnnotationConfigurer;
import org.springframework.data.hadoop.config.common.annotation.AnnotationConfigurerAdapter;
import org.springframework.yarn.YarnSystemConstants;
import org.springframework.yarn.am.CommandLineAppmasterRunner;
import org.springframework.yarn.am.YarnAppmaster;
import org.springframework.yarn.client.YarnClient;
import org.springframework.yarn.config.annotation.builders.YarnClientBuilder;
import org.springframework.yarn.config.annotation.builders.YarnClientConfigurer;
import org.springframework.yarn.launch.LaunchCommandsFactoryBean;

/**
 * {@link AnnotationConfigurer} for {@link YarnAppmaster} launch commands.
 *
 * @author Janne Valkealahti
 *
 */
public class DefaultClientMasterRunnerConfigurer
		extends AnnotationConfigurerAdapter
		implements ClientMasterRunnerConfigurer {

	/** Spring context configuration class */
	private Class contextClass;

	/** Spring context configuration file */
	private String contextFile;

	/** Bean name in launcher */
	private String beanName = YarnSystemConstants.DEFAULT_ID_APPMASTER;

	/** Stdout path */
	private String stdout = "/Appmaster.stdout";

	/** Stderr path */
	private String stderr = "/Appmaster.stderr";

	/** Command line arguments */
	private Properties arguments;

	@Override
	public void configure(YarnClientBuilder builder) throws Exception {
		LaunchCommandsFactoryBean fb = new LaunchCommandsFactoryBean();
		fb.setRunner(CommandLineAppmasterRunner.class);
		fb.setContextFile(determineContextConfig());
		fb.setBeanName(beanName);
		fb.setStdout(stdout);
		fb.setStderr(stderr);
		fb.setArguments(arguments);
		fb.afterPropertiesSet();
		builder.setCommands(fb.getObject());
	}

	@Override
	public ClientMasterRunnerConfigurer contextClass(Class clazz) {
		contextClass = clazz;
		return this;
	}

	@Override
	public ClientMasterRunnerConfigurer contextFile(String file) {
		contextFile = file;
		return this;
	}

	@Override
	public ClientMasterRunnerConfigurer beanName(String bean) {
		beanName = bean;
		return this;
	}

	@Override
	public ClientMasterRunnerConfigurer stdout(String path) {
		stdout = path;
		return this;
	}

	@Override
	public ClientMasterRunnerConfigurer stderr(String path) {
		stderr = path;
		return this;
	}

	@Override
	public ClientMasterRunnerConfigurer arguments(Properties arguments) {
		this.arguments = arguments;
		return this;
	}

	private String determineContextConfig() {
		if (contextFile != null) {
			return contextFile;
		} else if (contextClass != null) {
			return contextClass.getCanonicalName();
		} else {
			return YarnSystemConstants.DEFAULT_CONTEXT_FILE_APPMASTER;
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy