快速上手(集群版)
快速上手(集群版)
本文將簡單介紹 IoTDB 集群的安裝配置、擴容和縮容等常規(guī)操作。
遇到問題可以看:
FAQ
1. 安裝部署
我們將以最小的改動,啟動一個含有3個 ConfigNode 和3個DataNode(3C3D)集群:
- 數(shù)據(jù)/元數(shù)據(jù)副本數(shù)為1
- 集群名稱為defaultCluster
- Confignode JVM 的最大堆內存配置為機器內存的 1/4
- Datanode JVM 的最大堆內存配置為機器內存的 1/4
假設有3臺物理機(下面稱節(jié)點),操作系統(tǒng)為Linux,并且已經(jīng)安裝配置好了JAVA環(huán)境(具體見單機版對安裝環(huán)境說明),安裝目錄均為/data/iotdb。
IP地址和服務角色分配如下:
| 節(jié)點IP | 192.168.132.10 | 192.168.132.11 | 192.168.132.12 |
|---|---|---|---|
| 服務 | ConfigNode | ConfigNode | ConfigNode |
| 服務 | DataNode | DataNode | DataNode |
端口占用:
| 服務 | ConfigNode | DataNode |
|---|---|---|
| 端口 | 10710, 10720 | 6667, 10730, 10740, 10750, 10760 |
說明:
- 可以使用
IP地址或者機器名/域名來安裝配置 IoTDB 集群,本文以IP地址為例。如果使用機器名/域名,則需要配置/etc/hosts。 - JVM堆內存配置:
confignode-env.sh和datanode-env.sh內配置MAX_HEAP_SIZE, 建議設置值大于等于1G。ConfigNode 1~2G就足夠了,DataNode的內存配置則要取決于數(shù)據(jù)接入的數(shù)據(jù)量和查詢數(shù)據(jù)量。
1.1 下載安裝包
在每個節(jié)點,將安裝包下載后,解壓到安裝目錄,這里為/data/iotdb。
目錄結構:
/data/iotdb/
├── conf # 配置文件
├── lib # jar library
├── sbin # 啟動/停止等腳本
└── tools # 其他工具1.2. 修改節(jié)點配置文件
配置文件在 /data/iotdb/conf目錄下。
按照下表修改相應的配置文件:
| 配置 | 配置項 | IP:192.168.132.10 | IP:192.168.132.11 | IP:192.168.132.12 |
|---|---|---|---|---|
| iotdb-confignode.properties | cn_internal_address | 192.168.132.10 | 192.168.132.11 | 192.168.132.12 |
| cn_target_config_node_list | 192.168.132.10:10710 | 192.168.132.10:10710 | 192.168.132.10:10710 | |
| iotdb-datanode.properties | dn_rpc_address | 192.168.132.10 | 192.168.132.11 | 192.168.132.12 |
| dn_internal_address | 192.168.132.10 | 192.168.132.11 | 192.168.132.12 | |
| dn_target_config_node_list | 192.168.132.10:10710 | 192.168.132.10:10710 | 192.168.132.10:10710 |
注意:
我們推薦所有節(jié)點的 iotdb-common.properties 和 JVM 的內存配置是一致的。
1.3. 啟動集群
啟動集群前,需保證配置正確,保證 IoTDB 安裝目錄下沒有數(shù)據(jù)(data目錄)。
1.3.1. 啟動第一個節(jié)點
即上面表格中cn_target_config_node_list配置的節(jié)點。
登錄該節(jié)點 192.168.132.10,執(zhí)行下面命令:
cd /data/iotdb
# 啟動 ConfigNode 和 DataNode 服務
sbin/start-standalone.sh
# 查看 DataNode 日志以確定啟動成功
tail -f logs/log_datanode_all.log
# 期望看見類似下方的日志
# 2023-07-21 20:26:01,881 [main] INFO o.a.i.db.service.DataNode:192 - Congratulation, IoTDB DataNode is set up successfully. Now, enjoy yourself!如果沒有看到上面所說的日志或者看到了 Exception,那么代表啟動失敗了。請查看 /data/iotdb/logs 目錄內的log_confignode_all.log 和 log_datanode_all.log 日志文件。
注意:
- 要保證第一個節(jié)點啟動成功后,再啟動其他節(jié)點。確切的說,要先保證第一個 ConfigNode 服務啟動成功,即
cn_target_config_node_list配置的節(jié)點。 - 如果啟動失敗,需要清理環(huán)境后,再次啟動。
- ConfigNode 和 DataNode 服務都可以單獨啟動:
# 單獨啟動 ConfigNode, 后臺啟動
sbin/start-confignode.sh -d
# 單獨啟動 DataNode,后臺啟動
sbin/start-datanode.sh -d1.3.2. 啟動其他兩個節(jié)點的 ConfigNode 和 DataNode
在節(jié)點 192.168.132.11 和 192.168.132.12 兩個節(jié)點上分別執(zhí)行:
cd /data/iotdb
# 啟動 ConfigNode 和 DataNode 服務
sbin/start-standalone.sh如果啟動失敗,需要在所有節(jié)點執(zhí)行清理環(huán)境后,然后從啟動第一個節(jié)點開始,再重新執(zhí)行一次。
1.3.3. 檢驗集群狀態(tài)
在任意節(jié)點上,在 Cli 執(zhí)行 show cluster:
/data/iotdb/sbin/start-cli.sh -h 192.168.132.10
IoTDB>show cluster;
# 示例結果如下:
+------+----------+-------+---------------+------------+-------+---------+
|NodeID| NodeType| Status|InternalAddress|InternalPort|Version|BuildInfo|
+------+----------+-------+---------------+------------+-------+---------+
| 0|ConfigNode|Running| 192.168.132.10| 10710|1.x.x | xxxxxxx|
| 1| DataNode|Running| 192.168.132.10| 10730|1.x.x | xxxxxxx|
| 2|ConfigNode|Running| 192.168.132.11| 10710|1.x.x | xxxxxxx|
| 3| DataNode|Running| 192.168.132.11| 10730|1.x.x | xxxxxxx|
| 4|ConfigNode|Running| 192.168.132.12| 10710|1.x.x | xxxxxxx|
| 5| DataNode|Running| 192.168.132.12| 10730|1.x.x | xxxxxxx|
+------+----------+-------+---------------+------------+--------------+---------+說明:start-cli.sh -h 后指定的IP地址,可以是任意一個 DataNode 的IP地址。
【附錄】清理環(huán)境
在所有節(jié)點執(zhí)行:
- 結束 ConfigNode 和 DataNode 進程。
# 1. 停止 ConfigNode 和 DataNode 服務
sbin/stop-standalone.sh
# 2. 檢查是否還有進程殘留
jps
# 或者
ps -ef|grep iotdb
# 3. 如果有進程殘留,則手動kill
kill -9 <pid>
# 如果確定機器上僅有1個iotdb,可以使用下面命令清理殘留進程
ps -ef|grep iotdb|grep -v grep|tr -s ' ' ' ' |cut -d ' ' -f2|xargs kill -9- 刪除 data 和 logs 目錄。
cd /data/iotdb
rm -rf data logs說明:刪除 data 目錄是必要的,刪除 logs 目錄是為了純凈日志,非必需。
2. 集群擴容
擴容方式與上方啟動其他節(jié)點相同。也就是,在要添加的節(jié)點上,下載IoTDB的安裝包,解壓,修改配置,然后啟動。這里要添加節(jié)點的IP為 192.168.132.13
注意:
- 擴容的節(jié)點必須是干凈的節(jié)點,不能有數(shù)據(jù)(也就是
data目錄) - iotdb-common.properties中的
cluster_name的配置必須和已有集群一致。 cn_target_config_node_list和dn_target_config_node_list的配置必須和已有集群一致。- 原有數(shù)據(jù)不會移動到新節(jié)點,新創(chuàng)建的元數(shù)據(jù)分區(qū)和數(shù)據(jù)分區(qū)很可能在新的節(jié)點。
2.1. 修改配置
按照下表修改相應的配置文件:
| 配置 | 配置項 | IP:192.168.132.13 |
|---|---|---|
| iotdb-confignode.properties | cn_internal_address | 192.168.132.13 |
| cn_target_config_node_list | 192.168.132.10:10710 | |
| iotdb-datanode.properties | dn_rpc_address | 192.168.132.13 |
| dn_internal_address | 192.168.132.13 | |
| dn_target_config_node_list | 192.168.132.10:10710 |
2.2. 擴容
在新增節(jié)點192.168.132.13上,執(zhí)行:
cd /data/iotdb
# 啟動 ConfigNode 和 DataNode 服務
sbin/start-standalone.sh2.3. 驗證擴容結果
在 Cli 執(zhí)行 show cluster,結果如下:
/data/iotdb/sbin/start-cli.sh -h 192.168.132.10
IoTDB>show cluster;
# 示例結果如下:
+------+----------+-------+---------------+------------+-------+---------+
|NodeID| NodeType| Status|InternalAddress|InternalPort|Version|BuildInfo|
+------+----------+-------+---------------+------------+-------+---------+
| 0|ConfigNode|Running| 192.168.132.10| 10710|1.x.x | xxxxxxx|
| 1| DataNode|Running| 192.168.132.10| 10730|1.x.x | xxxxxxx|
| 2|ConfigNode|Running| 192.168.132.11| 10710|1.x.x | xxxxxxx|
| 3| DataNode|Running| 192.168.132.11| 10730|1.x.x | xxxxxxx|
| 4|ConfigNode|Running| 192.168.132.12| 10710|1.x.x | xxxxxxx|
| 5| DataNode|Running| 192.168.132.12| 10730|1.x.x | xxxxxxx|
| 6|ConfigNode|Running| 192.168.132.13| 10710|1.x.x | xxxxxxx|
| 7| DataNode|Running| 192.168.132.13| 10730|1.x.x | xxxxxxx|
+------+----------+-------+---------------+------------+-------+---------+3. 集群縮容
注意:
- 可以在任何一個集群內的節(jié)點上,執(zhí)行縮容操作。
- 集群內的任意節(jié)點都可以被縮容。但是存留的 DataNode 服務不能小于副本數(shù)設置。
- 請耐心等待縮容腳本執(zhí)行結束,并仔細閱讀日志說明,尤其是結束前的指南說明。
3.1 縮容一個 ConfigNode
cd /data/iotdb
# 方式一:使用 ip:port 移除
sbin/remove-confignode.sh 192.168.132.13:10710
# 方式二:使用節(jié)點編號移除, `show cluster`中的 NodeID
sbin/remove-confignode.sh 63.2 縮容一個 DataNode
cd /data/iotdb
# 方式一:使用 ip:port 移除
sbin/remove-datanode.sh 192.168.132.13:6667
# 方式二:使用節(jié)點編號移除, `show cluster`中的 NodeID
sbin/remove-confignode.sh 73.3 驗證縮容結果
在 Cli 執(zhí)行 show cluster,結果如下:
+------+----------+-------+---------------+------------+-------+---------+
|NodeID| NodeType| Status|InternalAddress|InternalPort|Version|BuildInfo|
+------+----------+-------+---------------+------------+-------+---------+
| 0|ConfigNode|Running| 192.168.132.10| 10710|1.x.x | xxxxxxx|
| 1| DataNode|Running| 192.168.132.10| 10730|1.x.x | xxxxxxx|
| 2|ConfigNode|Running| 192.168.132.11| 10710|1.x.x | xxxxxxx|
| 3| DataNode|Running| 192.168.132.11| 10730|1.x.x | xxxxxxx|
| 4|ConfigNode|Running| 192.168.132.12| 10710|1.x.x | xxxxxxx|
| 5| DataNode|Running| 192.168.132.12| 10730|1.x.x | xxxxxxx|
+------+----------+-------+---------------+------------+-------+---------+