Expand and Rebalance System
If your system needs more resources, you can expand it by installing additional nodes and drives. The steps for expanding a system depend on the type of node you are adding.
These sections explain the steps for adding each Ocient® node type. Foundation Nodes include additional steps for adding more storage drives and rebalancing the system.
For information on how to replace nodes that have failed or are damaged, see Replace Nodes.
For information on replacing drives that have failed or are damaged, see Replace an NVMe Node Drive.
Prerequisites
These prerequisites apply to adding any node type:
- The process requires either the System Administrator role or the granted UPDATE privilege on SYSTEM.
- Any new nodes should have the same OS kernel version as other nodes in the system.
- Any new nodes should have the same Ocient System version as the other nodes. For details, see Ocient Application Installation.
- Ensure that your system meets the requirements outlined in Ocient System Bootstrapping.
- Before adding nodes, stop any query or loading process running on your system.
Add Foundation Nodes
A core component of an Ocient System, the Foundation Nodes store user data in Ocient and perform the bulk of query processing. By adding more Foundation Nodes, a system can support extra storage capacity as well as better performance for query processing.
This process requires rebalancing the data to distribute the query processing across all available hardware, including newly installed disks or nodes.
System Considerations
- No individual cluster should have more than two petabytes of storage.
- Each cluster should have the same number of Foundation Nodes.
Tutorial
Create the /var/opt/ocient/bootstrap.conf file on the new node using this YAML example. This YAML file should follow a similar format and parameters as the bootstrap.conf files on your other nodes.
Replace the <FIRST_NODE_ADDRESS> with the IP or Hostname of a node running the Administrator Role on your system. If you are not using DNS, use nodeAddress instead of adminHost.
Use a user account with System Administrator privileges for your system for the adminUserName and adminPassword.
Start the new node by using this command.
This process takes about a minute to complete. This step accepts the node into the system, but it has not been assigned a role or a storage cluster.
To validate that the node is on the system, execute this query using the sys.nodes system catalog table.
Output
The output shows the new node, named foundation_new in this example, listed as ACCEPTED in the status column.
Execute this ALTER CLUSTER SQL statement to add the new node to a storage cluster. In this example, replace storage_cluster_1 and foundation_new with your cluster name and node name, respectively.
This example adds only one new node. For information on adding multiple nodes, see ALTER CLUSTER ADD PARTICIPANTS.
Restart the rolehostd process on all nodes in the system by running the following series of commands at the shell terminal.
First, stop the rolehostd process on all nodes.
Confirm that the rolehostd process is no longer running.
Start the rolehostd process on the system again.
You can verify the new node is active by executing this SQL query after you connect to the database.
Perform a rebalance task to distribute your data across your newly expanded system evenly. For details, see Rebalance System.
Add More Drives to Foundation Nodes
Foundation Nodes can support extra storage by adding additional NVMe drives. This tutorial shows the steps to integrate new drives into an existing Ocient System.
System Considerations
- For best performance, all Foundation Nodes should have equal storage capacity.
- No individual cluster should have more than two petabytes of storage.
Prerequisites
- The process requires
systemctlaccess on your system OS. - Any new NVMe drives added to the system must be blank and unpartitioned.
Tutorial
To confirm the new drives are active and running, you can connect to your system and query the sys.storage_device_status system catalog table.
To use this example query, replace <NODE_NAME> with the name of the node where you are adding a drive.
Output
This output lists the serial numbers of all drives in the foundation0 node, including their statuses.
Perform a rebalance task to distribute your data across your newly expanded system evenly. For details, see Rebalance System.
Rebalance System
REBALANCE task execution redistributes your data evenly across your segment groups and clusters. Rebalance your system if you have recently installed new hardware, particularly new nodes or drives.
System Considerations
Currently, the REBALANCE task does not move damaged segment groups. If you suspect that you might have a significant number of damaged segment groups, you can execute these steps to check and fix the groups:
- Ensure all nodes are online.
- Check whether you have damaged segment groups using the
sys.segment_groupssystem catalog table. If damaged segment groups are present, execute aREBUILDtask to rebuild the groups before rebalancing the system. For details, see Guide to Rebuilding Segments. - Execute the
REBALANCEtask using this tutorial.
You can find information in the sys.degraded_segment_groups system catalog table to identify the damaged segment groups that need fixing. This table shows all segment groups with the DAMAGED or UNAVAILABLE state. You can also check the sys.storage_used system catalog table, which shows approximately the same number of used bytes used_bytes for each node entry with the same table after the rebalance execution.
Prerequisites
- Only one rebalance task can execute at a time on the system. The system logs an error if you try to start a second rebalance task.
- You must have the System Administrator role, or be granted the UPDATE privilege on SYSTEM.
Tutorial
Execute a SELECT SQL statement to view how the system has distributed the existing data using the sys.tables and sys.nodes system catalog tables.
Output
The query output shows how data is distributed across your nodes.
Execute the REBALANCE task named rebalance_task to reorganize all data in a balanced state using the CREATE TASK SQL statement.
For details about the syntax for creating tasks, see Distributed Tasks.
View the status of the tasks as the rebalance operation executes using the sys.subtasks system catalog table.
Output
The output shows when the REBALANCE task is finished.
When the REBALANCE task runs, segments are in the REBUILDING state. After the Ocient System completes this task, all segments should transition to the INTACT state.
Add Loader Nodes
Adding more Loader Nodes to your system can improve the throughput of data loading and resiliency against loading failure. By having extra Loader Nodes, you can also dedicate sets of nodes for specific pipelines.
System Considerations
Before starting this process, ensure you meet the requirements in the Prerequisites section.
Tutorial
Stop any active data pipelines. Execute this SQL statement by replacing pipeline_name with the name of your data pipeline.
Create the /var/opt/ocient/bootstrap.conf file on the new Loader Node using this YAML example. This YAML file should follow a similar format and parameters to the bootstrap.conf file on your other nodes.
Replace the <FIRST_NODE_ADDRESS> with the IP address or hostname of a node running the Administrator Role on your system. If you are not using a DNS, use nodeAddress instead of adminHost.
Specify a user account with System Administrator privileges for your system for the username adminUserName and password adminPassword.
Start the new node by using this command.
This process takes about a minute to complete. This step accepts the node into the system, but does not assign a role.
Add the streamloader role to the new node.
Execute this SQL statement by replacing <new_node_name> with the new node name.
If you use the legacy LAT service, you must stop loading and copy the LAT configuration files to any new Loader Nodes. For details, see Configure the LAT Service.
This step is unnecessary for systems that use Ocient data pipelines for loading.
Add SQL Nodes
Adding more SQL Nodes to your system can improve query optimization and processing, particularly for aggregation and join operations. Extra SQL Nodes also provide system resiliency, especially when assigned the admin role.
System Considerations
Before starting this process, ensure you meet the requirements in the Prerequisites section.
Tutorial
Create the /var/opt/ocient/bootstrap.conf file on the new SQL Node using this YAML example. This YAML file should follow a similar format and parameters to the bootstrap.conf file on your other nodes.
Replace the <FIRST_NODE_ADDRESS> with the IP address or hostname of a node running the Administrator Role on your system. If you are not using a DNS, use nodeAddress instead of adminHost.
Specify a user account with System Administrator privileges for your system for the username adminUserName and password adminPassword.
Start the new node by using this command.
This process takes about a minute to complete. This step accepts the node into the system, but does not assign a role.
Add the sql role to the new node.
Execute this SQL statement by replacing <new_node_name>with the new node name.
Optionally, you can also assign the admin role to the SQL Node. At least one SQL Node must always fulfill this role. By default, the system assigns the admin role to the first SQL Node in the system.
For details about the admin role, see Node Configuration with the Administrator Role.
Execute this SQL statement by replacing <new_node_name> with the name of your new node.
Restart the rolehostd process on the replacement node by running this command at the shell terminal on the replacement node.
Assign the new SQL Node to a connectivity pool with the ALTER CONNECTIVITY_POOL statement.
In this example, the statement assigns the SQL Node sql2 to the connectivity pool cp1 with the IP address 111.1.1.1 and port number 4050 for listening. Specify the local IP address and port number 4050 to return to the client.

