| # ----------------------------------------------------------------------- |
| # 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. |
| # ----------------------------------------------------------------------- |
| |
| # ==================================================================================== |
| # This configuration file contains most of the specifications for DUCC. |
| # |
| # Two other important customizable files define the classes and nodes. |
| # |
| # The class definition file is specified by the property 'ducc.rm.class.definitions' |
| # and a sample called ducc.classes has been provided in DUCC_HOME/resources. |
| # |
| # Node definitions are by default taken from ducc.nodes but this may be overridden |
| # with the -n option on start_ducc |
| # |
| # For a new installation the first two entries below MUST be modified. |
| # |
| # ==================================================================================== |
| |
| |
| # Identify the node where DUCC runs. Updated by ducc_post_install. |
| ducc.head = <head-node> |
| |
| # Name the JVM. Updated by ducc_post_install |
| ducc.jvm = <full-path-to-java-command> |
| |
| # The name of the cluster as shown by the Web Server |
| ducc.cluster.name=Apache UIMA-DUCC |
| |
| # Name any site-local jars |
| #ducc.local.jars = |
| |
| # Declare which components to load into the jvm on process startup. |
| ducc.jms.provider=activemq |
| |
| # --------------------------------------------------- |
| # --------------------------------------------------- |
| # Define the ActivemQ broker configuration. |
| # ducc.broker.protocol - Ddefine broker protocol. Should typically be |
| # tcp. *** Dont specify : or // *** |
| # ducc.broker.hostname - The name of the host where the broker is running. |
| # ducc.broker.port - The broker's connection port |
| # ducc.broker.url.decoration - The broker *client* url decoration. |
| # recoveryInterval=30000 - Specifies an interval between recovery attempts, |
| # i.e when a connection is being refreshed, |
| # in milliseconds |
| # jms.useCompression=true - Compress message body |
| # ducc.broker.name - the broker name - must match the actual broker name |
| # in the broker config. THIS IS NOT THE BROKER HOSTNAME |
| # WHICH IS CONFIGURED IN ducc.broker.hostname. |
| # ducc.broker.jmx.port - the Broker's jmx port |
| # |
| ducc.broker.protocol=tcp |
| ducc.broker.hostname=${ducc.head} |
| ducc.broker.port=61617 |
| |
| # Broker decorations: |
| # maxInactivityDuration: 0, turn off broker detection of inactive connections |
| # useCompression: true, compress JMS cargo |
| # closeAsync: false, block waiting until the JMS connection is closed. This |
| # setting reduces number of open sockets. |
| ducc.broker.url.decoration=wireFormat.maxInactivityDuration=0&jms.useCompression=true&closeAsync=false |
| |
| |
| ducc.broker.name=localhost |
| ducc.broker.jmx.port=1100 |
| # |
| # ActiveMQ credentials file used to authenticate DUCC daemons with the broker. |
| # |
| ducc.broker.credentials.file=${DUCC_HOME}/activemq/conf/ducc-broker-credentials.properties |
| |
| # ActiveMQ Auto-management configuration |
| # docc.broker.automanage - if true, DUCC will start and stop the broker as needed. |
| # Otherwise, the installation is responsible for |
| # manageing ActiveMQ |
| # ducc.broker.memor.options - If automanaged, the memory configuration passed to the JVM |
| # ducc.broker.configuration - If automanaged, the location of the ActiveMQ broker configuration |
| # ducc.broker.home - If automanaged, the location of the ActiveMQ installation |
| # ducc.broker.server.url.decoration - If automanaged, the broker URL decoration |
| # |
| |
| ducc.broker.automanage = true |
| ducc.broker.memory.options = -Xmx1G |
| |
| ducc.broker.configuration = conf/activemq-ducc.xml |
| ducc.broker.home = ${DUCC_HOME}/activemq |
| |
| # transport.soWriteTimeout=45000, 45sec timeout on write operations to the socket. |
| ducc.broker.server.url.decoration = transport.soWriteTimeout=45000 |
| |
| # To enable tracing of RM messages arriving in OR and NodeMetrics arriving in WS. |
| #ducc.transport.trace = orchestrator:RmStateDuccEvent webserver:NodeMetricsUpdateDuccEvent |
| |
| # By default, use Linux OS authentication (via PAM) |
| #ducc.authentication.implementer=org.apache.uima.ducc.ws.authentication.LinuxAuthenticationManager |
| # Specify users allowed to login (default is all users can login) |
| #ducc.authentication.users.include = user1 user2 |
| # Specify users not allowed to login (default is all users can login; if user is in both include and exclude lists, then exclude is enforced) |
| #ducc.authentication.users.exclude = user1 user3 |
| # Specify groups allowed to login (default is all groups can login) |
| #ducc.authentication.groups.include = groupA groupB |
| # Specify groups not allowed to login (default is all groups can login; if group is in both include and exclude lists, then exclude is enforced) |
| #ducc.authentication.groups.exclude = groupA groupC |
| |
| # Access UIMA message catalogs |
| ducc.locale.language=en |
| ducc.locale.country=us |
| |
| # Specify a minimum amount of free swap space available on a node. |
| # If an agent detects free swap space dipping below the value defined |
| # below, it will find the fattest (in terms of memory) process in its |
| # inventory and kill it. The value of the parameter below is expressed |
| # in MB. |
| # Initially disabled by setting the threshold at 0. |
| # Set this to 1GB equiv |
| ducc.node.min.swap.threshold=0 |
| |
| # administrative endpoint for all ducc components |
| ducc.admin.endpoint=ducc.admin.channel |
| # endpoint type choices[topic] |
| ducc.admin.endpoint.type=topic |
| |
| |
| # jmx port number for Ducc process. Each Ducc process will attempt |
| # to use this port for its JMX Connector. If the port is not available |
| # port+1 will be used until an available port is found. |
| ducc.jmx.port=2099 |
| |
| ducc.agent.jvm.args = -Xmx500M |
| ducc.orchestrator.jvm.args = -Xmx1G |
| ducc.rm.jvm.args = -Xmx1G |
| ducc.pm.jvm.args = -Xmx1G |
| ducc.sm.jvm.args = -Xmx1G |
| ducc.ws.jvm.args = -Xmx2G -Djava.util.Arrays.useLegacyMergeSort=true |
| |
| # ========== CLI Configuration block ========== |
| # These environment values are included on job/service/AP submissions |
| ducc.environment.propagated = USER HOME LANG |
| |
| # No timeout on CLI requests |
| ducc.cli.httpclient.sotimeout=0 |
| #------------------------------------------------------------------------------ |
| # off, // CLI submit and cancel signature enforcement disabled |
| # on, // CLI submit and cancel signature enforcement enabled (default) |
| ducc.signature.required=on |
| #------------------------------------------------------------------------------ |
| |
| # ========== Web Server Configuration block ========== |
| ducc.ws.configuration.class=org.apache.uima.ducc.ws.config.WebServerConfiguration |
| # Optionally configure the webserver to run on a non-head node |
| # ducc.ws.node = my.node.com |
| # Optionally configure the webserver IP address |
| # ducc.ws.ipaddress = <fill in an IP address> |
| # Optionally configure the webserver IP port for HTTP requests, default is 42133 |
| ducc.ws.port = 42133 |
| # Optionally configure the webserver IP port for HTTPS requests, default is 42155 |
| ducc.ws.port.ssl = 42155 |
| # Optionally configure the webserver ssl pw for HTTPS requests, default is quackquack |
| ducc.ws.port.ssl.pw = quackquack |
| # Optionally configure the webserver login session timeout, in minutes, default is 60 |
| ducc.ws.session.minutes = 60 |
| # Optionally configure the webserver job automatic cancel timeout, default is 10. To disable feature specify 0. |
| # Employed when user specifies --wait_for_completion flag on job submission, in which case the job monitor |
| # program must visit http://<host>:<port>/ducc-servlet/proxy-job-status?id=<job-id> within this expiry time |
| # else the job will be automatically canceled (unless feature disabled) by the webserver acting as the |
| # administrator ducc (which must be specified in the ducc.administrators file). |
| ducc.ws.automatic.cancel.minutes = 5 |
| # Optionally configure the webserver max history entries for each of Jobs/Reservations/Services |
| ducc.ws.max.history.entries = 4096 |
| # Specify the ducc jsp comp dir |
| ducc.ws.jsp.compilation.directory = /tmp/ducc/jsp |
| # Specify login enabled (default is true) |
| ducc.ws.login.enabled = false |
| # ========== Web Server Configuration block ========== |
| |
| # ========== Job Driver Configuration block ========== |
| ducc.jd.configuration.class=org.apache.uima.ducc.jd.config.JobDriverConfiguration |
| ducc.jd.state.update.endpoint=ducc.jd.state |
| # endpoint type choices[topic] |
| ducc.jd.state.update.endpoint.type=topic |
| ducc.jd.state.publish.rate=15000 |
| # This is a human-readable string used to form queue names for the JMS queues used to pass |
| # CASs from the Job Driver to the Job Processes. The completed queue named comprises the prefix |
| # concatenated with the DUCC assigned Job number. |
| ducc.jd.queue.prefix=ducc.jd.queue. |
| # After dispatching a work item to UIMA-AS client for processing, the number of minutes that the Job Driver will |
| # wait for two callbacks (queued and assigned) before considering the work item lost. The elapsed time for the |
| # callbacks is normally sub-second. Intermittent network problems may cause unusual spikes. |
| # If not specified, default value is 5 minutes. |
| ducc.jd.queue.timeout.minutes=5 |
| # The following 5 values comprise the specification used by the DUCC Orchestrator daemon to request an |
| # allocation from the DUCC Resource Manager for Job Driver use. The values given below are the defaults. |
| ducc.jd.host.class=JobDriver |
| ducc.jd.host.description=Job Driver |
| ducc.jd.host.memory.size=2GB |
| ducc.jd.host.number.of.machines=1 |
| ducc.jd.host.user=System |
| # The next 3 values are related - each JD is assigned a piece of the Job Driver host memory which, |
| # along with the size of the CR's type system, limits the number of active work-item CASes in a job. |
| # To avoid swapping the max heap size should also be restricted. |
| # Memory size in MB allocated for each JD (default 300) |
| ducc.jd.share.quantum = 400 |
| # Max number of work-item CASes for each job (default is "unlimited") |
| ducc.threads.limit = 500 |
| # Extra JVM args to be appended to any user-supplied "driver_jvm_args" |
| # Note: should contain an Xmx a little below the "ducc.jd.share.quantum" value |
| # the Xmx entry is ignored if the user has speccified one |
| ducc.driver.jvm.args = -Xmx300M |
| |
| # Extra JVM args to be appended to any user-supplied "process_jvm_args" |
| # ducc.process.jvm.args=-XX:+HeapDumpOnOutOfMemoryError |
| # ========== Job Driver Configuration block ========== |
| |
| # ========== Service Manager Configuration block ========== |
| # Class used to implement the SM - internals only, don't change. |
| ducc.sm.configuration.class=org.apache.uima.ducc.sm.config.ServiceManagerConfiguration |
| # Name of the AMQ topic used to communicate wiht SM - internals, don't change |
| ducc.sm.state.update.endpoint=ducc.sm.state |
| # AMQ protocol to use - internals, don't change |
| ducc.sm.state.update.endpoint.type=topic |
| # How often services are monitored to insure they're responding, in milliseconds |
| ducc.sm.meta.ping.rate = 60000 |
| # How many consecutive missed pings are required to mark a service unresponive |
| ducc.sm.meta.ping.stability = 10 |
| # How long to wait for a ping to respond, in milliseconds |
| ducc.sm.meta.ping.timeout = 15000 |
| # Port the CLI uses to contact SM |
| ducc.sm.http.port=19989 |
| # Node where SM resides |
| ducc.sm.http.node=${ducc.head} |
| # How long to keep a reference-started service alive after the last referencing job exits |
| ducc.sm.default.linger=300000 |
| # === END == Service Manager Configuration block ========== |
| |
| # ========== Orchestrator Configuration block ========== |
| ducc.orchestrator.configuration.class=org.apache.uima.ducc.orchestrator.config.OrchestratorConfiguration |
| #------------------------------------------------------------------------------ |
| # cold, // Recover: All is lost JD host: employ new |
| # warm, // Recover: Unmanaged Reservations only (default) JD host: employ new |
| ducc.orchestrator.start.type=warm |
| #------------------------------------------------------------------------------ |
| ducc.orchestrator.state.update.endpoint=ducc.orchestrator.state |
| # endpoint type choices[topic] |
| ducc.orchestrator.state.update.endpoint.type=topic |
| ducc.orchestrator.state.publish.rate=10000 |
| #------------------------------------------------------------------------------ |
| ducc.orchestrator.abbreviated.state.update.endpoint=ducc.orchestrator.abbreviated.state |
| # endpoint type choices[topic] |
| ducc.orchestrator.abbreviated.state.update.endpoint.type=topic |
| ducc.orchestrator.abbreviated.state.publish.rate=10000 |
| #------------------------------------------------------------------------------ |
| # How long between between maintenance cycles (in milliseconds) |
| # Each maintenance cycle the orchestrator removes obsolete JD queues (MqReaper) |
| # and performs health related activities (HealthMonitor) including: capping JPs |
| # for a Jobs that have too many initialization failures and terminating Jobs whose |
| # JDs have failed. |
| ducc.orchestrator.maintenance.rate=60000 |
| #------------------------------------------------------------------------------ |
| # orchestrator's jetty http port |
| ducc.orchestrator.http.port=19988 |
| # Node where OR is running. This is needed by CLI to compose a URL to access OR jetty server |
| ducc.orchestrator.http.node=${ducc.head} |
| #------------------------------------------------------------------------------ |
| # Specify if reserving an entire machine is allowed |
| # This could be a bad idea when a cluster has very few, very large machines. |
| ducc.orchestrator.unmanaged.reservations.accepted=true |
| # ========== Orchestrator Configuration block ========== |
| |
| # Resource Manager Configuration block |
| ducc.rm.configuration.class=org.apache.uima.ducc.rm.config.ResourceManagerConfiguration |
| # Queue name for broadcast RM state |
| ducc.rm.state.update.endpoint=ducc.rm.state |
| # If enabled, RM tries to start as soon as it recoveres state from an OR publication, |
| # instread of waiting for init.stability for nodes to check in. |
| ducc.rm.state.update.endpoint.type=topic |
| # Frequency in milliseconds the RM publishes state. Increase to 60000 for larger systems |
| # to avoid thrashing. |
| ducc.rm.state.publish.rate = 10000 |
| # Base size of dram quantum in Gb |
| ducc.rm.share.quantum = 1 |
| # Implementation class for actual scheduling algorithm |
| ducc.rm.scheduler = org.apache.uima.ducc.rm.scheduler.NodepoolScheduler |
| # File defining thescheduler classes - found in DUCC_HOME/resources |
| ducc.rm.class.definitions = ducc.classes |
| # default memory, in GB, if not specified |
| ducc.rm.default.memory = 4 |
| # number of node metrics heartbeats to wait for before rm starts up |
| ducc.rm.init.stability = 2 |
| # number of missed node metrics updates to consider node down |
| ducc.rm.node.stability = 5 |
| # which policy to use when shrinking/evicting shares - alternatively, SHRINK_BY_MACHINE |
| ducc.rm.eviction.policy = SHRINK_BY_INVESTMENT |
| # max nodes to initially allocate until init is complete |
| ducc.rm.initialization.cap = 1 |
| # When true, jobs expand not all at once after init, but a bit slower, doubling each epoch |
| # until max fair-share is set. If false, jobs increase immediately to their fair share, |
| # at the cost of mass evictions. |
| ducc.rm.expand.by.doubling = true |
| # Predict when a job will end and avoid expanding if not needed |
| ducc.rm.prediction = true |
| # Add this fudge factor (milliseconds) to the expansion target when using prediction |
| ducc.rm.prediction.fudge = 120000 |
| # What is minimum number of processes for a job before we do defrag? If a job has less than this amount |
| # RM may attempt defragmentation to bring the processes up to this value. |
| ducc.rm.fragmentation.threshold = 8 |
| |
| # Agent Configuration block |
| ducc.agent.configuration.class=org.apache.uima.ducc.agent.config.AgentConfiguration |
| ducc.agent.request.endpoint=ducc.agent |
| # endpoint type choices[topic] |
| ducc.agent.request.endpoint.type=topic |
| |
| # Endpoint where uima as service wrapper reports status |
| ducc.agent.managed.process.state.update.endpoint=ducc.managed.process.state.update |
| # endpoint type choices[socket] |
| ducc.agent.managed.process.state.update.endpoint.type=socket |
| # endpoint parameters which are transport specific. For socket |
| # transport params are: |
| # - transferExchange=true - include Camel Exchange wrapper in a message |
| # - synch=false - use socket transport for one-way messaging (no replies neeeded) |
| ducc.agent.managed.process.state.update.endpoint.params=transferExchange=true&sync=false |
| |
| ducc.agent.node.metrics.publish.rate=30000 |
| ducc.agent.node.metrics.endpoint=ducc.node.metrics |
| # endpoint type choices[topic] |
| ducc.agent.node.metrics.endpoint.type=topic |
| # Rate at which an agent publishes its process inventory |
| # The agent will only publish at this rate if there are |
| # changes since the last publish. |
| ducc.agent.node.inventory.publish.rate=10000 |
| # If no changes in inventory, publish every 30 intervals defined by ducc.agent.node.inventory.publish.rate |
| ducc.agent.node.inventory.publish.rate.skip=30 |
| ducc.agent.node.inventory.endpoint=ducc.node.inventory |
| # endpoint type choices[topic] |
| ducc.agent.node.inventory.endpoint.type=topic |
| # ducc.agent.launcher.thread.pool.size - Deprecated |
| ducc.agent.launcher.thread.pool.size=10 |
| # enable/disable use of ducc_ling |
| # ducc.agent.launcher.use.ducc_spawn: true, use ducc_ling. Default: false |
| ducc.agent.launcher.use.ducc_spawn=true |
| # specify location of ducc_ling in the filesystem |
| ducc.agent.launcher.ducc_spawn_path=${DUCC_HOME}/admin/ducc_ling |
| # Max amount of time (in millis) agent allows the process to stop before issuing kill -9 |
| ducc.agent.launcher.process.stop.timeout=60000 |
| # Max time in millis allowed for AE initialization. Default 2 hours 7200000. |
| ducc.agent.launcher.process.init.timeout=7200000 |
| # exclude the following user ids while detecting rogue processes |
| ducc.agent.rogue.process.user.exclusion.filter=root,postfix,ntp,nobody,daemon,100 |
| #exclude the following processes while detecting rogue processes |
| ducc.agent.rogue.process.exclusion.filter=sshd:,-bash,-sh,/bin/sh,/bin/bash,grep,ps |
| # Fudge Factor (in terms of percantage) that agent uses to multiply a share size when |
| # determining if a JP exceeds its alloted memory, which is calculated as follows |
| # (fudge factor/100)*share size + share size. If this number exceeds JPs RSS, the agent |
| # kills the process. |
| ducc.agent.share.size.fudge.factor=5 |
| # Enable/Disable CGroup support. |
| ducc.agent.launcher.cgroups.enable=false |
| # Define location of cgroups utils like cgexec. For mixed clusters with different |
| # flavors of unix, the utilities may be in different places. In such case, add a |
| # a comma separated list of paths like this: |
| # ducc.agent.launcher.cgroups.utils.dir=/usr/bin,<OS 1 path>,<OS 2 path> |
| ducc.agent.launcher.cgroups.utils.dir=/usr/bin,/bin |
| # exclusion file to enable node based exclusion for cgroups and aps |
| # syntax: <node>=cgroups,ap |
| # the above will exclude node from using cgroups and/or prevent deployment of APs |
| ducc.agent.exclusion.file=${DUCC_HOME}/resources/exclusion.nodes |
| # |
| # Uncomment the following line to support auto reaping of rogue processes by Ducc's Agent |
| # ducc.agent.rogue.process.reaper.script=${DUCC_HOME}/admin/ducc_reap_rogues.sh |
| # |
| # Process Manager Configuration block |
| ducc.pm.configuration.class=org.apache.uima.ducc.pm.config.ProcessManagerConfiguration |
| ducc.pm.request.endpoint=ducc.pm |
| # endpoint type choices[queue] |
| ducc.pm.request.endpoint.type=queue |
| #------------------------------------------------------------------------------ |
| ducc.pm.state.update.endpoint=ducc.pm.state |
| # endpoint type choices[topic] |
| ducc.pm.state.update.endpoint.type=topic |
| ducc.pm.state.publish.rate=15000 |
| |
| # UIMA AS Managed Process Configuration block |
| ducc.uima-as.configuration.class=org.apache.uima.ducc.agent.deploy.uima.UimaAsServiceConfiguration |
| ducc.uima-as.endpoint=ducc.job.managed.service |
| # endpoint type choices[socket] |
| ducc.uima-as.endpoint.type=socket |
| # endpoint parameters which are transport specific. For socket |
| # transport params are: |
| # - transferExchange=true - include Camel Exchange wrapper in a message |
| # - synch=false - use socket transport for one-way messaging (no replies neeeded) |
| ducc.uima-as.endpoint.params=transferExchange=true&sync=false |
| |
| # saxon8.jar - Saxon is an XSLT and XQuery processor. It is used by UIMA-AS |
| # when deploying a service. |
| ducc.uima-as.saxon.jar.path=file:${DUCC_HOME}/lib/saxon/saxon8.jar |
| |
| # dd2spring.xsl - contains a set of rules used when transforming |
| # UIMA-AS deployment descriptor into SpringFramework's |
| # context file used to deploy UIMA-AS based service. |
| ducc.uima-as.dd2spring.xsl.path=${DUCC_HOME}/resources/dd2spring.xsl |
| |
| # Custom Flow Controller to use for Ducc Job Processes that don't provide a process_DD descriptor |
| ducc.flow-controller.specifier=org.apache.uima.ducc.common.uima.DuccJobProcessFC |
| |
| |
| |