本文档为 IoTDB 集群版(0.14.0-preview1)启动教程。
JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量。
设置最大文件打开数为 65535。
关闭交换内存。
可以直接在官网下载二进制版本 Download Page。
下载源码:
git clone https://github.com/apache/iotdb.git
默认分支为 master 分支,你可以切换到发布版本的 tag,例如:
git checkout v0.14.0-preview1
在 IoTDB 根目录下:
mvn clean package -pl distribution -am -DskipTests
集群的二进制版本在目录 distribution/target 下,其中,all-bin 包含 ConfigNode 和 DataNode,DataNode 内包含 Cli。
目录 | 说明 |
---|---|
confignode | 包含 ConfigNode 的启停移除脚本、配置文件、日志、数据 |
datanode | 包含 DataNode 的启停移除脚本、配置文件、日志、数据;Cli的启动脚本 |
grafana-metrics-example | Grafana 监控界面模板 |
lib | 库文件目录 |
tools | 系统工具目录 |
用户可以启动包括若干 ConfigNode 和 DataNode 的集群。 集群可以提供服务的标准是至少启动一个 ConfigNode 且启动 不小于(数据/元数据)副本个数 的 DataNode。
总体启动流程分为三步:
对 confignode/conf/iotdb-confignode.properties 中的重要参数进行配置:
配置项 | 说明 |
---|---|
internal_address | ConfigNode 在集群内部通讯使用的地址 |
internal_port | ConfigNode 在集群内部通讯使用的端口 |
consensus_port | ConfigNode 副本组共识协议通信使用的端口 |
target_config_nodes | 种子 ConfigNode 地址,第一个 ConfigNode 配置自己的 address:port |
data_replication_factor | 数据副本数,DataNode 数量不应少于此数目 |
data_region_consensus_protocol_class | 数据副本组的共识协议 |
schema_replication_factor | 元数据副本数,DataNode 数量不应少于此数目 |
schema_region_consensus_protocol_class | 元数据副本组的共识协议 |
Linux 启动方式:
# 前台启动 ./confignode/sbin/start-confignode.sh # 后台启动 nohup ./confignode/sbin/start-confignode.sh >/dev/null 2>&1 &
Windows 启动方式:
confignode\sbin\start-confignode.bat
具体参考 ConfigNode配置参数
增加 ConfigNode 是一个扩容操作,除 IP 和端口不能冲突外,上述其它重要参数需要与集群已有的 ConfigNode 保持一致,并将 target_config_nodes 配置为集群活跃的 ConfigNode。
启动方式同上。
可以向集群中添加任意个 DataNode。
iotdb-datanode.properties 中的重要配置如下:
配置项 | 说明 |
---|---|
rpc_address | 客户端 RPC 服务的地址 |
rpc_port | 客户端 RPC 服务的端口 |
internal_address | DataNode 在集群内部接收控制流使用的端口 |
internal_port | DataNode 在集群内部接收控制流使用的端口 |
mpp_data_exchange_port | DataNode 在集群内部接收数据流使用的端口 |
data_region_consensus_port | DataNode 的数据副本间共识协议通信的端口 |
schema_region_consensus_port | DataNode 的元数据副本间共识协议通信的端口 |
target_config_nodes | 集群中正在运行的 ConfigNode 地址 |
Linux 启动方式:
# 前台启动 ./datanode/sbin/start-datanode.sh # 后台启动 nohup ./datanode/sbin/start-datanode.sh >/dev/null 2>&1 &
Windows 启动方式:
datanode\sbin\start-datanode.bat
具体参考 DataNode配置参数。
Cli 启动脚本在 datanode/sbin 目录。
Linux 启动方式:
./datanode/sbin/start-cli.sh
Windows 启动方式:
datanode\sbin\start-cli.bat
需要在活跃的 ConfigNode 上执行 remove-confignode 脚本。
Linux 移除方式:
./confignode/sbin/remove-confignode.sh -r <internal_address>:<internal_port>
Windows 移除方式:
confignode\sbin\remove-confignode.bat -r <internal_address>:<internal_port>
需要在活跃的 DataNode 上执行 remove-datanode 脚本。
Linux 移除方式:
./datanode/sbin/remove-datanode.sh <rpc_address>:<rpc_port>
./datanode/sbin/remove-datanode.sh <rpc_address_0>:<rpc_port_0>,...,<rpc_address_n>:<rpc_port_n>
Windows 移除方式:
datanode\sbin\remove-datanode.bat <rpc_address>:<rpc_port>
datanode\sbin\remove-datanode.bat <rpc_address_0>:<rpc_port_0>,...,<rpc_address_n>:<rpc_port_n>
以本地环境为例,演示 IoTDB 集群的启动、扩容与缩容:
解压 apache-iotdb-0.14.0-preview1-all-bin.zip 至 cluster0 目录。
部署 1 个 ConfigNode 和 1 个 DataNode(1C1D)集群版,默认 1 副本:
./cluster0/confignode/sbin/start-confignode.sh ./cluster0/datanode/sbin/start-datanode.sh
./cluster0/datanode/sbin/start-cli.sh
IoTDB> show cluster +------+----------+-------+---------+------------+ |NodeID| NodeType| Status| Host|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
解压 apache-iotdb-0.14.0-preview1-all-bin.zip 至 cluster1 目录和 cluster2 目录
对于 cluster1 目录:
配置项 | 值 |
---|---|
internal_address | 0.0.0.0 |
internal_port | 22279 |
consensus_port | 22280 |
target_config_nodes | 0.0.0.0:22277 |
配置项 | 值 |
---|---|
rpc_address | 0.0.0.0 |
rpc_port | 6668 |
internal_address | 127.0.0.1 |
internal_port | 9004 |
mpp_data_exchange_port | 8778 |
data_region_consensus_port | 40011 |
schema_region_consensus_port | 50011 |
target_config_nodes | 127.0.0.1:22277 |
对于 cluster2 目录:
配置项 | 值 |
---|---|
internal_address | 0.0.0.0 |
internal_port | 22281 |
consensus_port | 22282 |
target_config_nodes | 0.0.0.0:22277 |
配置项 | 值 |
---|---|
rpc_address | 0.0.0.0 |
rpc_port | 6669 |
internal_address | 127.0.0.1 |
internal_port | 9005 |
mpp_data_exchange_port | 8779 |
data_region_consensus_port | 40012 |
schema_region_consensus_port | 50012 |
target_config_nodes | 127.0.0.1:22277 |
将集群扩容至 3 个 ConfigNode 和 3 个 DataNode(3C3D)集群版, 指令执行顺序可不分先后:
./cluster1/confignode/sbin/start-confignode.sh ./cluster1/datanode/sbin/start-datanode.sh ./cluster2/confignode/sbin/start-confignode.sh ./cluster2/datanode/sbin/start-datanode.sh
在 Cli 执行 show cluster,结果如下:
IoTDB> show cluster +------+----------+-------+---------+------------+ |NodeID| NodeType| Status| Host|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
./cluster0/confignode/sbin/remove-confignode.sh -r 0.0.0.0:22279
./cluster0/datanode/sbin/remove-datanode.sh 127.0.0.1:6668
在 Cli 执行 show cluster,结果如下:
IoTDB> show cluster +------+----------+-------+---------+------------+ |NodeID| NodeType| Status| Host|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