当前位置: 首页 > ai >正文

物联网时序数据存储方案:Apache IoTDB 集群部署全流程 + TimechoDB 优势解读

物联网时序数据存储方案:Apache IoTDB 集群部署全流程 + TimechoDB 优势解读

文章目录

    • 物联网时序数据存储方案:Apache IoTDB 集群部署全流程 + TimechoDB 优势解读
      • Apache IoTDB 介绍
      • 集群版部署指导
        • 1、设置主机名
        • 2、环境脚本配置
        • 3、激活数据库
        • 4、配置项
        • 5、节点维护步骤
      • TimechoDB(based on Apache IoTDB)
      • 总结

在这里插入图片描述

Apache IoTDB 介绍

在这里插入图片描述

Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、云端集群扩展及边缘 - 云端协同,为工业物联网、智能城市、车联网等场景提供全生命周期的数据存储、查询与分析解决方案

物联网原生优化:采用 “设备 - 测点” 数据模型,完美映射物理设备与传感器关系,配合标签机制支持多维度分析,贴合物联网实际业务场景

极致性能表现:通过特殊编码算法实现 10:1~20:1 的高压缩率,同时支持每秒数百万条数据的并发写入和毫秒级时序查询响应,平衡存储成本与处理效率

全场景部署能力:轻量设计可运行于边缘设备,分布式架构支持云端集群扩展,兼容边缘 - 云端协同存储,适配从边缘到云端的全场景物联网部署需求

集群版部署指导

在这里插入图片描述

手动部署包括3个ConfigNode和3个DataNode的实例,即通常所说的3C3D集群

1、设置主机名
  • 3台机器上分别配置主机名,设置主机名需要在目标服务器上配置/etc/hosts,使用如下命令
echo "192.168.1.3  iotdb-1"  >> /etc/hosts
echo "192.168.1.4  iotdb-2"  >> /etc/hosts
echo "192.168.1.5  iotdb-3"  >> /etc/hosts
  • 参数配置
unzip  iotdb-enterprise-{version}-bin.zip
cd  iotdb-enterprise-{version}-bin
2、环境脚本配置
  • ./conf/confignode-env.sh配置

  • 配置项说明默认值推荐值备注
    MEMORY_SIZEIoTDB ConfigNode节点可以使用的内存总量可按需填写,填写后系统会根据填写的数值来分配内存修改后保存即可,无需执行;重启服务后生效
  • ./conf/datanode-env.sh配置

  • 配置项说明默认值推荐值备注
    MEMORY_SIZEIoTDB DataNode节点可以使用的内存总量可按需填写,填写后系统会根据填写的数值来分配内存修改后保存即可,无需执行;重启服务后生效
  • 通用设置

打开通用配置文件./conf/iotdb-system.properties,可根据部署方式设置以下参数:

配置项说明192.168.1.3192.168.1.4192.168.1.5
cluster_name集群名称defaultClusterdefaultClusterdefaultCluster
schema_replication_factor元数据副本数,DataNode数量不应少于此数目333
data_replication_factor数据副本数,DataNode数量不应少于此数目222
  • ConfigNode 配置

打开ConfigNode配置文件./conf/iotdb-system.properties,设置以下参数

配置项说明默认推荐值192.168.1.3192.168.1.4192.168.1.5备注
cn_internal_addressConfigNode在集群内部通讯使用的地址127.0.0.1所在服务器的IPV4地址或hostname,推荐使用hostnameiotdb-1iotdb-2iotdb-3首次启动后不能修改
cn_internal_portConfigNode在集群内部通讯使用的端口1071010710107101071010710首次启动后不能修改
cn_consensus_portConfigNode副本组共识协议通信使用的端口1072010720107201072010720首次启动后不能修改
cn_seed_config_node节点注册加入集群时连接的ConfigNode 的地址,cn_internal_address:cn_internal_port127.0.0.1:10710第一个CongfigNode的cn_internal_address:cn_internal_portiotdb-1:10710iotdb-1:10710iotdb-1:10710首次启动后不能修改
  • DataNode 配置

