<?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>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 -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host={0},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 -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf</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 -Djava.security.auth.login.config=/etc/storm/storm_jaas.conf -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={0},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>supervisor.enable</name>
    <value>true</value>
    <description>Whether or not the supervisor should launch workers assigned to it. Defaults
       to true -- and you should probably never change this value. This configuration
       is used in the Storm unit tests.</description>
  </property>
  <property>
    <name>worker.childopts</name>
    <value>-Xmx768m -javaagent:/usr/lib/storm/contrib/storm-jmxetric/lib/jmxetric-1.0.4.jar=host={0},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>
