Cluster Setup

This article is the setup process of IoTDB Cluster (0.14.0-preview1).

Environments

  1. JDK>=1.8.

  2. Max open file 65535.

  3. Disable the swap memory.

Get the binary distribution

Download

Download the binary distribution from website Download Page.

Compiled from source code

Download the source code:

git clone https://github.com/apache/iotdb.git

The default branch is master, you should checkout to the release tag:

git checkout v0.14.0-preview1

Under the source root folder:

mvn clean package -pl distribution -am -DskipTests

Then you will get the binary distribution under distribution/target, in which the all-bin contains ConfigNode and DataNode, and DataNode contains the Cli.

Binary Distribution Content

FolderDescription
confignodeContains start/stop/remove shell, configurations, logs, data of ConfigNode
datanodeContains start/stop/remove shell, configurations, logs, data of DataNode, cli shell
grafana-metrics-exampleGrafana metric page module
libJar files folder
toolsSystem tools

Start the Cluster

Users could start a cluster which contains multiple ConfigNode and DataNode. A cluster need at least one ConfigNode and no less than the number of data/schema_replication_factor DataNodes.

The total process are three steps:

  • Start the first ConfigNode
  • Add ConfigNode (Optional)
  • Add DataNode

Start the first ConfigNode

Please set the important parameters in iotdb-confignode.properties:

ConfigurationDescription
internal_addressInternal rpc service address of ConfigNode
internal_portInternal rpc service address of ConfigNode
consensus_portConfigNode replication consensus protocol communication port
target_config_nodesTarget ConfigNode address, if the current is the first ConfigNode, then set its address:port
data_replication_factorData replication factor, no more than DataNode number
data_region_consensus_protocol_classConsensus protocol of data replicas
schema_replication_factorSchema replication factor, no more than DataNode number
schema_region_consensus_protocol_classConsensus protocol of schema replicas

Start on Linux:

# Foreground
./confignode/sbin/start-confignode.sh

# Background
nohup ./confignode/sbin/start-confignode.sh >/dev/null 2>&1 &

Start on Windows:

confignode\sbin\start-confignode.bat

More details ConfigNode Configurations.

Add ConfigNode (Optional)

This will add the replication factor of ConfigNode, except for the port couldn't conflict, make sure other configurations are the same with existing ConfigNode in Cluster.

The adding ConfigNode also use the start-confignode.sh/bat.

Start DataNode

You could add any number of DataNode.

Please set the important parameters in iotdb-datanode.properties.

ConfigurationDescription
rpc_addressClient RPC Service address
rpc_portClient RPC Service port
internal_addressControl flow address of DataNode inside cluster
internal_portControl flow port of DataNode inside cluster
mpp_data_exchange_portData flow port of DataNode inside cluster
data_region_consensus_portData replicas communication port for consensus
schema_region_consensus_portSchema replicas communication port for consensus
target_config_nodesRunning ConfigNode of the Cluster

Start on Linux:

# Foreground
./datanode/sbin/start-datanode.sh

# Background
nohup ./datanode/sbin/start-datanode.sh >/dev/null 2>&1 &

Start on Windows:

datanode\sbin\start-datanode.bat

More details DataNode Configurations.

Start Cli

Cli is in datanode/sbin folder.

Start on Linux:

./datanode/sbin/start-cli.sh

Start on Windows:

datanode\sbin\start-cli.bat

Shrink the Cluster

Remove ConfigNode

Execute the remove-confignode shell on an active ConfigNode.

Remove on Linux:

./confignode/sbin/remove-confignode.sh <confignode_id>
./confignode/sbin/remove-confignode.sh <internal_address>:<internal_port>

Remove on Windows:

confignode\sbin\remove-confignode.bat <confignode_id>
confignode\sbin\remove-confignode.bat <internal_address>:<internal_port>

Remove DataNode

Execute the remove-datanode shell on an active DataNode.

Remove on Linux:

./datanode/sbin/remove-datanode.sh <datanode_id>
./datanode/sbin/remove-datanode.sh <rpc_address>:<rpc_port>

Remove on Windows:

datanode\sbin\remove-datanode.bat <datanode_id>
datanode\sbin\remove-datanode.bat <rpc_address>:<rpc_port>

Quick Start

