IoTDB 集群环境搭建

什么是IoTDB
IoTDB(Internet of Things Database)是一个专门设计用于存储和管理大规模物联网(IoT)数据的开源时序数据库系统。它专注于高效地存储、查询和分析时间序列数据,特别适用于物联网应用中的大量实时数据。

IoTDB的主要特点包括:

  • 时序数据存储: IoTDB专为存储时间序列数据而设计,可以高效地存储各种类型的时间序列数据,如传感器数据、监控数据等。
  • 高性能: IoTDB通过多种优化策略实现高性能的数据写入和查询,支持实时数据的高速写入和查询。
  • 灵活的查询: IoTDB提供丰富的查询语言和查询接口,允许用户进行复杂的查询和分析操作。
  • 数据压缩: IoTDB支持数据压缩,可以减小存储空间占用,同时保持查询性能。
  • 多数据类型支持: IoTDB支持不同类型的数据,如数字、字符串、布尔值等。
  • 分布式支持: IoTDB可以在分布式环境下运行,支持数据分片和分布式查询,以应对大规模数据存储和查询需求。
  • 开源: IoTDB是开源的,可以免费使用、修改和分发。

IoTDB主要用于处理物联网领域的数据,例如工业自动化、智能家居、智能城市、智能农业等领域,这些领域通常涉及大量的实时数据采集和处理。通过使用IoTDB,开发人员可以更好地管理和分析这些大规模的时间序列数据。

安装相关软件

bash 复制代码
sudo yum install lsof net-tools -y

优化系统配置

bash 复制代码
sudo vim /etc/security/limits.conf
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* seft memlock unlimited
* hard memlock unlimitedd

sudo vim /etc/sysctl.conf
net.core.somaxconn = 65535

# 重启电脑
reboot
  • soft nofile 655360:为所有用户设置软限制的最大文件句柄数为 655360。
  • hard nofile 131072:为所有用户设置硬限制的最大文件句柄数为 131072。
  • soft nproc 655350:为所有用户设置软限制的最大进程数为 655350。
  • hard nproc 655350:为所有用户设置硬限制的最大进程数为 655350。
  • soft memlock unlimited:为所有用户设置软限制的内存锁定为无限制。
  • hard memlock unlimited:为所有用户设置硬限制的内存锁定为无限制。

JDK17安装

bash 复制代码
# 下载 & 解压
cd /opt
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
tar -zxvf jdk-17_linux-x64_bin.tar.gz

# 配置环境变量
vim /etc/profile

export JAVA_HOME=/opt/jdk-17.0.8
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile

java -version

IoTDB安装

bash 复制代码
#https://www.apache.org/dyn/closer.cgi/iotdb/1.1.2/apache-iotdb-1.1.2-all-bin.zip
# 下载 & 解压
cd /opt
wget https://dlcdn.apache.org/iotdb/1.1.2/apache-iotdb-1.1.2-all-bin.zip
unzip apache-iotdb-1.1.2-all-bin.zip

IoTDB配置

bash 复制代码
cd /opt/apache-iotdb-1.1.2-all-bin

master 配置
vim config/iotdb-confignode.properties
cn_internal_address=172.31.7.114
cn_internal_port=10710
cn_consensus_port=10720
cn_target_config_node_list=172.31.7.114:10710

vim iotdb-datanode.properties
dn_rpc_address=172.31.7.114
dn_rpc_port=6667
dn_internal_address=172.31.7.114
dn_internal_port=10730
dn_mpp_data_exchange_port=10740
dn_schema_region_consensus_port=10750
dn_data_region_consensus_port=10760
dn_target_config_node_list=172.31.7.114:10710,172.31.5.102:10710,172.31.5.35:10710


slave1 配置
vim config/iotdb-confignode.properties
cn_internal_address=172.31.5.102
cn_internal_port=10710
cn_consensus_port=10720
cn_target_config_node_list=master:10710

vim iotdb-datanode.properties
dn_rpc_address=172.31.5.102
dn_rpc_port=6667
dn_internal_address=172.31.5.102
dn_internal_port=10730
dn_mpp_data_exchange_port=10740
dn_schema_region_consensus_port=10750
dn_data_region_consensus_port=10760
dn_target_config_node_list=172.31.7.114:10710,172.31.5.102:10710,172.31.5.35:10710


