blob: 52c67b84443d92ee3431639c21a18f5ed527c65e [file] [log] [blame]
#########################################
### This is the default configuration for gearpump
### To use the application, you at least need to change gearpump.cluster to point to right master
#########################################
### Configurations that are shared by all services and all user applications...
gearpump {
##############################
### Required to change!!
### You need to set the master cluster address here
###
###
### For example, you may start three master
### on node1: bin/master -ip node1 -port 3000
### on node2: bin/master -ip node2 -port 3000
### on node3: bin/master -ip node3 -port 3000
###
### Then you need to set the cluster.masters = ["node1:3000","node2:3000","node3:3000"]
cluster {
masters = ["127.0.0.1:3000"]
}
##############################
### Required to change!!
### You need to set the actual host name here
###
hostname = "127.0.0.1"
## How many slots each worker contains
worker.slots = 1000
## The class responsable for launching the executor process.
## User can switch to "org.apache.gearpump.cluster.worker.CGroupProcessLauncher" to enable CGroup support.
worker.executor-process-launcher = "org.apache.gearpump.cluster.worker.DefaultExecutorProcessLauncher"
## To enable worker use cgroup to make resource isolation,
## set gearpump.worker.executor-process-launcher = "org.apache.gearpump.cluster.worker.CGroupProcessLauncher"
##
## Before enable it, you should also make sure:
## 1. Linux version (>= 2.6.18)
## 2. Have installed cgroup (check the file's existence:/proc/cgroups)
## You can get more information from http://gearpump.apache.org/releases/latest/deployment-resource-isolation.html
##
## For cgroup root, it represents the root node in CGroup's hierarchythe.
## It's full path in local file system is "${cpu_mount_point} + root".
## The cpu_mount_point is the cpu subsystem's mount poing in CGroup.
## The root dir should be consistent with the part configured in /etc/cgconfig.conf
cgroup {
root = "gearpump"
## This config only works when cgroup is enabled.
## The value means the number of CPU cores per executor can use, -1 means no limitation.
cpu-core-limit-per-executor = 1
}
## Whether to enable remote-debug mode.
## In remote debug mode, every executor process will bind to a free port, and
## listen for remote jvm debug.
remote-debug-executor-jvm = false
### When the resource cannot be allocated in the timeout, then
### the appmaster will shutdown itself.
resource-allocation-timeout-seconds = 120
##
## Executor share same process of worker
worker.executor-share-same-jvm-as-worker = false
## Number of executors to launch when starting an application
application.executor-num = 1
###########################
### Change the dispather for tasks
### If you don't know what this is about, don't change it
###########################
task-dispatcher = "gearpump.shared-thread-pool-dispatcher"
### verbose gc
### turn on JVM verbose GC
### We will use -verbose:gc -Xloggc: -XX:+PrintGCDetails
### -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution
### -XX:+PrintGCApplicationConcurrentTime
### -XX:+PrintGCApplicationStoppedTime
verbose-gc = false
###########################
### Metrics setting,
### If you want to use metrics, please change
###########################
### Flag to enable metrics
metrics {
enabled = true
### We will take one metric out of ${sample.rate}
### This config will slightly impact the application's performance, larger rate often brings higher throughput.
sample-rate = 1
report-interval-ms = 3000
# reporter = "logfile"
# reporter = "graphite"
reporter = "akka"
graphite {
## Graphite host settings
host = "127.0.0.1"
port = 2003
}
logfile {
}
## Coarse-grain history metrics, which have a larger timespan but sparse data points
retainHistoryData {
# max hours of history data to retain
# Note: due to implementation limitation(we store all history in memory),
# please don't set this to too big which may exhaust memory.
hours = 72
# time interval between two data points for history data (unit: ms)
# Usually this value is set to a big value so that we only store
# coarse-grain data
intervalMs = 3600000
}
## fine-grain recent metrics which just happened, which have a smaller timespan but dense data points
retainRecentData {
# max seconds of recent data to retain,
# THis is for the fine-grain data
seconds = 300
# time interval between two data points for recent data (unit: ms)
intervalMs = 15000
}
akka {
### For this reporter, at most we will return max-limit-on-query metric item.
max-limit-on-query = 1000
### Whitelist for Metrics Aggregator class.
### See class [[MetricsAggregator]] for more information.
metrics-aggregator-class {
## Format org.apache.gearpump.KeyFullClassName = ""
}
}
}
#######################################
### Logging settings
#######################################
# The log dir for daemon processes
log.daemon.dir = "logs"
# The log dir for applications
log.application.dir = "logs"
serializers {
## Follow this format when adding new serializer for new message types
# "yourpackage.YourClass" = "yourpackage.YourSerializerForThisClass"
## If you intend to use default serializer for this class, then you can write this
# "yourpackage.YourClass" = ""
}
### client's timeout (in second) to connect to master and wait for the response
masterclient.timeout = 90
### Gearpump has built-in serialization framework using Kryo.
### User are allowed to use a different serialization framework, like Protobuf
### See [org.apache.gearpump.serializer.FastKryoSerializationFramework] to find how
### a custom serialization framework can be defined.
serialization-framework = "org.apache.gearpump.serializer.FastKryoSerializationFramework"
### Define where the submitted jar file will be stored at
### This path follows the hadoop path schema
### For HDFS, use hdfs://host:port/path/
### For HDFS HA, use hdfs://namespace/path/
### For shared NFS folder, use file:///your_nfs_mapping_directory
### jarstore.rootpath = "jarstore/" will points to relative directory where master is started.
### jarstore.rootpath = "/jarstore/" will points to absolute directory on master server
jarstore.rootpath = "jarstore/"
#########################
### Scheduller for master, it will use this scheduler to schedule resource for
### different applications.
### If you don't know what is this about, don't change it
#########################
scheduling {
scheduler-class = "org.apache.gearpump.cluster.scheduler.PriorityScheduler"
}
#############################################
# Default Configuration for REST, WebSocket, Http services
#############################################
#########################
### services can be started by a command line tool bin/services
### If you don't know what is this about, don't change it
#########################
services {
host = "0.0.0.0"
http = 8090
supervisor-actor-path = ""
## To get a detail config string with origin and comments, change this to false.
config-render-option-concise = true
}
## Time out setting to start a new executor system
## It takes a bit longer time than expected as a new JVM is created
start-executor-system-timeout-ms = 120000
#############################################
## Default Configuration for Gearpump Netty transport layer
## If you don't know what is this about, don't change it
#############################################
netty {
buffer-size = 5242880
max-retries = 30
base-sleep-ms = 100
max-sleep-ms = 1000
message-batch-size = 262144
flush-check-interval = 5
dispatcher = "gearpump.shared-thread-pool-dispatcher"
}
###################
### Appmaster JVM argument configuration
###################
appmaster {
vmargs = "-server -Xms512M -Xmx1024M -Xss1M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseParNewGC -XX:NewRatio=3 -Djava.rmi.server.hostname=localhost"
extraClasspath = ""
}
###################
### Executor argument configuration
### Executor JVM can contains multiple tasks
###################
executor {
vmargs = "-server -Xms512M -Xmx1024M -Xss1M -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseParNewGC -XX:NewRatio=3 -Djava.rmi.server.hostname=localhost"
extraClasspath = ""
}
### Streaming related configuration
streaming {
## We will timeout the task if it cannot register itself to AppMaster in time.
register-task-timeout-ms = 120000
## ack once after sending ack-once-every-message-count messages.
ack-once-every-message-count = 100
## max pending message per task to task connection. If pending message size is
## over this, then the flow control will not allow further sending.
## This value should be bigger than ack-once-every-message-count
max-pending-message-count-per-connection = 1000
}
##################################
### Akka Dispatcher configurations
### If you don't know what is this about, don't change it
##################################
shared-thread-pool-dispatcher {
mailbox-type = "akka.dispatch.SingleConsumerOnlyUnboundedMailbox"
throughput = 100
fork-join-executor {
parallelism-factor = 2
parallelism-max = 8
parallelism-min = 2
}
}
single-thread-dispatcher {
type = PinnedDispatcher
}
###########################
### Configuration for yarn module
###########################
yarn {
## By default the owner of yarn application(Here is a Gearpump cluster) is the one who
## launches yarnclient.
## Now you delegat to other users by setting following config.
# user = "guest"
client {
package-path = "/usr/lib/gearpump/gearpump.zip"
}
applicationmaster {
## Memory of YarnAppMaster
command = "$JAVA_HOME/bin/java -Xmx512m"
memory = "512"
vcores = "1"
queue = "default"
}
master {
## Memory of master daemon
command = "$JAVA_HOME/bin/java -Xmx512m"
memory = "512"
vcores = "1"
}
worker {
## memory of worker daemon
command = "$JAVA_HOME/bin/java -Xmx512m"
containers = "1"
## This also contains all memory for child executors.
memory = "4096"
vcores = "1"
}
services {
enabled = true
}
}
}
### Configuration only visible to master nodes..
gearpump-master {
extensions = [
"akka.cluster.ddata.DistributedData$"
]
akka {
#########################################
### For log level of Master, you need to change both log4j.properties and this entry
#########################################
loglevel = "INFO"
log-dead-letters = off
log-dead-letters-during-shutdown = off
actor {
## Master forms a akka cluster
provider = "akka.cluster.ClusterActorRefProvider"
}
cluster {
roles = ["master"]
## TODO: in integration test, 15s may be too small
## auto-down-unreachable-after = 90s
## The value of this setting will impact master HA recovery time
auto-down-unreachable-after = 15s
}
remote {
log-remote-lifecycle-events = off
}
}
}
### Configuration only visible to worker nodes...
gearpump-worker {
## Add worker overrided config
akka {
#########################################
### For log level of Worker, you need to change both log4j.properties and this entry
#########################################
loglevel = "INFO"
log-dead-letters = off
log-dead-letters-during-shutdown = off
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
cluster {
roles = ["worker"]
}
remote {
log-remote-lifecycle-events = off
}
}
}
#########################################
### For log level of Akka class, you need to change both log4j.properties and this entry
#########################################
#akka.loglevel = "INFO"
### configurations only visible to UI server.
gearpump-ui {
## Security related settings
gearpump.ui-security {
## Whether enable authentication for UI Server
authentication-enabled = false
## User-Password based authenticator
##
## User-Password based authenticator is always enabled when
## gearpump.ui-security.authentication-enabled = true
##
## With User-Password based authenticator inplace, user can still enable auxiliary
## authentication channel like OAuth2.
##
## User can replace this with a custom User-Password based authenticator,
## which implements interface org.apache.gearpump.security.Authenticator
##
authenticator = "org.apache.gearpump.security.ConfigFileBasedAuthenticator"
## Configuration options for authenticator org.apache.gearpump.security.ConfigFileBasedAuthenticator
config-file-based-authenticator = {
## Format: username = "password_hash_value"
## password_hash_value can be generated by running shell tool:
## bin/gear org.apache.gearpump.security.PasswordUtil -password <your raw password>
## Admin users have super permission to do everything
admins = {
## Default Admin. Username: admin, password: admin
## !!! Please replace this builtin account for production cluster for security reason. !!!
"admin" = "AeGxGOxlU8QENdOXejCeLxy+isrCv0TrS37HwA=="
}
## normal user have special permission for certain operations.
users = {
## "user" = "AeGxGOxlU8QENdOXejCeLxy+isrCv0TrS37HwA=="
}
## Guest user can only view the UI with minimum permission. With no permission to submit/change/kill
## a running application.
guests = {
## Default guest. Username: guest, Password: guest
## !!! Please replace this builtin account for production cluster for security reason. !!!
"guest" = "ws+2Dy/FHX4cBb3uKGTR64kZWlWbC91XZRRoew=="
}
}
## Whether to enable auxiliary OAuth2 Authentication channel.
##
## NOTE: This requires config {{{gearpump.ui-security.authentication-enabled = true}}}
##
## NOTE: User-Password based authenticator will also be enabled.
##
## NOTE: OAuth2 authentication requires that the Gearpump server can directly access the OAuth2 server.
## Please make sure you have configured web proxy properly if applies.
## To configure http proxy on Windows:
## {{{
## > set JAVA_OPTS=-Dhttp.proxyHost=xx.com -Dhttp.proxyPort=8088 -Dhttps.proxyHost=xx.com -Dhttps.proxyPort=8088
## > bin\services
## }}}
##
## To configure http proxy on Linux:
## {{{
## $ export JAVA_OPTS="-Dhttp.proxyHost=xx.com -Dhttp.proxyPort=8088 -Dhttps.proxyHost=xx.com -Dhttps.proxyPort=8088"
## $ bin/services
## }}}
oauth2-authenticator-enabled = true
oauth2-authenticators {
## Please modify the list if you have customized OAuth2 provider, like Facebook, Twitter...
## OAuth2 Authenticator with Google Plus+
##
## For steps to enable OAuth2 Authentication on Google, please view docs/deployment-ui-authentication.md
##
"google" {
"class" = "org.apache.gearpump.services.security.oauth2.impl.GoogleOAuth2Authenticator"
## Please replace "127.0.0.1:8090" with your address of UI service.
"callback" = "http://127.0.0.1:8090/login/oauth2/google/callback"
## Client Id and client secret you applied on Google.
##
## !!NOTE!! Replace clientID and clientSecret with your own application to avoid
## potential privacy leakage, the values set here represents as a test application.
"clientid" = "170234147043-a1tag68jtq6ab4bi11jvsj7vbaqcmhkt.apps.googleusercontent.com"
"clientsecret" = "ioeWLLDipz2S7aTDXym2-obe"
## The default role we assign to user when user get authenticated by Google.
##
## TODO: should allow some user group have a different role, like admin.
##
## Available values: guest, user, admin, with:
## 1. guest can only view the application status,
## 2. user can submit and modify application.
## 3. admin can manage the cluster resource, like adding or removing machines.
"default-userrole" = "guest"
## Login icon disiplayed on UI server frontend
icon = "/icons/google.png"
}
## OAuth2 Authenticator for CloudFoundry UAA server (https://github.com/cloudfoundry/uaa/).
##
## For steps to enable OAuth2 Authentication for UAA, please view docs/deployment-ui-authentication.md
##
"cloudfoundryuaa" {
"class" = "org.apache.gearpump.services.security.oauth2.impl.CloudFoundryUAAOAuth2Authenticator"
## Please replace "127.0.0.1:8090" with your address of UI service.
"callback" = "http://127.0.0.1:8090/login/oauth2/cloudfoundryuaa/callback"
## Client Id and client secret you applied on UAA.
##
## !!NOTE!! Replace clientID and clientSecret with your own application to avoid
## potential privacy leakage, the values set here serves as a test application.
"clientid" = "<your client id registered on UAA>"
"clientsecret" = "<your client secret registered on UAA>"
## The default role we assign to user when user get authenticated by UAA.
##
## TODO: should allow some user group have a different role, like admin.
##
## Available values: guest, user, admin, with:
## 1. guest can only view the application status,
## 2. user can submit and modify application.
## 3. admin can manage the cluster resource, like adding or removing machines.
"default-userrole" = "guest"
## Login icon disiplayed on UI server frontend
icon = "/icons/uaa.png"
## Cloud Foundry UAA Login Endpoint. Prefixed by "http://" or "https://"
##
## !!NOTE!! Please relace uaahost with your actual Cloudfounudry UAA login endpoint, the
## value set here serves as an example.
uaahost = "http://<cloud foundry login endpoint>"
## Whether to enable additional authorization check.
## If the user fails the check, then Gearpump would log user out.
additional-authenticator-enabled = true
## Define how to do additional authorization check. The class should implement
## interface CloudFoundryUAAOAuth2Authenticator.AdditionalAuthenticator
additional-authenticator = {
"class" = "org.apache.gearpump.services.security.oauth2.impl.CloudFoundryUAAOAuth2Authenticator$OrganizationAccessChecker"
## Please fill the Cloud Foundry API endpoint and organization GUID
"organization-url" = "http://<cloud foundry api endpoint>/v2/organizations/<organization-guid>"
}
}
}
}
## Akka http dispatcher settings.
akka.stream.materializer.dispatcher = "gearpump.ui-default-dispatcher"
## Timeout settings for akka-http
akka.http.server.idle-timeout = 300 s
## When uploading a large job jar, it takes a long time to launch the job jar in cluster
## before we respond to client.
akka.http.server.request-timeout = 600 s
}
## Configurations only visible on Linux or Mac.
gearpump-linux {
### On windows, the value must be larger than 10ms, check
### https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/Scheduler.scala#L204
akka.scheduler.tick-duration = 1
}