This section uses a local environment as an example to illustrate how to start, expand, and shrink a IoTDB Cluster.

1. Prepare the Start Environment

Unzip the apache-iotdb-0.14.0-preview1-all-bin.zip file to cluster0 folder.

2. Starting a Minimum Cluster

Starting the Cluster version with one ConfigNode and one DataNode(1C1D), the default number of replica is one.

./cluster0/confignode/sbin/start-confignode.sh
./cluster0/datanode/sbin/start-datanode.sh

3. Verify the Minimum Cluster

  • The minimum cluster is successfully started. Start the Cli for verification.
./cluster0/datanode/sbin/start-cli.sh
  • Execute the show cluster command on the Cli. The result is shown below:
IoTDB> show cluster
+------+----------+-------+---------------+------------+
|NodeID|  NodeType| Status|InternalAddress|InternalPort|
+------+----------+-------+---------------+------------+
|     0|ConfigNode|Running|        0.0.0.0|       22277|
|     1|  DataNode|Running|      127.0.0.1|        9003|
+------+----------+-------+---------------+------------+
Total line number = 2
It costs 0.160s

4. Prepare the Expanding Environment

Unzip the apache-iotdb-0.14.0-preview1-all-bin.zip file to cluster1 and cluster2 folder.

5. Modify the Node Configuration file

For folder cluster1:

  • Modify ConfigNode address:
configuration itemvalue
internal_address0.0.0.0
internal_port22279
consensus_port22280
target_config_nodes0.0.0.0:22277
  • Modify DataNode address:
configuration itemvalue
rpc_address0.0.0.0
rpc_port6668
internal_address127.0.0.1
internal_port9004
mpp_data_exchange_port8778
data_region_consensus_port40011
schema_region_consensus_port50011
target_config_nodes127.0.0.1:22277

For folder cluster1:

  • Modify ConfigNode address:
configuration itemvalue
internal_address0.0.0.0
internal_port22281
consensus_port22282
target_config_nodes0.0.0.0:22277
  • Modify DataNode address:
configuration itemvalue
rpc_address0.0.0.0
rpc_port6669
internal_address127.0.0.1
internal_port9005
mpp_data_exchange_port8779
data_region_consensus_port40012
schema_region_consensus_port50012
target_config_nodes127.0.0.1:22277

6. Expanding the Cluster

Expanding the Cluster to three ConfigNode and three DataNode(3C3D). The following commands can be executed in no particular order.

./cluster1/confignode/sbin/start-confignode.sh
./cluster1/datanode/sbin/start-datanode.sh
./cluster2/confignode/sbin/start-confignode.sh
./cluster2/datanode/sbin/start-datanode.sh

7. Verify Cluster expansion

Execute the show cluster command, the result is shown below:

IoTDB> show cluster
+------+----------+-------+---------------+------------+
|NodeID|  NodeType| Status|InternalAddress|InternalPort|
+------+----------+-------+---------------+------------+
|     0|ConfigNode|Running|        0.0.0.0|       22277|
|     2|ConfigNode|Running|        0.0.0.0|       22279|
|     3|ConfigNode|Running|        0.0.0.0|       22281|
|     1|  DataNode|Running|      127.0.0.1|        9003|
|     4|  DataNode|Running|      127.0.0.1|        9004|
|     5|  DataNode|Running|      127.0.0.1|        9005|
+------+----------+-------+---------------+------------+
Total line number = 6
It costs 0.012s

8. Shrinking the Cluster

  • Remove a ConfigNode:
./cluster0/confignode/sbin/remove-confignode.sh 127.0.0.1:22279
  • Remove a DataNode:
./cluster0/datanode/sbin/remove-datanode.sh 127.0.0.1:6668

9. Verify Cluster shrinkage

Execute the show cluster command, the result is shown below:

IoTDB> show cluster
+------+----------+-------+---------------+------------+
|NodeID|  NodeType| Status|InternalAddress|InternalPort|
+------+----------+-------+---------------+------------+
|     0|ConfigNode|Running|        0.0.0.0|       22277|
|     3|ConfigNode|Running|        0.0.0.0|       22281|
|     1|  DataNode|Running|      127.0.0.1|        9003|
|     5|  DataNode|Running|      127.0.0.1|        9005|
+------+----------+-------+---------------+------------+
Total line number = 4
It costs 0.007s