You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ki...@apache.org on 2014/02/24 22:33:07 UTC
git commit: Adding tool to update a container count for a given
service
Repository: helix
Updated Branches:
refs/heads/helix-provisioning 224c7eaaa -> 2339465dd
Adding tool to update a container count for a given service
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/2339465d
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/2339465d
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/2339465d
Branch: refs/heads/helix-provisioning
Commit: 2339465ddc934862b71425953a64cc476f1e63c5
Parents: 224c7ea
Author: Kishore Gopalakrishna <g....@gmail.com>
Authored: Mon Feb 24 13:30:39 2014 -0800
Committer: Kishore Gopalakrishna <g....@gmail.com>
Committed: Mon Feb 24 13:30:39 2014 -0800
----------------------------------------------------------------------
helix-provisioning/pom.xml | 8 +-
.../tools/UpdateProvisionerConfig.java | 87 ++++++++++++++++++++
.../java/tools/UpdateProvisionerConfig.java | 87 --------------------
.../yarn/example/HelloWordAppSpecFactory.java | 67 ++-------------
4 files changed, 96 insertions(+), 153 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/2339465d/helix-provisioning/pom.xml
----------------------------------------------------------------------
diff --git a/helix-provisioning/pom.xml b/helix-provisioning/pom.xml
index 3ba7d39..4a2e523 100644
--- a/helix-provisioning/pom.xml
+++ b/helix-provisioning/pom.xml
@@ -81,14 +81,14 @@ under the License.
<artifactId>appassembler-maven-plugin</artifactId>
<configuration>
<programs>
- <program>
- <mainClass>org.apache.helix.provisioning.yarn.Client</mainClass>
- <name>yarn-job-launcher</name>
- </program>
<program>
<mainClass>org.apache.helix.provisioning.yarn.AppLauncher</mainClass>
<name>app-launcher</name>
</program>
+ <program>
+ <mainClass>org.apache.helix.provisioning.tools.UpdateProvisionerConfig</mainClass>
+ <name>update-provisioner-config</name>
+ </program>
</programs>
</configuration>
</plugin>
http://git-wip-us.apache.org/repos/asf/helix/blob/2339465d/helix-provisioning/src/main/java/org/apache/helix/provisioning/tools/UpdateProvisionerConfig.java
----------------------------------------------------------------------
diff --git a/helix-provisioning/src/main/java/org/apache/helix/provisioning/tools/UpdateProvisionerConfig.java b/helix-provisioning/src/main/java/org/apache/helix/provisioning/tools/UpdateProvisionerConfig.java
new file mode 100644
index 0000000..f3cce42
--- /dev/null
+++ b/helix-provisioning/src/main/java/org/apache/helix/provisioning/tools/UpdateProvisionerConfig.java
@@ -0,0 +1,87 @@
+package org.apache.helix.provisioning.tools;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.GnuParser;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.OptionGroup;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.helix.HelixConnection;
+import org.apache.helix.api.Resource;
+import org.apache.helix.api.accessor.ResourceAccessor;
+import org.apache.helix.api.config.ResourceConfig;
+import org.apache.helix.api.id.ClusterId;
+import org.apache.helix.api.id.ResourceId;
+import org.apache.helix.manager.zk.ZkHelixConnection;
+import org.apache.helix.provisioning.yarn.YarnProvisionerConfig;
+import org.apache.log4j.Logger;
+/**
+ * Update the provisioner config
+ */
+public class UpdateProvisionerConfig {
+ private static Logger LOG = Logger.getLogger(UpdateProvisionerConfig.class);
+ private static String updateContainerCount = "updateContainerCount";
+ private HelixConnection _connection;
+
+ public UpdateProvisionerConfig(String zkAddress) {
+ _connection = new ZkHelixConnection(zkAddress);
+ _connection.connect();
+ }
+
+ public void setNumContainers(String appName, String serviceName, int numContainers) {
+ ResourceId resourceId = ResourceId.from(serviceName);
+
+ ResourceAccessor resourceAccessor = _connection.createResourceAccessor(ClusterId.from(appName));
+ Resource resource = resourceAccessor.readResource(resourceId);
+ LOG.info("Current provisioner config:"+ resource.getProvisionerConfig());
+
+ ResourceConfig.Delta delta = new ResourceConfig.Delta(resourceId);
+ YarnProvisionerConfig config = new YarnProvisionerConfig(resourceId);
+ config.setNumContainers(numContainers);
+ delta.setProvisionerConfig(config);
+ ResourceConfig updatedResourceConfig = resourceAccessor.updateResource(resourceId, delta);
+ LOG.info("Update provisioner config:"+ updatedResourceConfig.getProvisionerConfig());
+
+ }
+
+ @SuppressWarnings("static-access")
+ public static void main(String[] args) throws ParseException {
+ Option zkServerOption =
+ OptionBuilder.withLongOpt("zookeeperAddress").withDescription("Provide zookeeper address")
+ .create();
+ zkServerOption.setArgs(1);
+ zkServerOption.setRequired(true);
+ zkServerOption.setArgName("zookeeperAddress(Required)");
+
+ OptionGroup group = new OptionGroup();
+ group.setRequired(true);
+
+ // update container count per service
+ Option updateContainerCountOption =
+ OptionBuilder.withLongOpt(updateContainerCount)
+ .withDescription("appName serviceName numContainers").create();
+ updateContainerCountOption.setArgs(3);
+ updateContainerCountOption.setRequired(false);
+ updateContainerCountOption.setArgName("appName serviceName numContainers");
+
+ group.addOption(updateContainerCountOption);
+
+ Options options = new Options();
+ options.addOption(zkServerOption);
+ options.addOptionGroup(group);
+ CommandLine cliParser = new GnuParser().parse(options, args);
+
+ String zkAddress = cliParser.getOptionValue("zookeeperAddress");
+ UpdateProvisionerConfig updater = new UpdateProvisionerConfig(zkAddress);
+
+ if (cliParser.hasOption(updateContainerCount)) {
+ String appName = cliParser.getOptionValues(updateContainerCount)[0];
+ String serviceName = cliParser.getOptionValues(updateContainerCount)[1];
+ int numContainers = Integer.parseInt(
+ cliParser.getOptionValues(updateContainerCount)[2]);
+ updater.setNumContainers(appName, serviceName, numContainers);
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/helix/blob/2339465d/helix-provisioning/src/main/java/tools/UpdateProvisionerConfig.java
----------------------------------------------------------------------
diff --git a/helix-provisioning/src/main/java/tools/UpdateProvisionerConfig.java b/helix-provisioning/src/main/java/tools/UpdateProvisionerConfig.java
deleted file mode 100644
index 89ee1c5..0000000
--- a/helix-provisioning/src/main/java/tools/UpdateProvisionerConfig.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package tools;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.OptionGroup;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.helix.HelixConnection;
-import org.apache.helix.api.Resource;
-import org.apache.helix.api.accessor.ResourceAccessor;
-import org.apache.helix.api.config.ResourceConfig;
-import org.apache.helix.api.id.ClusterId;
-import org.apache.helix.api.id.ResourceId;
-import org.apache.helix.manager.zk.ZkHelixConnection;
-import org.apache.helix.provisioning.yarn.YarnProvisionerConfig;
-import org.apache.log4j.Logger;
-/**
- * Update the provisioner config
- */
-public class UpdateProvisionerConfig {
- private static Logger LOG = Logger.getLogger(UpdateProvisionerConfig.class);
- private static String updateContainerCount = "updateContainerCount";
- private HelixConnection _connection;
-
- public UpdateProvisionerConfig(String zkAddress) {
- _connection = new ZkHelixConnection(zkAddress);
- _connection.connect();
- }
-
- public void setNumContainers(String appName, String serviceName, int numContainers) {
- ResourceId resourceId = ResourceId.from(serviceName);
-
- ResourceAccessor resourceAccessor = _connection.createResourceAccessor(ClusterId.from(appName));
- Resource resource = resourceAccessor.readResource(resourceId);
- LOG.info("Current provisioner config:"+ resource.getProvisionerConfig());
-
- ResourceConfig.Delta delta = new ResourceConfig.Delta(resourceId);
- YarnProvisionerConfig config = new YarnProvisionerConfig(resourceId);
- config.setNumContainers(numContainers);
- delta.setProvisionerConfig(config);
- ResourceConfig updatedResourceConfig = resourceAccessor.updateResource(resourceId, delta);
- LOG.info("Update provisioner config:"+ updatedResourceConfig.getProvisionerConfig());
-
- }
-
- @SuppressWarnings("static-access")
- public static void main(String[] args) throws ParseException {
- Option zkServerOption =
- OptionBuilder.withLongOpt("zookeeperAddress").withDescription("Provide zookeeper address")
- .create();
- zkServerOption.setArgs(1);
- zkServerOption.setRequired(true);
- zkServerOption.setArgName("zookeeperAddress(Required)");
-
- OptionGroup group = new OptionGroup();
- group.setRequired(true);
-
- // update container count per service
- Option updateContainerCountOption =
- OptionBuilder.withLongOpt(updateContainerCount)
- .withDescription("set the number of containers per service").create();
- updateContainerCountOption.setArgs(3);
- updateContainerCountOption.setRequired(false);
- updateContainerCountOption.setArgName("appName serviceName numContainers");
-
- group.addOption(updateContainerCountOption);
-
- Options options = new Options();
- options.addOption(zkServerOption);
- options.addOptionGroup(group);
- CommandLine cliParser = new GnuParser().parse(options, args);
-
- String zkAddress = cliParser.getOptionValue("zookeeperAddress");
- UpdateProvisionerConfig updater = new UpdateProvisionerConfig(zkAddress);
-
- if (cliParser.hasOption(updateContainerCount)) {
- String appName = cliParser.getOptionValues(updateContainerCount)[0];
- String serviceName = cliParser.getOptionValues(updateContainerCount)[1];
- int numContainers = Integer.parseInt(
- cliParser.getOptionValues(updateContainerCount)[2]);
- updater.setNumContainers(appName, serviceName, numContainers);
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/helix/blob/2339465d/recipes/helloworld-provisioning-yarn/src/main/java/org/apache/helix/provisioning/yarn/example/HelloWordAppSpecFactory.java
----------------------------------------------------------------------
diff --git a/recipes/helloworld-provisioning-yarn/src/main/java/org/apache/helix/provisioning/yarn/example/HelloWordAppSpecFactory.java b/recipes/helloworld-provisioning-yarn/src/main/java/org/apache/helix/provisioning/yarn/example/HelloWordAppSpecFactory.java
index 03c1341..20591cf 100644
--- a/recipes/helloworld-provisioning-yarn/src/main/java/org/apache/helix/provisioning/yarn/example/HelloWordAppSpecFactory.java
+++ b/recipes/helloworld-provisioning-yarn/src/main/java/org/apache/helix/provisioning/yarn/example/HelloWordAppSpecFactory.java
@@ -16,33 +16,6 @@ import org.yaml.snakeyaml.Yaml;
public class HelloWordAppSpecFactory implements ApplicationSpecFactory {
- static HelloworldAppSpec data;
-
- static {
- HelloworldAppSpec data = new HelloworldAppSpec();
- AppConfig appConfig = new AppConfig();
- appConfig.setValue("k1", "v1");
- data.setAppConfig(appConfig);
- data.setAppName("testApp");
- data.setAppMasterPackageUri(
- "/Users/kgopalak/Documents/projects/incubator-helix/helix-provisioning/helix-provisioning-0.7.1-incubating-SNAPSHOT-pkg.tar");
- HashMap<String, Map<String, String>> serviceConfigMap = new HashMap<String, Map<String, String>>();
- serviceConfigMap.put("HelloWorld", new HashMap<String, String>());
- serviceConfigMap.get("HelloWorld").put("k1", "v1");
- data.setServiceConfigMap(serviceConfigMap);
- HashMap<String, String> serviceMainClassMap = new HashMap<String, String>();
- serviceMainClassMap.put("HelloWorld", HelloWorldService.class.getCanonicalName());
- data.setServiceMainClassMap(serviceMainClassMap);
- HashMap<String, String> servicePackageURIMap = new HashMap<String, String>();
- servicePackageURIMap
- .put(
- "HelloWorld",
- "/Users/kgopalak/Documents/projects/incubator-helix/helix-provisioning/helix-provisioning-0.7.1-incubating-SNAPSHOT-pkg.tar");
- data.setServicePackageURIMap(servicePackageURIMap);
- data.setServices(Arrays.asList(new String[] {
- "HelloWorld"
- })); }
-
@Override
public ApplicationSpec fromYaml(InputStream inputstream) {
return (ApplicationSpec) new Yaml().load(inputstream);
@@ -50,43 +23,13 @@ public class HelloWordAppSpecFactory implements ApplicationSpecFactory {
}
public static void main(String[] args) {
- DumperOptions options = new DumperOptions();
- options.setPrettyFlow(true);
- Yaml yaml = new Yaml(options);
- HelloworldAppSpec data = new HelloworldAppSpec();
- AppConfig appConfig = new AppConfig();
- appConfig.setValue("k1", "v1");
- data.setAppConfig(appConfig);
- data.setAppName("testApp");
- data.setAppMasterPackageUri(
- "/Users/kgopalak/Documents/projects/incubator-helix/helix-provisioning/helix-provisioning-0.7.1-incubating-SNAPSHOT-pkg.tar");
- HashMap<String, Map<String, String>> serviceConfigMap = new HashMap<String, Map<String, String>>();
- serviceConfigMap.put("HelloWorld", new HashMap<String, String>());
- serviceConfigMap.get("HelloWorld").put("k1", "v1");
- data.setServiceConfigMap(serviceConfigMap);
- HashMap<String, String> serviceMainClassMap = new HashMap<String, String>();
- serviceMainClassMap.put("HelloWorld", HelloWorldService.class.getCanonicalName());
- data.setServiceMainClassMap(serviceMainClassMap);
- HashMap<String, String> servicePackageURIMap = new HashMap<String, String>();
- servicePackageURIMap
- .put(
- "HelloWorld",
- "/Users/kgopalak/Documents/projects/incubator-helix/helix-provisioning/helix-provisioning-0.7.1-incubating-SNAPSHOT-pkg.tar");
- data.setServicePackageURIMap(servicePackageURIMap);
- data.setServices(Arrays.asList(new String[] {
- "HelloWorld"
- }));
- String dump = yaml.dump(data);
+ Yaml yaml = new Yaml();
+ InputStream resourceAsStream =
+ ClassLoader.getSystemClassLoader().getResourceAsStream("hello_world_app_spec.yaml");
+ HelloworldAppSpec spec = yaml.loadAs(resourceAsStream, HelloworldAppSpec.class);
+ String dump = yaml.dump(spec);
System.out.println(dump);
- InputStream resourceAsStream = ClassLoader.getSystemClassLoader().getResourceAsStream("hello_world_app_spec.yaml");
- HelloworldAppSpec load = yaml.loadAs(resourceAsStream,HelloworldAppSpec.class);
- String dumpnew = yaml.dump(load);
- System.out.println(dumpnew.equals(dump));
-
- System.out.println("==================================");
- System.out.println(dumpnew);
-
}
}