打开DataNode配置文件 ./conf/iotdb-system.properties,设置以下参数:

配置项说明默认推荐值192.168.1.3192.168.1.4192.168.1.5备注
dn_rpc_address客户端 RPC 服务的地址0.0.0.0所在服务器的IPV4地址或hostname,推荐使用所在服务器的IPV4地址iotdb-1iotdb-2iotdb-3重启服务生效
dn_rpc_port客户端 RPC 服务的端口66676667666766676667重启服务生效
dn_internal_addressDataNode在集群内部通讯使用的地址127.0.0.1所在服务器的IPV4地址或hostname,推荐使用hostnameiotdb-1iotdb-2iotdb-3首次启动后不能修改
dn_internal_portDataNode在集群内部通信使用的端口1073010730107301073010730首次启动后不能修改
dn_mpp_data_exchange_portDataNode用于接收数据流使用的端口1074010740107401074010740首次启动后不能修改
dn_data_region_consensus_portDataNode用于数据副本共识协议通信使用的端口1075010750107501075010750首次启动后不能修改
dn_schema_region_consensus_portDataNode用于元数据副本共识协议通信使用的端口1076010760107601076010760首次启动后不能修改
dn_seed_config_node节点注册加入集群时连接的ConfigNode地址,即cn_internal_address:cn_internal_port

3、启动ConfigNode节点

先启动第一个iotdb-1的confignode, 保证种子confignode节点先启动,然后依次启动第2和第3个confignode节点

cd sbin
./start-confignode.sh -d      #“-d”参数将在后台进行启动
  • 启动 DataNode 节点

分别进入iotdb的sbin目录下,依次启动3个datanode节点:

cd sbin
./start-datanode.sh   -d   #-d参数将在后台进行启动
3、激活数据库
  • 进入集群任一节点 CLI,执行获取机器码的语句
# Linux或MACOS系统
./start-cli.sh# windows系统
./start-cli.bat
  • 执行以下内容获取激活所需机器码:
show system info
  • 系统将自动返回集群所有节点的机器码
+--------------------------------------------------------------+
|                                                    SystemInfo|
+--------------------------------------------------------------+
|01-TE5NLES4-UDDWCMYE,01-GG5NLES4-XXDWCMYE,01-FF5NLES4-WWWWCMYE|
+--------------------------------------------------------------+
Total line number = 1
It costs 0.030s

4、验证激活

在 CLI 中通过执行 show activation 命令查看激活状态,示例如下,状态显示为 ACTIVATED 表示激活成功

IoTDB> show activation
+---------------+---------+-----------------------------+
|    LicenseInfo|    Usage|                        Limit|
+---------------+---------+-----------------------------+
|         Status|ACTIVATED|                            -|
|    ExpiredTime|        -|2026-04-30T00:00:00.000+08:00|
|  DataNodeLimit|        1|                    Unlimited|
|       CpuLimit|       16|                    Unlimited|
|    DeviceLimit|       30|                    Unlimited|
|TimeSeriesLimit|       72|                1,000,000,000|
+---------------+---------+-----------------------------+
4、配置项
  • confignode_address_list
名字confignode_address_list
描述待启动/停止的 ConfigNode 节点所在主机的 IP 列表,如果有多个需要用“,”分隔。
类型String
默认值
改后生效方式重启服务生效
  • datanode_address_list
名字datanode_address_list
描述待启动/停止的 DataNode 节点所在主机的 IP 列表,如果有多个需要用“,”分隔。
类型String
默认值
改后生效方式重启服务生效
  • ssh_account
名字ssh_account
描述通过 SSH 登陆目标主机的用户名,需要所有的主机的用户名都相同
类型String
默认值root
改后生效方式重启服务生效
  • ssh_port
名字ssh_port
描述目标主机对外暴露的 SSH 端口,需要所有的主机的端口都相同
类型int
默认值22
改后生效方式重启服务生效
  • confignode_deploy_path
名字confignode_deploy_path
描述待启动/停止的所有 ConfigNode 所在目标主机的路径,需要所有待启动/停止的 ConfigNode 节点在目标主机的相同目录下。
类型String
默认值
改后生效方式重启服务生效
  • datanode_deploy_path
