IoTDB 集群环境搭建

什么是IoTDB

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

IoTDB的主要特点包括:

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

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

安装相关软件

sudo yum install lsof net-tools -y

优化系统配置

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安装

# 下载 & 解压
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安装

#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配置

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

vim conf/datanode-env.sh
vim conf/confignode-env.sh

MAX_HEAP_SIZE="4G"

启动与停止

# 启动
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
IoTDB 集群环境搭建_第1张图片

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

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

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

sbin/stop-datanode.sh
sbin/stop-confignode.sh

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

sbin/start-confignode.sh &

最后依次启动datanode

sbin/start-datanode.sh &

验证

# 进入任意节点 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 !!!");

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

你可能感兴趣的:(#,IoTDB,iotdb)