http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml new file mode 100644 index 0000000..b6a2cf2 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/configuration/storm-site.xml @@ -0,0 +1,580 @@ +<?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 supports_final="true"> + <property> + <name>java.library.path</name> + <value>/usr/local/lib:/opt/local/lib:/usr/lib</value> + <description>This value is passed to spawned JVMs (e.g., Nimbus, Supervisor, and Workers) + for the java.library.path value. java.library.path tells the JVM where + to look for native libraries. It is necessary to set this config correctly since + Storm uses the ZeroMQ and JZMQ native libs. </description> + </property> + <property> + <name>storm.local.dir</name> + <value>/hadoop/storm</value> + <description>A directory on the local filesystem used by Storm for any local + filesystem usage it needs. The directory must exist and the Storm daemons must + have permission to read/write from this location.</description> + </property> + <property> + <name>storm.zookeeper.servers</name> + <value>['localhost']</value> + <description>A list of hosts of ZooKeeper servers used to manage the cluster.</description> + </property> + <property> + <name>storm.zookeeper.port</name> + <value>2181</value> + <description>The port Storm will use to connect to each of the ZooKeeper servers.</description> + </property> + <property> + <name>storm.zookeeper.root</name> + <value>/storm</value> + <description>The root location at which Storm stores data in ZooKeeper.</description> + </property> + <property> + <name>storm.zookeeper.session.timeout</name> + <value>20000</value> + <description>The session timeout for clients to ZooKeeper.</description> + </property> + <property> + <name>storm.zookeeper.connection.timeout</name> + <value>15000</value> + <description>The connection timeout for clients to ZooKeeper.</description> + </property> + <property> + <name>storm.zookeeper.retry.times</name> + <value>5</value> + <description>The number of times to retry a Zookeeper operation.</description> + </property> + <property> + <name>storm.zookeeper.retry.interval</name> + <value>1000</value> + <description>The interval between retries of a Zookeeper operation.</description> + </property> + <property> + <name>storm.zookeeper.retry.intervalceiling.millis</name> + <value>30000</value> + <description>The ceiling of the interval between retries of a Zookeeper operation.</description> + </property> + <property> + <name>storm.cluster.mode</name> + <value>distributed</value> + <description>The mode this Storm cluster is running in. Either "distributed" or "local".</description> + </property> + <property> + <name>storm.local.mode.zmq</name> + <value>false</value> + <description>Whether or not to use ZeroMQ for messaging in local mode. If this is set + to false, then Storm will use a pure-Java messaging system. The purpose + of this flag is to make it easy to run Storm in local mode by eliminating + the need for native dependencies, which can be difficult to install. + </description> + </property> + <property> + <name>storm.thrift.transport</name> + <value>backtype.storm.security.auth.SimpleTransportPlugin</value> + <description>The transport plug-in for Thrift client/server communication.</description> + </property> + <property> + <name>storm.messaging.transport</name> + <value>backtype.storm.messaging.netty.Context</value> + <description>The transporter for communication among Storm tasks.</description> + </property> + <property> + <name>nimbus.host</name> + <value>localhost</value> + <description>The host that the master server is running on.</description> + </property> + <property> + <name>nimbus.thrift.port</name> + <value>6627</value> + <description> Which port the Thrift interface of Nimbus should run on. Clients should + connect to this port to upload jars and submit topologies.</description> + </property> + <property> + <name>nimbus.thrift.max_buffer_size</name> + <value>1048576</value> + <description>The maximum buffer size thrift should use when reading messages.</description> + </property> + <property> + <name>nimbus.childopts</name> + <value>-Xmx1024m -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=localhost,port=8649,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Nimbus_JVM</value> + <description>This parameter is used by the storm-deploy project to configure the jvm options for the nimbus daemon.</description> + </property> + <property> + <name>nimbus.task.timeout.secs</name> + <value>30</value> + <description>How long without heartbeating a task can go before nimbus will consider the task dead and reassign it to another location.</description> + </property> + <property> + <name>nimbus.supervisor.timeout.secs</name> + <value>60</value> + <description>How long before a supervisor can go without heartbeating before nimbus considers it dead and stops assigning new work to it.</description> + </property> + <property> + <name>nimbus.monitor.freq.secs</name> + <value>10</value> + <description> + How often nimbus should wake up to check heartbeats and do reassignments. Note + that if a machine ever goes down Nimbus will immediately wake up and take action. + This parameter is for checking for failures when there's no explicit event like that occuring. + </description> + </property> + <property> + <name>nimbus.cleanup.inbox.freq.secs</name> + <value>600</value> + <description>How often nimbus should wake the cleanup thread to clean the inbox.</description> + </property> + <property> + <name>nimbus.inbox.jar.expiration.secs</name> + <value>3600</value> + <description> + The length of time a jar file lives in the inbox before being deleted by the cleanup thread. + + Probably keep this value greater than or equal to NIMBUS_CLEANUP_INBOX_JAR_EXPIRATION_SECS. + Note that the time it takes to delete an inbox jar file is going to be somewhat more than + NIMBUS_CLEANUP_INBOX_JAR_EXPIRATION_SECS (depending on how often NIMBUS_CLEANUP_FREQ_SECS is set to). + </description> + </property> + <property> + <name>nimbus.task.launch.secs</name> + <value>120</value> + <description>A special timeout used when a task is initially launched. During launch, this is the timeout + used until the first heartbeat, overriding nimbus.task.timeout.secs.</description> + </property> + <property> + <name>nimbus.reassign</name> + <value>true</value> + <description>Whether or not nimbus should reassign tasks if it detects that a task goes down. + Defaults to true, and it's not recommended to change this value.</description> + </property> + <property> + <name>nimbus.file.copy.expiration.secs</name> + <value>600</value> + <description>During upload/download with the master, how long an upload or download connection is idle + before nimbus considers it dead and drops the connection.</description> + </property> + <property> + <name>nimbus.topology.validator</name> + <value>backtype.storm.nimbus.DefaultTopologyValidator</value> + <description>A custom class that implements ITopologyValidator that is run whenever a + topology is submitted. Can be used to provide business-specific logic for + whether topologies are allowed to run or not.</description> + </property> + <property> + <name>ui.port</name> + <value>8744</value> + <description>Storm UI binds to this port.</description> + </property> + <property> + <name>ui.childopts</name> + <value>-Xmx768m</value> + <description>Childopts for Storm UI Java process.</description> + </property> + <property> + <name>logviewer.port</name> + <value>8000</value> + <description>HTTP UI port for log viewer.</description> + </property> + <property> + <name>logviewer.childopts</name> + <value>-Xmx128m</value> + <description>Childopts for log viewer java process.</description> + </property> + <property> + <name>logviewer.appender.name</name> + <value>A1</value> + <description>Appender name used by log viewer to determine log directory.</description> + </property> + <property> + <name>drpc.port</name> + <value>3772</value> + <description>This port is used by Storm DRPC for receiving DPRC requests from clients.</description> + </property> + <property> + <name>drpc.worker.threads</name> + <value>64</value> + <description>DRPC thrift server worker threads.</description> + </property> + <property> + <name>drpc.queue.size</name> + <value>128</value> + <description>DRPC thrift server queue size.</description> + </property> + <property> + <name>drpc.invocations.port</name> + <value>3773</value> + <description>This port on Storm DRPC is used by DRPC topologies to receive function invocations and send results back.</description> + </property> + <property> + <name>drpc.request.timeout.secs</name> + <value>600</value> + <description>The timeout on DRPC requests within the DRPC server. Defaults to 10 minutes. Note that requests can also + timeout based on the socket timeout on the DRPC client, and separately based on the topology message + timeout for the topology implementing the DRPC function.</description> + </property> + <property> + <name>drpc.childopts</name> + <value>-Xmx768m</value> + <description>Childopts for Storm DRPC Java process.</description> + </property> + <property> + <name>transactional.zookeeper.root</name> + <value>/transactional</value> + <description>The root directory in ZooKeeper for metadata about TransactionalSpouts.</description> + </property> + <property> + <name>transactional.zookeeper.servers</name> + <value>null</value> + <description>The list of zookeeper servers in which to keep the transactional state. If null (which is default), + will use storm.zookeeper.servers</description> + </property> + <property> + <name>transactional.zookeeper.port</name> + <value>null</value> + <description>The port to use to connect to the transactional zookeeper servers. If null (which is default), + will use storm.zookeeper.port</description> + </property> + <property> + <name>supervisor.slots.ports</name> + <value>[6700, 6701]</value> + <description>A list of ports that can run workers on this supervisor. Each worker uses one port, and + the supervisor will only run one worker per port. Use this configuration to tune + how many workers run on each machine.</description> + </property> + <property> + <name>supervisor.childopts</name> + <value>-Xmx256m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=56431 -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=localhost,port=8650,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Supervisor_JVM</value> + <description>This parameter is used by the storm-deploy project to configure the jvm options for the supervisor daemon.</description> + </property> + <property> + <name>supervisor.worker.start.timeout.secs</name> + <value>120</value> + <description>How long a worker can go without heartbeating during the initial launch before + the supervisor tries to restart the worker process. This value override + supervisor.worker.timeout.secs during launch because there is additional + overhead to starting and configuring the JVM on launch.</description> + </property> + <property> + <name>supervisor.worker.timeout.secs</name> + <value>30</value> + <description>How long a worker can go without heartbeating before the supervisor tries to restart the worker process.</description> + </property> + <property> + <name>supervisor.monitor.frequency.secs</name> + <value>3</value> + <description>How often the supervisor checks the worker heartbeats to see if any of them need to be restarted.</description> + </property> + <property> + <name>supervisor.heartbeat.frequency.secs</name> + <value>5</value> + <description>How often the supervisor sends a heartbeat to the master.</description> + </property> + <property> + <name>worker.childopts</name> + <value>-Xmx768m -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host=localhost,port=8650,wireformat31x=true,mode=multicast,config=/usr/lib/storm/contrib/storm-jmxetric/conf/jmxetric-conf.xml,process=Worker_%ID%_JVM</value> + <description>The jvm opts provided to workers launched by this supervisor. All \"%ID%\" substrings are replaced with an identifier for this worker.</description> + </property> + <property> + <name>worker.heartbeat.frequency.secs</name> + <value>1</value> + <description>How often this worker should heartbeat to the supervisor.</description> + </property> + <property> + <name>task.heartbeat.frequency.secs</name> + <value>3</value> + <description>How often a task should heartbeat its status to the master.</description> + </property> + <property> + <name>task.refresh.poll.secs</name> + <value>10</value> + <description>How often a task should sync its connections with other tasks (if a task is + reassigned, the other tasks sending messages to it need to refresh their connections). + In general though, when a reassignment happens other tasks will be notified + almost immediately. This configuration is here just in case that notification doesn't + come through.</description> + </property> + <property> + <name>zmq.threads</name> + <value>1</value> + <description>The number of threads that should be used by the zeromq context in each worker process.</description> + </property> + <property> + <name>zmq.linger.millis</name> + <value>5000</value> + <description>How long a connection should retry sending messages to a target host when + the connection is closed. This is an advanced configuration and can almost + certainly be ignored.</description> + </property> + <property> + <name>zmq.hwm</name> + <value>0</value> + <description>The high water for the ZeroMQ push sockets used for networking. Use this config to prevent buffer explosion + on the networking layer.</description> + </property> + <property> + <name>storm.messaging.netty.server_worker_threads</name> + <value>1</value> + <description>Netty based messaging: The # of worker threads for the server.</description> + </property> + <property> + <name>storm.messaging.netty.client_worker_threads</name> + <value>1</value> + <description>Netty based messaging: The # of worker threads for the client.</description> + </property> + <property> + <name>storm.messaging.netty.buffer_size</name> + <value>5242880</value> + <description>Netty based messaging: The buffer size for send/recv buffer.</description> + </property> + <property> + <name>storm.messaging.netty.max_retries</name> + <value>30</value> + <description>Netty based messaging: The max # of retries that a peer will perform when a remote is not accessible.</description> + </property> + <property> + <name>storm.messaging.netty.max_wait_ms</name> + <value>1000</value> + <description>Netty based messaging: The max # of milliseconds that a peer will wait.</description> + </property> + <property> + <name>storm.messaging.netty.min_wait_ms</name> + <value>100</value> + <description>Netty based messaging: The min # of milliseconds that a peer will wait.</description> + </property> + <property> + <name>topology.enable.message.timeouts</name> + <value>true</value> + <description>True if Storm should timeout messages or not. Defaults to true. This is meant to be used + in unit tests to prevent tuples from being accidentally timed out during the test.</description> + </property> + <property> + <name>topology.debug</name> + <value>false</value> + <description>When set to true, Storm will log every message that's emitted.</description> + </property> + <property> + <name>topology.optimize</name> + <value>true</value> + <description>Whether or not the master should optimize topologies by running multiple tasks in a single thread where appropriate.</description> + </property> + <property> + <name>topology.workers</name> + <value>1</value> + <description>How many processes should be spawned around the cluster to execute this + topology. Each process will execute some number of tasks as threads within + them. This parameter should be used in conjunction with the parallelism hints + on each component in the topology to tune the performance of a topology.</description> + </property> + <property> + <name>topology.acker.executors</name> + <value>null</value> + <description>How many executors to spawn for ackers. + + If this is set to 0, then Storm will immediately ack tuples as soon + as they come off the spout, effectively disabling reliability. + </description> + </property> + <property> + <name>topology.message.timeout.secs</name> + <value>30</value> + <description>The maximum amount of time given to the topology to fully process a message + emitted by a spout. If the message is not acked within this time frame, Storm + will fail the message on the spout. Some spouts implementations will then replay + the message at a later time.</description> + </property> + <property> + <name>topology.skip.missing.kryo.registrations</name> + <value>false</value> + <description> Whether or not Storm should skip the loading of kryo registrations for which it + does not know the class or have the serializer implementation. Otherwise, the task will + fail to load and will throw an error at runtime. The use case of this is if you want to + declare your serializations on the storm.yaml files on the cluster rather than every single + time you submit a topology. Different applications may use different serializations and so + a single application may not have the code for the other serializers used by other apps. + By setting this config to true, Storm will ignore that it doesn't have those other serializations + rather than throw an error.</description> + </property> + <property> + <name>topology.max.task.parallelism</name> + <value>null</value> + <description>The maximum parallelism allowed for a component in this topology. This configuration is + typically used in testing to limit the number of threads spawned in local mode.</description> + </property> + <property> + <name>topology.max.spout.pending</name> + <value>null</value> + <description>The maximum number of tuples that can be pending on a spout task at any given time. + This config applies to individual tasks, not to spouts or topologies as a whole. + + A pending tuple is one that has been emitted from a spout but has not been acked or failed yet. + Note that this config parameter has no effect for unreliable spouts that don't tag + their tuples with a message id.</description> + </property> + <property> + <name>topology.state.synchronization.timeout.secs</name> + <value>60</value> + <description>The maximum amount of time a component gives a source of state to synchronize before it requests + synchronization again.</description> + </property> + <property> + <name>topology.stats.sample.rate</name> + <value>0.05</value> + <description>The percentage of tuples to sample to produce stats for a task.</description> + </property> + <property> + <name>topology.builtin.metrics.bucket.size.secs</name> + <value>60</value> + <description>The time period that builtin metrics data in bucketed into.</description> + </property> + <property> + <name>topology.fall.back.on.java.serialization</name> + <value>true</value> + <description>Whether or not to use Java serialization in a topology.</description> + </property> + <property> + <name>topology.worker.childopts</name> + <value>null</value> + <description>Topology-specific options for the worker child process. This is used in addition to WORKER_CHILDOPTS.</description> + </property> + <property> + <name>topology.executor.receive.buffer.size</name> + <value>1024</value> + <description>The size of the Disruptor receive queue for each executor. Must be a power of 2.</description> + </property> + <property> + <name>topology.executor.send.buffer.size</name> + <value>1024</value> + <description>The size of the Disruptor send queue for each executor. Must be a power of 2.</description> + </property> + <property> + <name>topology.receiver.buffer.size</name> + <value>8</value> + <description>The maximum number of messages to batch from the thread receiving off the network to the + executor queues. Must be a power of 2.</description> + </property> + <property> + <name>topology.transfer.buffer.size</name> + <value>1024</value> + <description>The size of the Disruptor transfer queue for each worker.</description> + </property> + <property> + <name>topology.tick.tuple.freq.secs</name> + <value>null</value> + <description>How often a tick tuple from the "__system" component and "__tick" stream should be sent + to tasks. Meant to be used as a component-specific configuration.</description> + </property> + <property> + <name>topology.worker.shared.thread.pool.size</name> + <value>4</value> + <description>The size of the shared thread pool for worker tasks to make use of. The thread pool can be accessed + via the TopologyContext.</description> + </property> + <property> + <name>topology.disruptor.wait.strategy</name> + <value>com.lmax.disruptor.BlockingWaitStrategy</value> + <description>Configure the wait strategy used for internal queuing. Can be used to tradeoff latency + vs. throughput.</description> + </property> + <property> + <name>topology.executor.send.buffer.size</name> + <value>1024</value> + <description>The size of the Disruptor send queue for each executor. Must be a power of 2.</description> + </property> + <property> + <name>topology.receiver.buffer.size</name> + <value>8</value> + <description>The maximum number of messages to batch from the thread receiving off the network to the + executor queues. Must be a power of 2.</description> + </property> + <property> + <name>topology.transfer.buffer.size</name> + <value>1024</value> + <description>The size of the Disruptor transfer queue for each worker.</description> + </property> + <property> + <name>topology.tick.tuple.freq.secs</name> + <value>null</value> + <description>How often a tick tuple from the "__system" component and "__tick" stream should be sent + to tasks. Meant to be used as a component-specific configuration.</description> + </property> + <property> + <name>topology.worker.shared.thread.pool.size</name> + <value>4</value> + <description>The size of the shared thread pool for worker tasks to make use of. The thread pool can be accessed + via the TopologyContext.</description> + </property> + <property> + <name>topology.spout.wait.strategy</name> + <value>backtype.storm.spout.SleepSpoutWaitStrategy</value> + <description>A class that implements a strategy for what to do when a spout needs to wait. Waiting is + triggered in one of two conditions: + + 1. nextTuple emits no tuples + 2. The spout has hit maxSpoutPending and can't emit any more tuples</description> + </property> + <property> + <name>topology.sleep.spout.wait.strategy.time.ms</name> + <value>1</value> + <description>The amount of milliseconds the SleepEmptyEmitStrategy should sleep for.</description> + </property> + <property> + <name>topology.error.throttle.interval.secs</name> + <value>10</value> + <description>The interval in seconds to use for determining whether to throttle error reported to Zookeeper. For example, + an interval of 10 seconds with topology.max.error.report.per.interval set to 5 will only allow 5 errors to be + reported to Zookeeper per task for every 10 second interval of time.</description> + </property> + <property> + <name>topology.max.error.report.per.interval</name> + <value>5</value> + <description>The interval in seconds to use for determining whether to throttle error reported to Zookeeper. For example, + an interval of 10 seconds with topology.max.error.report.per.interval set to 5 will only allow 5 errors to be + reported to Zookeeper per task for every 10 second interval of time.</description> + </property> + <property> + <name>topology.kryo.factory</name> + <value>backtype.storm.serialization.DefaultKryoFactory</value> + <description>Class that specifies how to create a Kryo instance for serialization. Storm will then apply + topology.kryo.register and topology.kryo.decorators on top of this. The default implementation + implements topology.fall.back.on.java.serialization and turns references off.</description> + </property> + <property> + <name>topology.tuple.serializer</name> + <value>backtype.storm.serialization.types.ListDelegateSerializer</value> + <description>The serializer class for ListDelegate (tuple payload). + The default serializer will be ListDelegateSerializer</description> + </property> + <property> + <name>topology.trident.batch.emit.interval.millis</name> + <value>500</value> + <description>How often a batch can be emitted in a Trident topology.</description> + </property> + <property> + <name>dev.zookeeper.path</name> + <value>/tmp/dev-storm-zookeeper</value> + <description>The path to use as the zookeeper dir when running a zookeeper server via + "storm dev-zookeeper". This zookeeper instance is only intended for development; + it is not a production grade zookeeper setup.</description> + </property> +</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metainfo.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metainfo.xml b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metainfo.xml new file mode 100644 index 0000000..f2c391c --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metainfo.xml @@ -0,0 +1,126 @@ +<?xml version="1.0"?> +<!-- + 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. +--> + +<metainfo> + <schemaVersion>2.0</schemaVersion> + <services> + <service> + <name>STORM</name> + <displayName>Storm</displayName> + <comment>Apache Hadoop Stream processing framework</comment> + <version>0.9.1.2.1</version> + <components> + + <component> + <name>NIMBUS</name> + <displayName>Nimbus</displayName> + <category>MASTER</category> + <cardinality>1</cardinality> + <dependencies> + <dependency> + <name>ZOOKEEPER/ZOOKEEPER_SERVER</name> + <scope>cluster</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + </dependencies> + <commandScript> + <script>scripts/nimbus.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + + <component> + <name>STORM_REST_API</name> + <displayName>Storm REST API Server</displayName> + <category>MASTER</category> + <cardinality>1</cardinality> + <commandScript> + <script>scripts/rest_api.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + + <component> + <name>SUPERVISOR</name> + <displayName>Supervisor</displayName> + <category>SLAVE</category> + <cardinality>1+</cardinality> + <commandScript> + <script>scripts/supervisor.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + + <component> + <name>STORM_UI_SERVER</name> + <displayName>Storm UI Server</displayName> + <category>MASTER</category> + <cardinality>1</cardinality> + <commandScript> + <script>scripts/ui_server.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + + <component> + <name>DRPC_SERVER</name> + <displayName>DRPC Server</displayName> + <category>MASTER</category> + <cardinality>1</cardinality> + <commandScript> + <script>scripts/drpc_server.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + </components> + + <osSpecifics> + <osSpecific> + <osFamily>any</osFamily> + <packages> + <package> + <name>storm</name> + </package> + </packages> + </osSpecific> + </osSpecifics> + + <commandScript> + <script>scripts/service_check.py</script> + <scriptType>PYTHON</scriptType> + <timeout>300</timeout> + </commandScript> + + <requiredServices> + <service>ZOOKEEPER</service> + </requiredServices> + + <configuration-dependencies> + <config-type>storm-site</config-type> + <config-type>storm-env</config-type> + </configuration-dependencies> + </service> + </services> +</metainfo> http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metrics.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metrics.json b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metrics.json new file mode 100644 index 0000000..c2776ab --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/metrics.json @@ -0,0 +1,1077 @@ +{ + "STORM_REST_API": { + "Component": [ + { + "type": "org.apache.ambari.server.controller.metrics.RestMetricsPropertyProvider", + "properties" : { + "default_port": "8745", + "port_config_type": "storm-site", + "port_property_name": "storm.port", + "protocol": "http" + }, + "metrics": { + "metrics/api/cluster/summary/tasks.total": + { + "metric": "/api/cluster/summary##tasks.total", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/slots.total": { + "metric": "/api/cluster/summary##slots.total", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/slots.free": { + "metric": "/api/cluster/summary##slots.free", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/supervisors": { + "metric": "/api/cluster/summary##supervisors", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/executors.total": { + "metric": "/api/cluster/summary##executors.total", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/slots.used": { + "metric": "/api/cluster/summary##slots.used", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/topologies": { + "metric": "/api/cluster/summary##topologies", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/nimbus.uptime": { + "metric": "/api/cluster/summary##nimbus.uptime", + "pointInTime": true, + "temporal": false + } + } + } + ], + "HostComponent": [ + { + "type": "org.apache.ambari.server.controller.metrics.RestMetricsPropertyProvider", + "properties" : { + "default_port": "8745", + "port_config_type": "storm-site", + "port_property_name": "storm.port", + "protocol": "http" + }, + "metrics": { + "metrics/api/cluster/summary/tasks.total": + { + "metric": "/api/cluster/summary##tasks.total", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/slots.total": { + "metric": "/api/cluster/summary##slots.total", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/slots.free": { + "metric": "/api/cluster/summary##slots.free", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/supervisors": { + "metric": "/api/cluster/summary##supervisors", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/executors.total": { + "metric": "/api/cluster/summary##executors.total", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/slots.used": { + "metric": "/api/cluster/summary##slots.used", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/topologies": { + "metric": "/api/cluster/summary##topologies", + "pointInTime": true, + "temporal": false + }, + "metrics/api/cluster/summary/nimbus.uptime": { + "metric": "/api/cluster/summary##nimbus.uptime", + "pointInTime": true, + "temporal": false + } + } + } + ] + }, + "NIMBUS": { + "Component": [ + { + "type": "ganglia", + "metrics": { + "metrics/boottime": { + "metric": "boottime", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_in": { + "metric": "bytes_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_out": { + "metric": "bytes_out", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_aidle": { + "metric": "cpu_aidle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_idle": { + "metric": "cpu_idle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_nice": { + "metric": "cpu_nice", + "pointInTime": true, + "temporal": true + }, + + "metrics/cpu/cpu_num": { + "metric": "cpu_num", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_speed": { + "metric": "cpu_speed", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_system": { + "metric": "cpu_system", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_user": { + "metric": "cpu_user", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_wio": { + "metric": "cpu_wio", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_free": { + "metric": "disk_free", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_total": { + "metric": "disk_total", + "pointInTime": true, + "temporal": true + }, + "metrics/load_fifteen": { + "metric": "load_fifteen", + "pointInTime": true, + "temporal": true + }, + "metrics/load_five": { + "metric": "load_five", + "pointInTime": true, + "temporal": true + }, + "metrics/load_one": { + "metric": "load_one", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_buffers": { + "metric": "mem_buffers", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_cached": { + "metric": "mem_cached", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_free": { + "metric": "mem_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_shared": { + "metric": "mem_shared", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_total": { + "metric": "mem_total", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/part_max_used": { + "metric": "part_max_used", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_in": { + "metric": "pkts_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_out": { + "metric": "pkts_out", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_run": { + "metric": "proc_run", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_total": { + "metric": "proc_total", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_free": { + "metric": "swap_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_total": { + "metric": "swap_total", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/committed": { + "metric": "Nimbus.JVM.Memory.Heap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/init": { + "metric": "Nimbus.JVM.Memory.Heap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/max": { + "metric": "Nimbus.JVM.Memory.Heap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/used": { + "metric": "Nimbus.JVM.Memory.Heap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/committed": { + "metric": "Nimbus.JVM.Memory.NonHeap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/init": { + "metric": "Nimbus.JVM.Memory.NonHeap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/max": { + "metric": "Nimbus.JVM.Memory.NonHeap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/used": { + "metric": "Nimbus.JVM.Memory.NonHeap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/os/processcputime": { + "metric": "Nimbus.JVM.OS.ProcessCpuTime", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/threading/daemonthreadcount": { + "metric": "Nimbus.JVM.Threading.DaemonThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/threading/threadcount": { + "metric": "Nimbus.JVM.Threading.ThreadCount", + "pointInTime": true, + "temporal": true + }, + + "metrics/storm/nimbus/freeslots": { + "metric": "Free Slots", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/supervisors": { + "metric": "Supervisors", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/topologies": { + "metric": "Topologies", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/totalexecutors": { + "metric": "Total Executors", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/totalslots": { + "metric": "Total Slots", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/totaltasks": { + "metric": "Total Tasks", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/usedslots": { + "metric": "Used Slots", + "pointInTime": true, + "temporal": true + } + } + } + ], + "HostComponent": [ + { + "type": "ganglia", + "metrics": { + "metrics/boottime": { + "metric": "boottime", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_in": { + "metric": "bytes_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_out": { + "metric": "bytes_out", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_aidle": { + "metric": "cpu_aidle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_idle": { + "metric": "cpu_idle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_nice": { + "metric": "cpu_nice", + "pointInTime": true, + "temporal": true + }, + + "metrics/cpu/cpu_num": { + "metric": "cpu_num", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_speed": { + "metric": "cpu_speed", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_system": { + "metric": "cpu_system", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_user": { + "metric": "cpu_user", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_wio": { + "metric": "cpu_wio", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_free": { + "metric": "disk_free", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_total": { + "metric": "disk_total", + "pointInTime": true, + "temporal": true + }, + "metrics/load_fifteen": { + "metric": "load_fifteen", + "pointInTime": true, + "temporal": true + }, + "metrics/load_five": { + "metric": "load_five", + "pointInTime": true, + "temporal": true + }, + "metrics/load_one": { + "metric": "load_one", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_buffers": { + "metric": "mem_buffers", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_cached": { + "metric": "mem_cached", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_free": { + "metric": "mem_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_shared": { + "metric": "mem_shared", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_total": { + "metric": "mem_total", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/part_max_used": { + "metric": "part_max_used", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_in": { + "metric": "pkts_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_out": { + "metric": "pkts_out", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_run": { + "metric": "proc_run", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_total": { + "metric": "proc_total", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_free": { + "metric": "swap_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_total": { + "metric": "swap_total", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/committed": { + "metric": "Nimbus.JVM.Memory.Heap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/init": { + "metric": "Nimbus.JVM.Memory.Heap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/max": { + "metric": "Nimbus.JVM.Memory.Heap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/heap/used": { + "metric": "Nimbus.JVM.Memory.Heap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/committed": { + "metric": "Nimbus.JVM.Memory.NonHeap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/init": { + "metric": "Nimbus.JVM.Memory.NonHeap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/max": { + "metric": "Nimbus.JVM.Memory.NonHeap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/memory/nonheap/used": { + "metric": "Nimbus.JVM.Memory.NonHeap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/os/processcputime": { + "metric": "Nimbus.JVM.OS.ProcessCpuTime", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/threading/daemonthreadcount": { + "metric": "Nimbus.JVM.Threading.DaemonThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/nimbus/jvm/threading/threadcount": { + "metric": "Nimbus.JVM.Threading.ThreadCount", + "pointInTime": true, + "temporal": true + } + + } + } + ] + }, + "SUPERVISOR": { + "Component": [ + { + "type": "ganglia", + "metrics": { + "metrics/boottime": { + "metric": "boottime", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_in": { + "metric": "bytes_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_out": { + "metric": "bytes_out", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_aidle": { + "metric": "cpu_aidle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_idle": { + "metric": "cpu_idle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_nice": { + "metric": "cpu_nice", + "pointInTime": true, + "temporal": true + }, + + "metrics/cpu/cpu_num": { + "metric": "cpu_num", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_speed": { + "metric": "cpu_speed", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_system": { + "metric": "cpu_system", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_user": { + "metric": "cpu_user", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_wio": { + "metric": "cpu_wio", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_free": { + "metric": "disk_free", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_total": { + "metric": "disk_total", + "pointInTime": true, + "temporal": true + }, + "metrics/load_fifteen": { + "metric": "load_fifteen", + "pointInTime": true, + "temporal": true + }, + "metrics/load_five": { + "metric": "load_five", + "pointInTime": true, + "temporal": true + }, + "metrics/load_one": { + "metric": "load_one", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_buffers": { + "metric": "mem_buffers", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_cached": { + "metric": "mem_cached", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_free": { + "metric": "mem_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_shared": { + "metric": "mem_shared", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_total": { + "metric": "mem_total", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/part_max_used": { + "metric": "part_max_used", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_in": { + "metric": "pkts_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_out": { + "metric": "pkts_out", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_run": { + "metric": "proc_run", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_total": { + "metric": "proc_total", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_free": { + "metric": "swap_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_total": { + "metric": "swap_total", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/committed": { + "metric": "Supervisor.JVM.Memory.Heap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/init": { + "metric": "Supervisor.JVM.Memory.Heap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/max": { + "metric": "Supervisor.JVM.Memory.Heap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/used": { + "metric": "Supervisor.JVM.Memory.Heap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/committed": { + "metric": "Supervisor.JVM.Memory.NonHeap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/init": { + "metric": "Supervisor.JVM.Memory.NonHeap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/max": { + "metric": "Supervisor.JVM.Memory.NonHeap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/used": { + "metric": "Supervisor.JVM.Memory.NonHeap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/os/processcputime": { + "metric": "Supervisor.JVM.OS.ProcessCpuTime", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/threading/daemonthreadcount": { + "metric": "Supervisor.JVM.Threading.DaemonThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/threading/threadcount": { + "metric": "Supervisor.JVM.Threading.ThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/committed": { + "metric": "Worker.(.+).JVM.Memory.Heap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/init": { + "metric": "Worker.(.+).JVM.Memory.Heap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/max": { + "metric": "Worker.(.+).JVM.Memory.Heap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/used": { + "metric": "Worker.(.+).JVM.Memory.Heap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/committed": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/init": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/max": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/used": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/os/processcputime": { + "metric": "Worker.(.+).JVM.OS.ProcessCpuTime", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/threading/daemonthreadcount": { + "metric": "Worker.(.+).JVM.Threading.DaemonThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/threading/threadcount": { + "metric": "Worker.(.+).JVM.Threading.ThreadCount", + "pointInTime": true, + "temporal": true + } + + + } + } + ], + "HostComponent": [ + { + "type": "ganglia", + "metrics": { + "metrics/boottime": { + "metric": "boottime", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_in": { + "metric": "bytes_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/bytes_out": { + "metric": "bytes_out", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_aidle": { + "metric": "cpu_aidle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_idle": { + "metric": "cpu_idle", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_nice": { + "metric": "cpu_nice", + "pointInTime": true, + "temporal": true + }, + + "metrics/cpu/cpu_num": { + "metric": "cpu_num", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_speed": { + "metric": "cpu_speed", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_system": { + "metric": "cpu_system", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_user": { + "metric": "cpu_user", + "pointInTime": true, + "temporal": true + }, + "metrics/cpu/cpu_wio": { + "metric": "cpu_wio", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_free": { + "metric": "disk_free", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/disk_total": { + "metric": "disk_total", + "pointInTime": true, + "temporal": true + }, + "metrics/load_fifteen": { + "metric": "load_fifteen", + "pointInTime": true, + "temporal": true + }, + "metrics/load_five": { + "metric": "load_five", + "pointInTime": true, + "temporal": true + }, + "metrics/load_one": { + "metric": "load_one", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_buffers": { + "metric": "mem_buffers", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_cached": { + "metric": "mem_cached", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_free": { + "metric": "mem_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_shared": { + "metric": "mem_shared", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/mem_total": { + "metric": "mem_total", + "pointInTime": true, + "temporal": true + }, + "metrics/disk/part_max_used": { + "metric": "part_max_used", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_in": { + "metric": "pkts_in", + "pointInTime": true, + "temporal": true + }, + "metrics/network/pkts_out": { + "metric": "pkts_out", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_run": { + "metric": "proc_run", + "pointInTime": true, + "temporal": true + }, + "metrics/process/proc_total": { + "metric": "proc_total", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_free": { + "metric": "swap_free", + "pointInTime": true, + "temporal": true + }, + "metrics/memory/swap_total": { + "metric": "swap_total", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/committed": { + "metric": "Supervisor.JVM.Memory.Heap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/init": { + "metric": "Supervisor.JVM.Memory.Heap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/max": { + "metric": "Supervisor.JVM.Memory.Heap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/heap/used": { + "metric": "Supervisor.JVM.Memory.Heap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/committed": { + "metric": "Supervisor.JVM.Memory.NonHeap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/init": { + "metric": "Supervisor.JVM.Memory.NonHeap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/max": { + "metric": "Supervisor.JVM.Memory.NonHeap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/memory/nonheap/used": { + "metric": "Supervisor.JVM.Memory.NonHeap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/os/processcputime": { + "metric": "Supervisor.JVM.OS.ProcessCpuTime", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/threading/daemonthreadcount": { + "metric": "Supervisor.JVM.Threading.DaemonThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/supervisor/jvm/threading/threadcount": { + "metric": "Supervisor.JVM.Threading.ThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/committed": { + "metric": "Worker.(.+).JVM.Memory.Heap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/init": { + "metric": "Worker.(.+).JVM.Memory.Heap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/max": { + "metric": "Worker.(.+).JVM.Memory.Heap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/heap/used": { + "metric": "Worker.(.+).JVM.Memory.Heap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/committed": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.committed", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/init": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.init", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/max": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.max", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/memory/nonheap/used": { + "metric": "Worker.(.+).JVM.Memory.NonHeap.used", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/os/processcputime": { + "metric": "Worker.(.+).JVM.OS.ProcessCpuTime", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/threading/daemonthreadcount": { + "metric": "Worker.(.+).JVM.Threading.DaemonThreadCount", + "pointInTime": true, + "temporal": true + }, + "metrics/storm/worker/$1/jvm/threading/threadcount": { + "metric": "Worker.(.+).JVM.Threading.ThreadCount", + "pointInTime": true, + "temporal": true + } + } + } + ] + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/files/wordCount.jar ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/files/wordCount.jar b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/files/wordCount.jar new file mode 100644 index 0000000..aed64be Binary files /dev/null and b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/files/wordCount.jar differ http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py new file mode 100644 index 0000000..149b212 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py @@ -0,0 +1,58 @@ +#!/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. + +""" + +import sys +from resource_management import * +from storm import storm +from service import service +from service_check import ServiceCheck + + +class DrpcServer(Script): + def install(self, env): + self.install_packages(env) + self.configure(env) + + def configure(self, env): + import params + env.set_params(params) + + storm() + + def start(self, env): + import params + env.set_params(params) + self.configure(env) + + service("drpc", action="start") + + def stop(self, env): + import params + env.set_params(params) + + service("drpc", action="stop") + + def status(self, env): + import status_params + env.set_params(status_params) + check_process_status(status_params.pid_drpc) + +if __name__ == "__main__": + DrpcServer().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py new file mode 100644 index 0000000..2dd7963 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py @@ -0,0 +1,57 @@ +#!/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. + +""" + +import sys +from resource_management import * +from storm import storm +from service import service + + +class Nimbus(Script): + def install(self, env): + self.install_packages(env) + self.configure(env) + + def configure(self, env): + import params + env.set_params(params) + + storm() + + def start(self, env): + import params + env.set_params(params) + self.configure(env) + + service("nimbus", action="start") + + def stop(self, env): + import params + env.set_params(params) + + service("nimbus", action="stop") + + def status(self, env): + import status_params + env.set_params(status_params) + check_process_status(status_params.pid_nimbus) + +if __name__ == "__main__": + Nimbus().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py new file mode 100644 index 0000000..a1f8afe --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py @@ -0,0 +1,55 @@ +#!/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. + +""" + +import sys +from resource_management import * +from storm import storm +from supervisord_service import supervisord_service, supervisord_check_status + + +class Nimbus(Script): + def install(self, env): + self.install_packages(env) + self.configure(env) + + def configure(self, env): + import params + env.set_params(params) + + storm() + + def start(self, env): + import params + env.set_params(params) + self.configure(env) + + supervisord_service("nimbus", action="start") + + def stop(self, env): + import params + env.set_params(params) + + supervisord_service("nimbus", action="stop") + + def status(self, env): + supervisord_check_status("nimbus") + +if __name__ == "__main__": + Nimbus().execute() \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py new file mode 100644 index 0000000..ec74d77 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py @@ -0,0 +1,90 @@ +#!/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 resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management import * +import status_params + +# server configurations +config = Script.get_config() + +hdp_stack_version = str(config['hostLevelParams']['stack_version']) +hdp_stack_version = format_hdp_stack_version(hdp_stack_version) +stack_is_hdp22_or_further = hdp_stack_version != "" and compare_versions(hdp_stack_version, '2.2') >= 0 + +#hadoop params +if hdp_stack_version != "" and compare_versions(hdp_stack_version, '2.2') >= 0: + rest_lib_dir = '/usr/hdp/current/storm-client/contrib/storm-rest' + storm_bin_dir = "/usr/hdp/current/storm-client/bin" +else: + rest_lib_dir = "/usr/lib/storm/contrib/storm-rest" + storm_bin_dir = "/usr/bin" + +storm_user = config['configurations']['storm-env']['storm_user'] +log_dir = config['configurations']['storm-env']['storm_log_dir'] +pid_dir = status_params.pid_dir +conf_dir = "/etc/storm/conf" +local_dir = config['configurations']['storm-site']['storm.local.dir'] +user_group = config['configurations']['cluster-env']['user_group'] +java64_home = config['hostLevelParams']['java_home'] +jps_binary = format("{java64_home}/bin/jps") +nimbus_port = config['configurations']['storm-site']['nimbus.thrift.port'] +nimbus_host = config['configurations']['storm-site']['nimbus.host'] +rest_api_port = "8745" +rest_api_admin_port = "8746" +rest_api_conf_file = format("{conf_dir}/config.yaml") +storm_env_sh_template = config['configurations']['storm-env']['content'] + +if 'ganglia_server_host' in config['clusterHostInfo'] and \ + len(config['clusterHostInfo']['ganglia_server_host'])>0: + ganglia_installed = True + ganglia_server = config['clusterHostInfo']['ganglia_server_host'][0] + ganglia_report_interval = 60 +else: + ganglia_installed = False + +security_enabled = config['configurations']['cluster-env']['security_enabled'] + +if security_enabled: + _hostname_lowercase = config['hostname'].lower() + kerberos_domain = config['configurations']['cluster-env']['kerberos_domain'] + _storm_principal_name = config['configurations']['storm-env']['storm_principal_name'] + storm_jaas_principal = _storm_principal_name.replace('_HOST',_hostname_lowercase) + storm_keytab_path = config['configurations']['storm-env']['storm_keytab'] + + if hdp_stack_version != "" and compare_versions(hdp_stack_version, '2.2') >= 0: + storm_ui_keytab_path = config['configurations']['storm-env']['storm_ui_keytab'] + _storm_ui_jaas_principal_name = config['configurations']['storm-env']['storm_ui_principal_name'] + storm_ui_host = default("/clusterHostInfo/storm_ui_server_hosts", []) + storm_ui_jaas_principal = _storm_ui_jaas_principal_name.replace('_HOST',storm_ui_host[0].lower()) + + storm_bare_jaas_principal = _storm_principal_name.replace('_HOST','').replace('@'+kerberos_domain,'') + + + + _nimbus_principal_name = config['configurations']['storm-env']['nimbus_principal_name'] + nimbus_jaas_principal = _nimbus_principal_name.replace('_HOST',nimbus_host.lower()) + nimbus_bare_jaas_principal = _nimbus_principal_name.replace('/_HOST','').replace('@'+kerberos_domain,'') + nimbus_keytab_path = config['configurations']['storm-env']['nimbus_keytab'] + +ams_collector_hosts = default("/clusterHostInfo/metric_collector_hosts", []) +has_metric_collector = not len(ams_collector_hosts) == 0 +if has_metric_collector: + metric_collector_host = ams_collector_hosts[0] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py new file mode 100644 index 0000000..ec7deec --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py @@ -0,0 +1,58 @@ +#!/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. + +""" + +import sys +from resource_management import * +from storm import storm +from service import service +from service_check import ServiceCheck + + +class StormRestApi(Script): + def install(self, env): + self.install_packages(env) + self.configure(env) + + def configure(self, env): + import params + env.set_params(params) + + storm() + + def start(self, env): + import params + env.set_params(params) + self.configure(env) + + service("rest_api", action="start") + + def stop(self, env): + import params + env.set_params(params) + + service("rest_api", action="stop") + + def status(self, env): + import status_params + env.set_params(status_params) + check_process_status(status_params.pid_rest_api) + +if __name__ == "__main__": + StormRestApi().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py new file mode 100644 index 0000000..ed6add5 --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service.py @@ -0,0 +1,84 @@ +#!/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 resource_management import * +import time + + +def service( + name, + action='start'): + import params + import status_params + + pid_file = status_params.pid_files[name] + no_op_test = format("ls {pid_file} >/dev/null 2>&1 && ps -p `cat {pid_file}` >/dev/null 2>&1") + + if name == "logviewer" or name == "drpc": + tries_count = 12 + else: + tries_count = 6 + + if name == 'ui': + process_grep = "backtype.storm.ui.core$" + elif name == "rest_api": + process_grep = format("{rest_lib_dir}/storm-rest-.*\.jar$") + else: + process_grep = format("storm.daemon.{name}$") + + find_proc = format("{jps_binary} -l | grep {process_grep}") + write_pid = format("{find_proc} | awk {{'print $1'}} > {pid_file}") + crt_pid_cmd = format("{find_proc} && {write_pid}") + + if action == "start": + if name == "rest_api": + process_cmd = format("{java64_home}/bin/java -jar {rest_lib_dir}/`ls {rest_lib_dir} | grep -wE storm-rest-[0-9.-]+\.jar` server") + cmd = format("{process_cmd} {rest_api_conf_file} > {log_dir}/restapi.log 2>&1") + else: + cmd = format("env JAVA_HOME={java64_home} PATH=$PATH:{java64_home}/bin storm {name} > {log_dir}/{name}.out 2>&1") + + Execute(cmd, + not_if=no_op_test, + user=params.storm_user, + wait_for_finish=False, + path=params.storm_bin_dir + ) + Execute(crt_pid_cmd, + user=params.storm_user, + logoutput=True, + tries=tries_count, + try_sleep=10, + path=params.storm_bin_dir + ) + + elif action == "stop": + process_dont_exist = format("! ({no_op_test})") + pid = format("`cat {pid_file}`") + Execute(format("sudo kill {pid}"), + not_if=process_dont_exist + ) + Execute(format("sudo kill -9 {pid}"), + not_if=format("sleep 2; {process_dont_exist} || sleep 20; {process_dont_exist}"), + ignore_failures=True + ) + File(pid_file, + action = "delete", + ) http://git-wip-us.apache.org/repos/asf/ambari/blob/dc534389/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service_check.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service_check.py new file mode 100644 index 0000000..2661e6f --- /dev/null +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/service_check.py @@ -0,0 +1,49 @@ +#!/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 resource_management import * +from resource_management.libraries.functions import get_unique_id_and_date + +class ServiceCheck(Script): + def service_check(self, env): + import params + env.set_params(params) + + unique = get_unique_id_and_date() + + File("/tmp/wordCount.jar", + content=StaticFile("wordCount.jar") + ) + + cmd = format("env JAVA_HOME={java64_home} storm jar /tmp/wordCount.jar storm.starter.WordCountTopology WordCount{unique} -c nimbus.host={nimbus_host}") + + Execute(cmd, + logoutput=True, + path=params.storm_bin_dir, + user=params.storm_user + ) + + Execute(format("env JAVA_HOME={java64_home} storm kill WordCount{unique}"), + path=params.storm_bin_dir, + user=params.storm_user + ) + +if __name__ == "__main__": + ServiceCheck().execute()
