Configuration
AtlasDB Configuration
AtlasDB uses a YAML based configuration file with a default root configuration block denoted by atlasdb
.
The primary config block for your AtlasDB client will be keyValueServiceConfig
. This is where all of the KVS specific
parameters will go. Please see Key Value Service Configurations for details on specific KVS configurations.
In addition to the keyValueServiceConfig
, you must specify a configuration for the timestamp and lock services.
If you are using an embedded timestamp and lock service, see the Leader Configuration documentation.
If you are using the external Timelock service, then see the Timelock client configuration.
Furthermore, you may configure a namespace
for your AtlasDB client.
If using TimeLock, this will be the name of your TimeLock client; if using Cassandra, this will also be the name of your keyspace.
If this is not configured, we will read the client
from the TimeLock client block, and the keyspace
directly from the Cassandra KVS config block respectively.
Note that AtlasDB will fail to start if any pair of the following are not equal: the namespace
, the Cassandra keyspace
or the TimeLock client
.
Previously, users’ Cassandra keyspaces and TimeLock clients were configured independently; this could lead to data corruption if one misconfigured one of the parameters.
For a full list of the configurations available at the atlasdb
root level, see
AtlasDbConfig.java.
A second root configuration block can be specified for live-reloadable configs.
Parameters related to Sweep can be specified there and will be reloaded in each sweep run.
Parameters concerning batching of timestamp requests may also be configured; see Timestamp Client for more details.
Some of the KeyValueService parameters can be live-reloadable if specified in this block under the keyValueService
config.
For a full list of the configurations available at this block, see
AtlasDbRuntimeConfig.java.
Example Configuration
atlasdb:
namespace: yourapp
keyValueService:
type: cassandra
servers:
- cassandra-1:9160
- cassandra-2:9160
- cassandra-3:9160
poolSize: 30
credentials:
username: cassandra
password: cassandra
sslConfiguration:
trustStorePath: var/security/truststore.jks
replicationFactor: 3
mutationBatchCount: 10000
mutationBatchSizeBytes: 10000000
fetchBatchCount: 1000
autoRefreshNodes: false
leader:
# This should be at least half the number of nodes in your cluster
quorumSize: 2
learnerLogDir: var/data/paxosLogs
acceptorLogDir: var/data/paxosLogs
localServer: https://host1:3828
lockCreator: https://host1:3828
# This should be the same for every node
leaders:
- https://host1:3828 # If ssl is not enabled, then the hosts must be specified as http
- https://host2:3828
- https://host3:3828
sslConfiguration:
trustStorePath: var/security/truststore.jks
atlasdb-runtime:
timestampClient:
enableTimestampBatching: true
keyValueService:
type: cassandra
sweepReadThreads: 16
internalSchema:
targetTransactionsSchemaVersion: 3