datastax/dse-server

By datastax

Updated 26 days ago

The best distribution of Apache Cassandra™ with integrated Search, Analytics, and Graph capabilities

Image
Databases & Storage
44

5M+

Quick Reference

Where to get help:

DataStax Docker Docs, DataStax Discord, Github, Contact Us for more information on becoming a DataStax Customer

Advanced tutorials are located within DataStax Academy and Studio are available on our Github page

Featured Tutorial - DataStax Enterprise 6 Guided Tour
Where to file issues:

https://github.com/datastax/docker-images/issues

Maintained by

DataStax

What is DataStax Enterprise

Built on the best distribution of Apache Cassandra™, DataStax Enterprise is the always-on database designed to allow you to effortlessly build and scale your apps, integrating graph, search, analytics, administration, developer tooling, and monitoring into a single unified platform. We power your apps' real-time moments so you can create instant insights and powerful customer experiences.

DataStax Enterprise

Creating a DataStax Enterprise container

Use the options described in this section to create DataStax Enterprise server containers.

By default, the DSE server image runs in Cassandra-only mode.. To run with advanced DSE functionality, add the option that enables any combination of search, analytics, and graph to the end of the docker run command.

OptionDescription
-sEnables and starts DSE Search.
-kEnables and starts Analytics.
-gEnables and starts a DSE Graph.

Combine startup options to run more than one feature. For more examples, see Starting DataStax Enterprise as a stand-alone process .

Examples

Create a DSE database container
docker run -e DS_LICENSE=accept --name my-dse -d datastax/dse-server:<version tag>
Create a DSE container with Graph enabled
docker run -e DS_LICENSE=accept --name my-dse -d datastax/dse-server:<version tag> -g
Create a DSE container with Analytics (Spark) enabled
docker run -e DS_LICENSE=accept --name my-dse -d datastax/dse-server:<version tag> -k
Create a DSE container with Search enabled
docker run -e DS_LICENSE=accept --name my-dse -d datastax/dse-server:<version tag> -s
Create a DSE container with Search, Analytics, and Graph enabled
docker run -e DS_LICENSE=accept --name my-dse -d datastax/dse-server:<version tag> -s -k -g

Managing the configuration

Manage the DSE configuration using one of the following options:

  • DSE configuration volume For configuration management, we’re providing a simple mechanism to let you provide custom configuration file(s) without customizing the containers or over using host volumes. You can add any of the approved config files to a single mounted host volume and we’ll handle the hard work of mapping them within the container.

  • DSE environment variables that change the configuration at runtime.

    • Environment variables will trump any other settings meaning that if you set a custom snitch in cassandra.yaml and then a different one with an environment variable, the environment variable setting will be used.
    • DSE uses the default values defined for environment variables unless they are explicitly set at run time or unless overridden with the DSE_AUTO_CONF_OFF environment variable.
  • Docker file/directory volume mounts

  • Docker overlay file system

  • DSE uses the default values defined for the environment variables unless explicitly set at run time.

  • NOTE When using memory resource contraints, you must must set JVM heap size using the environment variable JVM_EXTRA_OPTS or custom cassandra-env.sh or DSE running inside the container due to java not honoring resource limits set for the container. Java utilizes the resources (memory and CPU) of the host. Otherwise DSE will set the heap to 1/4 of the physical ram of the docker host.

Using the DSE config volume

To use this feature:

  1. Create a directory on your local host.
  2. Download and customize the configuration files you want to use from the config-templates page.
  3. Add the custom configuration files to the host directory you created.
    • The file name must match a corresponding configuration file in the image and include all the required values, for example cassandra.yaml, dse.yaml.
  4. Mount the exposed Volume /config to the local directory.
  5. Start the container. For example to start a database node:
docker run -e DS_LICENSE=accept --name my-dse   -v /dse/config:/config -d datastax/dse-server:<version tag>

Note When you make changes to or add config files to the /config volume, you will need to restart your container with docker restart container_name for DSE to pickup the changes. Restarting the container will restart DSE.

