SLIDER-700 added proxy component with funtest
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/d91049a6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/d91049a6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/d91049a6 Branch: refs/heads/feature/SLIDER-151_REST_API Commit: d91049a6527bf15144ce935f5e3ddca588d97e3b Parents: 364eca0 Author: Billie Rinaldi <[email protected]> Authored: Thu Dec 4 11:56:17 2014 -0800 Committer: Billie Rinaldi <[email protected]> Committed: Fri Dec 5 12:32:15 2014 -0800 ---------------------------------------------------------------------- app-packages/accumulo/appConfig-default.json | 2 + app-packages/accumulo/configuration/proxy.xml | 64 +++++++++ app-packages/accumulo/metainfo.xml | 24 ++++ .../package/scripts/accumulo_configuration.py | 8 ++ .../accumulo/package/scripts/accumulo_proxy.py | 24 ++++ .../package/scripts/accumulo_service.py | 5 +- app-packages/accumulo/package/scripts/params.py | 1 + app-packages/accumulo/pom.xml | 12 ++ app-packages/accumulo/resources-default.json | 5 + .../funtest/accumulo/AccumuloBasicIT.groovy | 46 ++++--- .../funtest/accumulo/AccumuloProxyIT.groovy | 130 +++++++++++++++++++ .../accumulo/src/test/resources/resources.json | 7 +- .../test/resources/resources_with_client.json | 41 ------ .../test/resources/resources_with_proxy.json | 43 ++++++ 14 files changed, 351 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/appConfig-default.json ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/appConfig-default.json b/app-packages/accumulo/appConfig-default.json index 9d11bae..968abcf 100644 --- a/app-packages/accumulo/appConfig-default.json +++ b/app-packages/accumulo/appConfig-default.json @@ -22,6 +22,8 @@ "site.client.instance.name": "${USER}-${CLUSTER_NAME}", + "site.proxy.port": "${ACCUMULO_PROXY.ALLOCATED_PORT}{PER_CONTAINER}", + "site.global.accumulo_root_password": "NOT_USED", "site.global.ssl_cert_dir": "ssl", "site.global.monitor_protocol": "http", http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/configuration/proxy.xml ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/configuration/proxy.xml b/app-packages/accumulo/configuration/proxy.xml new file mode 100644 index 0000000..4db2505 --- /dev/null +++ b/app-packages/accumulo/configuration/proxy.xml @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> +<!-- +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +--> + +<configuration> + <property> + <name>instance</name> + <value>${@//site/client/instance.name}</value> + <description>Accumulo Instance Name.</description> + </property> + <property> + <name>zookeepers</name> + <value>${@//site/accumulo-site/instance.zookeeper.host}</value> + <description>Zookeeper hosts.</description> + </property> + <property> + <name>port</name> + <value>42424</value> + <description>Proxy port.</description> + </property> + <property> + <name>protocolFactory</name> + <value>org.apache.thrift.protocol.TCompactProtocol$Factory</value> + <description>Proxy protocol factory.</description> + </property> + <property> + <name>tokenClass</name> + <value>org.apache.accumulo.core.client.security.tokens.PasswordToken</value> + <description>Class to use for accumulo user authentication.</description> + </property> + <property> + <name>maxFrameSize</name> + <value>16M</value> + <description>Max frame size.</description> + </property> + <property> + <name>useMockInstance</name> + <value>false</value> + <description>Only used for testing.</description> + </property> + <property> + <name>useMiniAccumulo</name> + <value>false</value> + <description>Only used for testing.</description> + </property> +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/metainfo.xml ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/metainfo.xml b/app-packages/accumulo/metainfo.xml index d3fb263..4cfaa6b 100644 --- a/app-packages/accumulo/metainfo.xml +++ b/app-packages/accumulo/metainfo.xml @@ -77,6 +77,10 @@ <command>ACCUMULO_TRACER-START</command> <requires>ACCUMULO_TSERVER-STARTED</requires> </commandOrder> + <commandOrder> + <command>ACCUMULO_PROXY-START</command> + <requires>ACCUMULO_TSERVER-STARTED</requires> + </commandOrder> </commandOrders> <components> <component> @@ -131,6 +135,21 @@ </component> <component> + <name>ACCUMULO_PROXY</name> + <category>CLIENT</category> + <componentExports> + <componentExport> + <name>proxies</name> + <value>${THIS_HOST}:${site.proxy.port}</value> + </componentExport> + </componentExports> + <commandScript> + <script>scripts/accumulo_proxy.py</script> + <scriptType>PYTHON</scriptType> + </commandScript> + </component> + + <component> <name>ACCUMULO_CLIENT</name> <category>CLIENT</category> <commandScript> @@ -168,6 +187,11 @@ <fileName>client.conf</fileName> <dictionaryName>client</dictionaryName> </configFile> + <configFile> + <type>properties</type> + <fileName>proxy.properties</fileName> + <dictionaryName>proxy</dictionaryName> + </configFile> </configFiles> </application> http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/package/scripts/accumulo_configuration.py ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/package/scripts/accumulo_configuration.py b/app-packages/accumulo/package/scripts/accumulo_configuration.py index fb4410e..2440250 100644 --- a/app-packages/accumulo/package/scripts/accumulo_configuration.py +++ b/app-packages/accumulo/package/scripts/accumulo_configuration.py @@ -133,6 +133,14 @@ def setup_conf_dir(name=None): # 'master' or 'tserver' or 'monitor' or 'gc' or ' group = params.user_group ) + if name == "proxy": + # create proxy.properties file + PropertiesFile(params.proxy_conf, + properties = params.config['configurations']['proxy'], + owner = params.accumulo_user, + group = params.user_group + ) + # create host files accumulo_StaticFile( 'masters') accumulo_StaticFile( 'slaves') http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/package/scripts/accumulo_proxy.py ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/package/scripts/accumulo_proxy.py b/app-packages/accumulo/package/scripts/accumulo_proxy.py new file mode 100644 index 0000000..b988fbd --- /dev/null +++ b/app-packages/accumulo/package/scripts/accumulo_proxy.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +""" +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you 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. + +""" + +from accumulo_script import AccumuloScript + +if __name__ == "__main__": + AccumuloScript('proxy').execute() http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/package/scripts/accumulo_service.py ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/package/scripts/accumulo_service.py b/app-packages/accumulo/package/scripts/accumulo_service.py index ca21cc8..b7ce2a1 100644 --- a/app-packages/accumulo/package/scripts/accumulo_service.py +++ b/app-packages/accumulo/package/scripts/accumulo_service.py @@ -30,7 +30,10 @@ def accumulo_service( name, pid_exists = format("ls {pid_file} >/dev/null 2>&1 && ps `cat {pid_file}` >/dev/null 2>&1") if action == 'start': - daemon_cmd = format("{daemon_script} {role} --address {params.hostname} > {log_dir}/accumulo-{accumulo_user}-{role}.out 2>{log_dir}/accumulo-{accumulo_user}-{role}.err & echo $! > {pid_file}") + if role == 'proxy': + daemon_cmd = format("{daemon_script} {role} -p {params.proxy_conf} > {log_dir}/accumulo-{accumulo_user}-{role}.out 2>{log_dir}/accumulo-{accumulo_user}-{role}.err & echo $! > {pid_file}") + else: + daemon_cmd = format("{daemon_script} {role} --address {params.hostname} > {log_dir}/accumulo-{accumulo_user}-{role}.out 2>{log_dir}/accumulo-{accumulo_user}-{role}.err & echo $! > {pid_file}") Execute ( daemon_cmd, not_if=pid_exists, user=params.accumulo_user http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/package/scripts/params.py b/app-packages/accumulo/package/scripts/params.py index 9e6e8dd..981d3e0 100644 --- a/app-packages/accumulo/package/scripts/params.py +++ b/app-packages/accumulo/package/scripts/params.py @@ -48,6 +48,7 @@ accumulo_root = config['configurations']['global']['app_root'] conf_dir = format("{accumulo_root}/conf") log_dir = config['configurations']['global']['app_log_dir'] daemon_script = format("{accumulo_root}/bin/accumulo") +proxy_conf = format("{conf_dir}/proxy.properties") # accumulo monitor certificate properties monitor_security_enabled = config['configurations']['global']['monitor_protocol'] == "https" http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/pom.xml ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/pom.xml b/app-packages/accumulo/pom.xml index 611940c..8ac7f27 100644 --- a/app-packages/accumulo/pom.xml +++ b/app-packages/accumulo/pom.xml @@ -283,6 +283,18 @@ </dependency> <dependency> <groupId>org.apache.accumulo</groupId> + <artifactId>accumulo-proxy</artifactId> + <version>${accumulo.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.thrift</groupId> + <artifactId>libthrift</artifactId> + <version>0.9.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.accumulo</groupId> <artifactId>accumulo-test</artifactId> <scope>test</scope> </dependency> http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/resources-default.json ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/resources-default.json b/app-packages/accumulo/resources-default.json index f0923f2..90cbf3f 100644 --- a/app-packages/accumulo/resources-default.json +++ b/app-packages/accumulo/resources-default.json @@ -33,6 +33,11 @@ "yarn.role.priority": "5", "yarn.component.instances": "1", "yarn.memory": "256" + }, + "ACCUMULO_PROXY": { + "yarn.role.priority": "6", + "yarn.component.instances": "1", + "yarn.memory": "128" } } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy b/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy index f1e1899..5f16d17 100644 --- a/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy +++ b/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloBasicIT.groovy @@ -26,7 +26,6 @@ import org.apache.hadoop.security.UserGroupInformation import org.apache.hadoop.security.alias.CredentialProvider import org.apache.hadoop.security.alias.CredentialProviderFactory import org.apache.hadoop.registry.client.types.ServiceRecord -import org.apache.slider.accumulo.CustomAuthenticator import org.apache.slider.api.ClusterDescription import org.apache.slider.client.SliderClient import org.apache.slider.common.SliderKeys @@ -116,6 +115,18 @@ class AccumuloBasicIT extends AccumuloAgentCommandTestBase { return "test_accumulo_basic" } + protected Map<String, Integer> getRoleMap() { + // must match the values in src/test/resources/resources.json + return [ + "ACCUMULO_MASTER" : 1, + "ACCUMULO_TSERVER" : 2, + "ACCUMULO_MONITOR": 1, + "ACCUMULO_GC": 0, + "ACCUMULO_TRACER" : 0, + "ACCUMULO_PROXY" : 0 + ]; + } + @Test public void testAccumuloClusterCreate() throws Throwable { @@ -136,15 +147,6 @@ class AccumuloBasicIT extends AccumuloAgentCommandTestBase { ensureApplicationIsUp(getClusterName()) - // must match the values in src/test/resources/resources.json - Map<String, Integer> roleMap = [ - "ACCUMULO_MASTER" : 1, - "ACCUMULO_TSERVER" : 2, - "ACCUMULO_MONITOR": 1, - "ACCUMULO_GC": 0, - "ACCUMULO_TRACER" : 0 - ]; - //get a slider client against the cluster SliderClient sliderClient = bondToCluster(SLIDER_CONFIG, getClusterName()) ClusterDescription cd = sliderClient.clusterDescription @@ -153,7 +155,7 @@ class AccumuloBasicIT extends AccumuloAgentCommandTestBase { log.info("Connected via Client {}", sliderClient.toString()) //wait for the role counts to be reached - waitForRoleCount(sliderClient, roleMap, ACCUMULO_LAUNCH_WAIT_TIME) + waitForRoleCount(sliderClient, getRoleMap(), ACCUMULO_LAUNCH_WAIT_TIME) sleep(ACCUMULO_GO_LIVE_TIME) @@ -165,18 +167,26 @@ class AccumuloBasicIT extends AccumuloAgentCommandTestBase { return "Create a working Accumulo cluster $clusterName" } + public static PublishedConfiguration getExport(SliderClient sliderClient, + String clusterName, + String exportName) { + String path = servicePath(currentUser(), + SliderKeys.APP_TYPE, + clusterName); + ServiceRecord instance = sliderClient.resolve(path) + RegistryRetriever retriever = new RegistryRetriever(instance) + PublishedConfiguration configuration = retriever.retrieveConfiguration( + retriever.getConfigurations(true), exportName, true) + return configuration + } + public static String getMonitorUrl(SliderClient sliderClient, String clusterName) { int tries = 5 Exception caught; while (true) { try { - String path = servicePath(currentUser(), - SliderKeys.APP_TYPE, - clusterName); - ServiceRecord instance = sliderClient.resolve(path) - RegistryRetriever retriever = new RegistryRetriever(instance) - PublishedConfiguration configuration = retriever.retrieveConfiguration( - retriever.getConfigurations(true), "quicklinks", true) + PublishedConfiguration configuration = getExport(sliderClient, + clusterName, "quicklinks") // must match name set in metainfo.xml String monitorUrl = configuration.entries.get("org.apache.slider.monitor") http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloProxyIT.groovy ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloProxyIT.groovy b/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloProxyIT.groovy new file mode 100644 index 0000000..730355f --- /dev/null +++ b/app-packages/accumulo/src/test/groovy/org/apache/slider/funtest/accumulo/AccumuloProxyIT.groovy @@ -0,0 +1,130 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.slider.funtest.accumulo + +import groovy.util.logging.Slf4j +import org.apache.accumulo.proxy.TestProxyClient +import org.apache.accumulo.proxy.thrift.AccumuloProxy +import org.apache.accumulo.proxy.thrift.ColumnUpdate +import org.apache.accumulo.proxy.thrift.TimeType +import org.apache.slider.api.ClusterDescription +import org.apache.slider.client.SliderClient +import org.apache.slider.core.registry.docstore.PublishedConfiguration + +import java.nio.ByteBuffer + +@Slf4j +class AccumuloProxyIT extends AccumuloBasicIT { + @Override + protected Map<String, Integer> getRoleMap() { + // must match the values in src/test/resources/resources.json + return [ + "ACCUMULO_MASTER" : 1, + "ACCUMULO_TSERVER" : 1, + "ACCUMULO_MONITOR": 0, + "ACCUMULO_GC": 0, + "ACCUMULO_TRACER" : 0, + "ACCUMULO_PROXY" : 2 + ]; + } + + @Override + protected String getAppResource() { + return sysprop("test.app.resources.dir") + "/resources_with_proxy.json" + } + + @Override + public String getClusterName() { + return "test_proxy"; + } + + @Override + public String getDescription() { + return "Test proxy $clusterName" + } + + def getProxies(SliderClient sliderClient, String clusterName, int expectedNumber) { + int tries = 5 + Exception caught; + while (true) { + try { + PublishedConfiguration configuration = getExport(sliderClient, + clusterName, "componentinstancedata") + + def proxies = configuration.entries.values() + if (proxies.size() != expectedNumber) + throw new IllegalStateException("Didn't find all proxies") + return proxies + } catch (Exception e) { + caught = e; + log.info("Got exception trying to read quicklinks") + if (tries-- == 0) { + break + } + sleep(20000) + } + } + throw caught; + } + + @Override + public void clusterLoadOperations(ClusterDescription cd, SliderClient sliderClient) { + def proxies = getProxies(sliderClient, getClusterName(), 2) + for (int i = 0; i < proxies.size(); i++) { + log.info("Checking proxy " + proxies[i]) + def hostPort = proxies[i].split(":") + + // create proxy client + AccumuloProxy.Client client = new TestProxyClient(hostPort[0], + hostPort[1].toInteger()).proxy() + ByteBuffer token = client.login("root", + Collections.singletonMap("password", PASSWORD)) + + // verify table list before + String tableName = "table" + i + Set<String> tablesBefore = client.listTables(token) + assertFalse(tablesBefore.contains(tableName)) + + // create table, verify its contents, write entry, verify again + client.createTable(token, tableName, true, TimeType.MILLIS) + String scanner = client.createScanner(token, tableName, null) + assertFalse(client.hasNext(scanner)) + client.updateAndFlush(token, tableName, createUpdate("row1", "cf1", + "cq1", "val1")) + scanner = client.createScanner(token, tableName, null) + assertTrue(client.hasNext(scanner)) + client.nextEntry(scanner) + assertFalse(client.hasNext(scanner)) + + // verify table list after + Set<String> tablesAfter = client.listTables(token) + assertTrue(tablesAfter.contains(tableName)) + assertEquals(tablesBefore.size() + 1, tablesAfter.size()) + } + } + + def createUpdate(String row, String cf, String cq, String value) { + ColumnUpdate update = new ColumnUpdate(wrap(cf), wrap(cq)); + update.setValue(value.getBytes()); + return Collections.singletonMap(wrap(row), Collections.singletonList(update)); + } + + def wrap(String cf) { + return ByteBuffer.wrap(cf.getBytes("UTF-8")); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/src/test/resources/resources.json ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/src/test/resources/resources.json b/app-packages/accumulo/src/test/resources/resources.json index 1c5dd97..f88a8d6 100644 --- a/app-packages/accumulo/src/test/resources/resources.json +++ b/app-packages/accumulo/src/test/resources/resources.json @@ -32,7 +32,12 @@ "ACCUMULO_TRACER": { "yarn.role.priority": "5", "yarn.component.instances": "0", - "yarn.memory": "256" + "yarn.memory": "128" + }, + "ACCUMULO_PROXY": { + "yarn.role.priority": "6", + "yarn.component.instances": "0", + "yarn.memory": "128" } } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/src/test/resources/resources_with_client.json ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/src/test/resources/resources_with_client.json b/app-packages/accumulo/src/test/resources/resources_with_client.json deleted file mode 100644 index 297a232..0000000 --- a/app-packages/accumulo/src/test/resources/resources_with_client.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "schema": "http://example.org/specification/v2.0.0", - "metadata": { - }, - "global": { - }, - "components": { - "ACCUMULO_MASTER": { - "yarn.role.priority": "1", - "yarn.component.instances": "1", - "yarn.memory": "256" - }, - "slider-appmaster": { - }, - "ACCUMULO_TSERVER": { - "yarn.role.priority": "2", - "yarn.component.instances": "2", - "yarn.memory": "256" - }, - "ACCUMULO_MONITOR": { - "yarn.role.priority": "3", - "yarn.component.instances": "1", - "yarn.memory": "128" - }, - "ACCUMULO_GC": { - "yarn.role.priority": "4", - "yarn.component.instances": "1", - "yarn.memory": "128" - }, - "ACCUMULO_TRACER": { - "yarn.role.priority": "5", - "yarn.component.instances": "1", - "yarn.memory": "128" - }, - "ACCUMULO_CLIENT": { - "yarn.role.priority": "6", - "yarn.component.instances": "0", - "yarn.memory": "128" - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d91049a6/app-packages/accumulo/src/test/resources/resources_with_proxy.json ---------------------------------------------------------------------- diff --git a/app-packages/accumulo/src/test/resources/resources_with_proxy.json b/app-packages/accumulo/src/test/resources/resources_with_proxy.json new file mode 100644 index 0000000..615782a --- /dev/null +++ b/app-packages/accumulo/src/test/resources/resources_with_proxy.json @@ -0,0 +1,43 @@ +{ + "schema": "http://example.org/specification/v2.0.0", + "metadata": { + }, + "global": { + "yarn.log.include.patterns": "", + "yarn.log.exclude.patterns": "" + }, + "components": { + "ACCUMULO_MASTER": { + "yarn.role.priority": "1", + "yarn.component.instances": "1", + "yarn.memory": "64" + }, + "slider-appmaster": { + }, + "ACCUMULO_TSERVER": { + "yarn.role.priority": "2", + "yarn.component.instances": "1", + "yarn.memory": "256" + }, + "ACCUMULO_MONITOR": { + "yarn.role.priority": "3", + "yarn.component.instances": "0", + "yarn.memory": "64" + }, + "ACCUMULO_GC": { + "yarn.role.priority": "4", + "yarn.component.instances": "0", + "yarn.memory": "128" + }, + "ACCUMULO_TRACER": { + "yarn.role.priority": "5", + "yarn.component.instances": "0", + "yarn.memory": "128" + }, + "ACCUMULO_PROXY": { + "yarn.role.priority": "6", + "yarn.component.instances": "2", + "yarn.memory": "128" + } + } +}