名字datanode_deploy_path
描述待启动/停止的所有 DataNode 所在目标主机的路径,需要所有待启动/停止的 DataNode 节点在目标主机的相同目录下。
类型String
默认值
改后生效方式重启服务生效
5、节点维护步骤

ConfigNode节点维护分为ConfigNode添加和移除两种操作,有两个常见使用场景:

  • 集群扩展:如集群中只有1个ConfigNode时,希望增加ConfigNode以提升ConfigNode节点高可用性,则可以添加2个ConfigNode,使得集群中有3个ConfigNode。
  • 集群故障恢复:1个ConfigNode所在机器发生故障,使得该ConfigNode无法正常运行,此时可以移除该ConfigNode,然后添加一个新的ConfigNode进入集群。
  • 添加ConfigNode节点
# Linux / MacOS
# 首先切换到IoTDB根目录
sbin/start-confignode.sh# Windows
# 首先切换到IoTDB根目录
# V2.0.4.x 版本之前
sbin\start-confignode.bat# V2.0.4.x 版本及之后 
sbin\windows\start-confignode.bat
参数描述是否为必填项
-v显示版本信息
-f在前台运行脚本,不将其放到后台
-d以守护进程模式启动,即在后台运行
-p指定一个文件来存放进程ID,用于进程管理
-c指定配置文件夹的路径,脚本会从这里加载配置文件
-g打印垃圾回收(GC)的详细信息
-H指定Java堆转储文件的路径,当JVM内存溢出时使用
-E指定JVM错误日志文件的路径
-D定义系统属性,格式为 key=value
-X直接传递 -XX 参数给 JVM
-h帮助指令
  • 首先通过CLI连接集群,通过show confignodes确认想要移除ConfigNode的NodeID:
IoTDB> show confignodes
+------+-------+---------------+------------+--------+
|NodeID| Status|InternalAddress|InternalPort|    Role|
+------+-------+---------------+------------+--------+
|     0|Running|      127.0.0.1|       10710|  Leader|
|     1|Running|      127.0.0.1|       10711|Follower|
|     2|Running|      127.0.0.1|       10712|Follower|
+------+-------+---------------+------------+--------+
Total line number = 3
It costs 0.030s
  • 然后使用SQL将ConfigNode移除,SQL命令:
remove confignode [confignode_id]

5、DataNode节点维护

  • 集群扩容:出于集群能力扩容等目的,添加新的DataNode进入集群
  • 集群故障恢复:一个DataNode所在机器出现故障,使得该DataNode无法正常运行,此时可以移除该DataNode,并添加新的DataNode进入集群
  • 添加DataNode节点
# Linux / MacOS 
# 首先切换到IoTDB根目录
sbin/start-datanode.sh# Windows
# 首先切换到IoTDB根目录
# V2.0.4.x 版本之前
sbin\start-datanode.bat# V2.0.4.x 版本及之后     
tools\windows\start-datanode.bat
缩写描述是否为必填项
-v显示版本信息
-f在前台运行脚本,不将其放到后台
-d以守护进程模式启动,即在后台运行
-p指定一个文件来存放进程ID,用于进程管理
-c指定配置文件夹的路径,脚本会从这里加载配置文件
-g打印垃圾回收(GC)的详细信息
-H指定Java堆转储文件的路径,当JVM内存溢出时使用
-E指定JVM错误日志文件的路径
-D定义系统属性,格式为 key=value
-X直接传递 -XX 参数给 JVM
-h帮助指令
  • 移除DataNode节点

首先通过CLI连接集群,通过show datanodes确认想要移除的DataNode的NodeID:

IoTDB> show datanodes
+------+-------+----------+-------+-------------+---------------+
|NodeID| Status|RpcAddress|RpcPort|DataRegionNum|SchemaRegionNum|
+------+-------+----------+-------+-------------+---------------+
|     1|Running|   0.0.0.0|   6667|            0|              0|
|     2|Running|   0.0.0.0|   6668|            1|              1|
|     3|Running|   0.0.0.0|   6669|            1|              0|
+------+-------+----------+-------+-------------+---------------+
Total line number = 3
It costs 0.110s