Using environment variables

Configure the DSE image by setting environment variables when the container is created using the docker run command -e flag.

VariableSettingDescription
DS_LICENSEacceptRequired. Set to accept to acknowledge that you agree with the terms of the DataStax license. To show the license, set the variable DS_LICENSE to the value accept. The image only starts if the variable set to accept.
LISTEN_ADDRESSIP_addressThe IP address to listen for connections from other nodes. Defaults to the container's IP address.
BROADCAST_ADDRESSIP_addressThe IP address to advertise to other nodes. Defaults to the same value as the LISTEN_ADDRESS.
NATIVE_TRANSPORT_ADDRESSIP_addressThe IP address to listen for client/driver connections. Default: 0.0.0.0.
NATIVE_TRANSPORT_BROADCAST_ADDRESSIP_addressThe IP address to advertise to clients/drivers. Defaults to the same value as the BROADCAST_ADDRESS.
SEEDSIP_addressThe comma-delimited list of seed nodes for the cluster. Defaults to this node's BROADCAST_ADDRESS.
START_RPCtrue \ falseWhether or not to start the Thrift RPC server. Will leave the default in the cassandra.yaml file if not set.
CLUSTER_NAMEstringThe name of the cluster. Default: Test Cluster.
NUM_TOKENSintThe number of tokens randomly assigned to the node. Default: not set .
DCstringDatacenter name. Default: Cassandra.
RACKstringRack name. Default: rack1.
OPSCENTER_IPIP_addressAddress of OpsCenter instance to use for DSE management; it can be specified via linking the OpsCenter container using opscenter as the name.
JVM_EXTRA_OPTSstringAllows setting custom Heap using -Xmx and -Xms.
LANGstringAllows setting custom Locale
SNITCHstringThis variable sets the snitch implementation this node will use. It will set the endpoint_snitch option of cassandra.yaml. Default: GossipingPropertyFileSnitch
DSE_AUTO_CONF_OFFstringSometimes users want to set all variables in the config files. For these situations one must prevent default environment variables from overriding those values. This setting lets you provide a comma-separated list of filenames (options are cassandra.yaml and cassandra-rackdc.properties) that will not accept the Environmental variables or can be set to 'all' to disable default environment variables being set within either file.

Volumes and data

To persist data, pre-create directories on the local host and map the directory to the corresponding volume using the docker run -v flag.

NOTE: If the volumes are not mounted from the local host, all data is lost when the container is removed.

DSE images expose the following volumes.

  • For DataStax Enterprise Transactional, Search, Graph, and Analytics workloads:
    • /var/lib/cassandra: Data from Cassandra
    • /var/lib/spark: Data from DSE Analytics w/ Spark
    • /var/lib/dsefs: Data from DSEFS
    • /var/log/cassandra: Logs from Cassandra
    • /var/log/spark: Logs from Spark
docker run -v <local_directory>:<container_volume>

See Docker docs > Use volumes for more information.

Running DSE commands and viewing logs

Use the docker exec -it <container_name> command to specific commands.

docker exec -it my-dse nodetool status

Opening an interactive bash shell

If the container is running in the background (using the -d), use the following command to open an interactive bash shell to run DSE commands.

docker exec -it <container_name> bash

To exit the shell without stopping the container type exit.

Opening an interactive CQL shell (cqlsh)

Use the following command to open cqlsh.

docker exec -it <container_name> cqlsh

Viewing logs

You can view the DSE logs using the Docker log command. For example:

docker logs my-dse

Next Steps

Head over to the DataStax docs and DataStax Academy for advanced documentation including

  • Apache Cassandra™/Datastax configuration management
  • Using environment variables
  • Persisting data
  • Exposing public ports
  • Volumes and data directories
  • Docker Compose examples to spin up connected clusters of DataStax Enterprise, Studio, and Opscenter (also on github)
  • Step-by-step tutorials and examples
  • How to build applications using Apache Cassandra™/ DataStax

License

Docker Pull Command

docker pull datastax/dse-server