slave2 配置
vim config/iotdb-confignode.properties
cn_internal_address=172.31.5.35
cn_internal_port=10710
cn_consensus_port=10720
cn_target_config_node_list=master:10710

vim iotdb-datanode.properties
dn_rpc_address=172.31.5.35
dn_rpc_port=6667
dn_internal_address=172.31.5.35
dn_internal_port=10730
dn_mpp_data_exchange_port=10740
dn_schema_region_consensus_port=10750
dn_data_region_consensus_port=10760
dn_target_config_node_list=172.31.7.114:10710,172.31.5.102:10710,172.31.5.35:10710

为每台机器, 堆内存配置为机器内存的 1/4

bash 复制代码
vim conf/datanode-env.sh
vim conf/confignode-env.sh

MAX_HEAP_SIZE="4G"

启动与停止

bash 复制代码
# 启动
sbin/start-confignode.sh &
sbin/start-datanode.sh &

# 查看启动状态
tail -f logs/log_datanode_all.log
# 2023-08-22 06:55:53,761 [main] INFO  o.a.i.db.service.DataNode:184 - Congratulation, IoTDB DataNode is set up successfully. Now, enjoy yourself!

#停止
sbin/stop-datanode.sh
sbin/stop-confignode.sh

# 任意节点检验集群状态
sbin/start-cli.sh -h 172.31.7.114

sbin/start-cli.sh -h 172.31.5.102

sbin/start-cli.sh -h 172.31.5.35

show cluster;

集群启动时要先启动第一台,再运行后两台。才能做到3C3D

清理环境 ( 首次启动出现问题, 可尝试这里解决 )

bash 复制代码
sbin/stop-standalone.sh

ps -ef|grep iotdb

kill -9 <pid>

cd /opt/apache-iotdb-1.1.2-all-bin
rm -rf data logs

重启IoTDB

依次关停其他从机器, 再关停主机器

bash 复制代码
sbin/stop-datanode.sh
sbin/stop-confignode.sh

优先启动主机器, 再启动其他从机器 confignode

bash 复制代码
sbin/start-confignode.sh &

最后依次启动datanode

bash 复制代码
sbin/start-datanode.sh &

验证

bash 复制代码
# 进入任意节点 cli
# 执行插入数据
insert into root.abc.a123.b123 (time, test)values(now(), "Hello World");

# 执行查询数据
select * from root.abc.a123.b123;

# 删除某一个序列
delete from root.abc.a123.b123.status where time < now()

# 删除数据
delete from root.abc.a123.b123.* where time < 2023-08-22T20:55:08;

# 数据覆盖
insert into root.abc.a123.b123 (time, test)values(1692699108000, "Hello IoTDB");
insert into root.abc.a123.b123 (time, test)values(1692699108000, "Hello IoTDB !!!");

操作任意节点, 新增数据, 删除数据, 覆盖数据, 其他节点更新到对应的变化;

相关推荐
时序数据说3 天前
时序数据库IoTDB的UDF Sample算法在数据监控、故障预防的应用
大数据·数据库·开源·时序数据库·iotdb
时序数据说4 天前
时序数据库IoTDB与EdgeX Foundry集成适配服务介绍
大数据·数据库·开源·时序数据库·iotdb
TDengine (老段)6 天前
TDengine 高级功能——读缓存
大数据·数据库·缓存·时序数据库·tdengine·涛思数据·iotdb
Apache IoTDB7 天前
Apache IoTDB V2.0.3 发布|新增元数据导入导出脚本适配表模型功能
apache·iotdb
时序数据说7 天前
时序数据库IoTDB如何快速高效地存储时序数据
大数据·数据库·开源·时序数据库·iotdb
Apache IoTDB8 天前
IoTDB 集成 DBeaver,简易操作实现时序数据清晰管理
iotdb
时序数据说11 天前
时序数据库IoTDB基于云原生的创新与实践
大数据·数据库·分布式·云原生·时序数据库·iotdb
时序数据说12 天前
时序数据库IoTDB启动方式及集群迁移指南
大数据·数据库·分布式·开源·php·时序数据库·iotdb
时序数据说16 天前
时序数据库IoTDB的分片与负载均衡策略深入解析
大数据·数据库·开源·负载均衡·时序数据库·iotdb
TDengine (老段)19 天前
TDengine 运维—容量规划
大数据·运维·数据库·时序数据库·tdengine·涛思数据·iotdb