TimechoDB(based on Apache IoTDB)

在这里插入图片描述

TimechoDB 国产自研高性能时序数据库,核心团队源于清华大学,自主研发积累深厚,多项发明专利与顶会论文为技术支撑,通过工信部信创测评,适配信创生态,性能经 TPx - IoT 国际榜单验证达国际领先水平 ,成本把控上大幅降低存储与运维成本,借助云边协同节省网络带宽、接收端 CPU 等资源;原厂团队提供企业级技术支持与可视化工具,提升使用便捷性;超 40 项国产 CPU、OS 兼容认证,集成多类大数据系统,构建稳定全流程方案,助力各行业高效运用时序数据

端边云数据协同:支持设备端、边缘、云端数据高效流转,适配多场景部署,实现数据分层处理与协同管理

性能无瓶颈:高并发写入(百万级设备)、低延迟查询,经存储与编码优化,平衡读写性能与成本

智能 AI 分析:内置时序大模型(本地微调 / 推理),配 70 + 时序 UDF 函数,覆盖数据处理到智能分析全流程

稳定安全:分布式架构保障高可用,结合权限、加密机制,满足工业场景数据安全与业务连续性需求

运维便捷:可视化工具 + 简化部署,支持集群监控、故障诊断,降低工业环境运维门槛

总结

在这里插入图片描述

本文聚焦物联网时序数据存储需求,先解析 Apache IoTDB 的核心优势 ——“设备 - 测点” 模型、10:1~20:1 压缩率、百万级并发写入与全场景部署能力,再以 “3C3D” 架构为核心,详解其从主机配置、环境脚本设置、节点启动到激活验证的集群部署全流程及节点维护操作,最后介绍基于 Apache IoTDB 的国产 TimechoDB,其在信创适配、智能 AI 分析、端边云协同与运维便捷性上的增强优势,为不同需求场景提供时序数据管理解决方案。

http://www.xdnf.cn/news/19691.html

相关文章:

  • 代码质量保障:使用Jest和React Testing Library进行单元测试
  • 服务器固件全景地图:从BIOS到BMC,升级背后的安全与性能革命
  • 日志分析与安全数据上传脚本
  • 飞算JavaAI真能帮小白搞定在线图书借阅系统?开发效果大揭秘!
  • PgManage:一款免费开源、跨平台的数据库管理工具
  • 什么是 Java 的反射机制?它有什么优缺点?
  • 普通大学生的 Web3 实习怎么找?行业指南与实践技巧这里看
  • Redis 哨兵 (基于 Docker)
  • 梯度波导_FDTD_学习_代码
  • 嵌入式 - 硬件:51单片机
  • 实训云上搭建分布式Hadoop集群[2025] 实战笔记
  • 【llama.cpp】qwen2_vl_surgery.py详解
  • Web 开发 17
  • C++中的“平凡”之美:std::unique_ptr源码探秘
  • 【SpringBootWeb开发】《一篇带你入门Web后端开发》
  • 【数学建模学习笔记】样本均衡
  • (一)基础复习(委托)
  • Python-Flask企业网页平台深度Q网络DQN强化学习推荐系统设计与实现:结合用户行为动态优化推荐策略
  • 902作业
  • @Value注解底层原理(二)
  • Redis 的整数集合:像分类收纳盒一样的整数专属存储
  • Obsidian本地笔记工具:构建知识网络关联笔记,支持Markdown与插件生态及知识图谱生成
  • LoRA至今历程回顾(74)
  • 《水浒智慧》第二部 “英雄是怎么炼成的” (上篇)读书笔记
  • Linux文本处理工具
  • 机器算法(五)模型选择与调优
  • 基于SpringBoot的广科大在线图书管理系统设计与实现(代码+数据库+LW)
  • 探索JavaScript机器学习:几款流行的库推荐
  • Leetcode 3670. Maximum Product of Two Integers With No Common Bits
  • HTML第四课:个人简介页面开发