blob: 0378735697d8bb065bc355418d94fbafcfeb7b8d [file] [log] [blame]
# -----------------------------------------------------------------------
# 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