Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
目录
- 一、Apache IoTDB 是什么?
- 1.1 产品介绍
- 1.2 产品体系
- 1.3 产品架构
- 二、IoTDB 环境配置
- 2.1 Linux系统需准备环境
- 2.2 Windows系统需准备环境
- 2.3 网络配置
- 2.3.1 关闭防火墙
- 2.3.2 查看端口是否占用
- 2.3.3 避雷经验
- 三、IoTDB 单机版系统部署安装指南
- 3.1 产品下载
- 3.2 注意事项
- 3.3 安装步骤
- 3.3.1 解压安装包并进入安装目录
- 3.3.2 参数配置
- 3.3.3 启动ConfigNode 节点
- 3.3.4 启动DataNode 节点
- 3.3.5 验证部署
- 3.3 所遇BUG总结
- 四、IoTDB 产品优势
- 4.1 Apache IoTDB 优势
- 4.2 Apache IoTDB 应用场景
- 4.2.1 应用背景
- 4.2.2 架构
- 4.2.3 结论
- 五、总结
一、Apache IoTDB 是什么?
1.1 产品介绍
Apache IoTDB 是一款低成本、高性能的物联网原生时序数据库。它可以解决企业组建物联网大数据平台管理时序数据时所遇到的应用场景复杂、数据体量大、采样频率高、数据乱序多、数据处理耗时长、分析需求多样、存储与运维成本高等多种问题。
1.2 产品体系
IoTDB系统由多个组件组成,能够高效管理和分析物联网产生的海量时序数据
- 时序数据库(Apache IoTDB):时序数据存储的核心组件,其能够为用户提供高压缩存储能力、丰富时序查询能力、实时流处理能力,同时具备数据的高可用和集群的高扩展性,并在安全层面提供全方位保障。同时 TimechoDB 还为用户提供多种应用工具,方便用户配置和管理系统;多语言API和外部系统应用集成能力,方便用户在 TimechoDB 基础上构建业务应用。
- 时序数据标准文件格式(Apache TsFile):该文件格式是一种专为时序数据设计的存储格式,可以高效地存储和查询海量时序数据。目前 IoTDB、AINode 等模块的底层存储文件均由 Apache TsFile 进行支撑。通过 TsFile,用户可以在采集、管理、应用&分析阶段统一使用相同的文件格式进行数据管理,极大简化了数据采集到分析的整个流程,提高时序数据管理的效率和便捷度。
- 时序模型训推一体化引擎(IoTDB AINode):针对智能分析场景,IoTDB 提供 AINode 时序模型训推一体化引擎,它提供了一套完整的时序数据分析工具,底层为模型训练引擎,支持训练任务与数据管理,与包括机器学习、深度学习等。通过这些工具,用户可以对存储在 IoTDB 中的数据进行深入分析,挖掘出其中的价值
IoTDB(物联网数据库)系统是一个专门为物联网场景设计的分布式时序数据库,由多个核心组件协同工作,能够高效管理和分析物联网设备产生的海量时序数据。其主要组件包括:
- 存储引擎层
- 采用分层存储架构,包含内存缓冲区(WAL日志)、本地磁盘存储和云存储
- 支持TSFile专用文件格式,针对时间序列数据优化存储结构
- 实现多级缓存机制,包括热点数据缓存和预读取优化
- 查询处理层
- 提供丰富的查询接口:SQL查询、原生API、RESTful接口
- 内置多种时序数据处理算法:降采样、插值、异常检测等
- 支持分布式并行查询计算,可跨节点执行复杂分析任务
- 元数据管理层
- 采用树形结构组织设备元数据,支持设备分组和层级管理
- 实现动态元数据更新机制,适应物联网设备的动态变化
- 提供元数据缓存和索引,加速元数据访问
典型应用场景:
- 工业物联网:管理工厂设备传感器数据,实现预测性维护
- 车联网:存储和分析车辆运行数据,支持远程诊断
- 智慧城市:汇聚城市基础设施监测数据,进行态势分析
性能优势:
- 单节点可支持每秒百万级数据点写入
- 压缩比可达10:1以上,显著降低存储成本
- 查询延迟在毫秒级,满足实时分析需求
系统通过上述组件的协同工作,实现了对物联网时序数据的高效采集、存储、查询和分析全生命周期管理。
1.3 产品架构
三横两纵架构体系,该架构体系是一种广泛应用于信息系统和政务数字化建设的顶层设计框架。该体系结构由三个横向层次和两个纵向支撑组成,形成了完整的系统架构。
横向层次架构:
- 基础设施层(IaaS层)
- 包括云计算平台、网络通信设施、数据中心等硬件基础
- 典型案例:政务云平台建设,如某省统一的政务云服务平台
- 关键技术:虚拟化技术、SDN网络技术等
- 数据资源层(DaaS层)
- 涵盖各类数据资源库、数据交换平台、数据治理工具
- 具体包括:人口基础数据库、法人单位数据库、空间地理数据库等
- 数据标准规范体系建设和数据质量管理
- 应用服务层(SaaS层)
- 各类业务应用系统和公共服务平台
- 如"一网通办"政务服务系统、智慧城市管理平台等
- 采用微服务架构,实现服务快速部署和弹性扩展
纵向支撑体系:
- 标准规范体系
- 技术标准:接口规范、数据标准、安全标准等
- 管理规范:运维管理制度、数据共享管理办法等
- 实施案例:某市政务信息化标准规范汇编
- 安全保障体系
- 网络安全防护:防火墙、入侵检测、VPN等
- 数据安全:加密传输、访问控制、数据脱敏
- 安全管理:安全审计、应急预案、等保测评
核心优势:
- 多模存储:支持时序数据、关系数据、空间数据的统一存储
- HTAP能力:实时写入与复杂分析的混合负载处理
- 生态兼容:完整支持SQL标准,兼容PostgreSQL协议
- 国密支持:内置SM2/SM3/SM4国密算法模块
该架构的优势在于实现了资源集约化、服务标准化和管理规范化,可以有效避免重复建设、信息孤岛等问题。
二、IoTDB 环境配置
2.1 Linux系统需准备环境
运行环境:
- Java项目:JDK 1.8或11+
- Python项目:Python 3.6+,建议使用虚拟环境(venv或conda)
- Node.js项目:Node.js 12.x或14.x
- Docker:Docker 19.03+和Docker Compose 1.27+(容器化部署时)
数据库:
- MySQL 5.7+
- PostgreSQL 12+
- MongoDB 4.2+
- SQLite(开发测试用)
2.2 Windows系统需准备环境
- 配置JDK即可
2.3 网络配置
2.3.1 关闭防火墙
# 查看防火墙
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
2.3.2 查看端口是否占用
如果命令有输出,则表示该端口已被占用。检查方式如下:
lsof -i:6667 或 netstat -tunp | grep 6667
lsof -i:10710 或 netstat -tunp | grep 10710
lsof -i:10720 或 netstat -tunp | grep 10720
2.3.3 避雷经验
- 将系统 swap 优先级降至最低
echo "vm.swappiness = 0">> /etc/sysctl.conf
# 一起执行 swapoff -a 和 swapon -a 命令是为了将 swap 里的数据转储回内存,并清空 swap 里的数据。
# 不可省略 swappiness 设置而只执行 swapoff -a;否则,重启后 swap 会再次自动打开,使得操作失效。
swapoff -a && swapon -a
# 在不重启的情况下使配置生效。
sysctl -p
# swap的已使用内存变为0
free -m
- 设置系统最大打开文件数为 65535,以避免出现 "太多的打开文件 "的错误。
#查看当前限制
ulimit -n
# 临时修改
ulimit -n 65535
# 永久修改
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
#退出当前终端会话后查看,预期显示65535
ulimit -n
- 安装 Java 运行环境 ,Java 版本 >= 1.8,请确保已设置 jdk 环境变量。(V1.3.2.2 及之上版本推荐直接部署JDK17,老版本JDK部分场景下性能有问题,且datanode会出现stop不掉的问题)
三、IoTDB 单机版系统部署安装指南
由于篇幅所限,本文先介绍IoTDB单机版的系统部署方案,后续将持续更新,分享更多相关内容
3.1 产品下载
👉Apache IoTDB 下载地址👈(点击下载)
3.2 注意事项
1、部署时推荐优先使用hostname进行IP配置,可避免后期修改主机ip导致数据库无法启动的问题。设置hostname需要在目标服务器上配置/etc/hosts,如本机ip是192.168.1.3,hostname是iotdb-1,则可以使用以下命令设置服务器的 hostname,并使用hostname配置IoTDB的cn_internal_address、dn_internal_address、dn_rpc_address。
echo "192.168.1.3 iotdb-1" >> /etc/hosts
2、部分参数首次启动后不能修改,请参考下方的【2.3.2 参数配置】章节进行设置。
3、无论是在linux还是windows中,请确保IoTDB的安装路径中不含空格和中文,避免软件运行异常。
4、安装部署IoTDB时需要保持使用同一个用户进行操作,您可以:
- 使用 root 用户(推荐):使用 root 用户可以避免权限等问题。
- 使用固定的非 root 用户:
- 使用同一用户操作:确保在启动、停止等操作均保持使用同一用户,不要切换用户。
- 避免使用 sudo:尽量避免使用 sudo 命令,因为它会以 root 用户权限执行命令,可能会引起权限混淆或安全问题。
3.3 安装步骤
3.3.1 解压安装包并进入安装目录
unzip apache-iotdb-{version}-all-bin.zip
cd apache-iotdb-{version}-all-bin
3.3.2 参数配置
(1)环境脚本配置
./conf/confignode-env.sh(./conf/confignode-env.bat)配置
配置项 | 说明 | 默认值 | 推荐值 | 备注 |
---|---|---|---|---|
MEMORY_SIZE | IoTDB ConfigNode节点可以使用的内存总量 | 空 | 可按需填写 | 填写后系统会根据填写的数值来分配内存 重启服务生效 |
./conf/datanode-env.sh(./conf/datanode-env.bat)配置
配置项 | 说明 | 默认值 | 推荐值 | 备注 |
---|---|---|---|---|
MEMORY_SIZE | IoTDB DataNode节点可以使用的内存总量 | 空 | 可按需填写 | 填写后系统会根据填写的数值来分配内存 重启服务生效 |
(2)系统配置
./conf/iotdb-system.properties 文件
配置项 | 说明 | 默认值 | 推荐值 | 备注 |
---|---|---|---|---|
cluster_name | 集群名称 | defaultCluster | 可根据需要设置集群名称 | 首次启动后不可修改 |
schema_replication_factor | 元数据副本数,单机版此处设置为 1 | 1 | 1 | 默认1,首次启动后不可修改 |
data_replication_factor | 数据副本数,单机版此处设置为 1 | 1 | 1 | 默认1,首次启动后不可修改 |
(3)ConfigNode 配置
打开ConfigNode配置文件(./conf/iotdb-system.properties文件),设置以下参数:
配置项 | 说明 | 默认值 | 推荐值 | 备注 |
---|---|---|---|---|
cn_internal_address | ConfigNode在集群内部通讯使用的地址 | 127.0.0.1 | 所在服务器的IPV4地址或hostname,推荐使用hostname | 首次启动后不能修改 |
cn_internal_port | ConfigNode在集群内部通讯使用的端口 | 10710 | 10710 | 首次启动后不能修改 |
cn_consensus_port | ConfigNode副本组共识协议通信使用的端口 | 10720 | 10720 | 首次启动后不能修改 |
cn_seed_config_node | 节点注册加入集群时连接的ConfigNode的地址,cn_internal_address:cn_internal_port | 127.0.0.1:10710 | cn_internal_address:cn_internal_port | 首次启动后不能修改 |
3.3.3 启动ConfigNode 节点
进入iotdb的sbin目录下,启动confignode
./start-confignode.sh -d #“-d”参数将在后台进行启动
3.3.4 启动DataNode 节点
进入iotdb的sbin目录下,启动datanode:
cd sbin
./start-datanode.sh -d #-d参数将在后台进行启动
3.3.5 验证部署
可直接执行 ./sbin 目录下的 Cli 启动脚本:
./start-cli.sh -h ip(本机ip或域名) -p 端口号(6667)
成功启动后,出现如下界面显示IoTDB安装成功。
出现安装成功界面后,使用show cluster命令查看服务运行状态
当看到status都是running表示服务启动成功
注意:出现ACTIVATED(W)为被动激活,表示此ConfigNode没有license文件(或没有签发时间戳最新的license文件)。此时建议检查license文件是否已放入license文件夹,没有请放入license文件,若已存在license文件,可能是此节点license文件与其他节点信息不一致导致,请联系工作人员重新申请
3.3 所遇BUG总结
Confignode节点启动失败
1: 请查看启动日志,检查是否修改了某些首次启动后不可改的参数。
2: 请查看启动日志,检查是否出现其他异常。日志中若存在异常现象,请联系技术支持人员咨询解决方案。
3: 如果是首次部署或者数据可删除,也可按下述步骤清理环境,重新部署后,再次启动。
四、IoTDB 产品优势
4.1 Apache IoTDB 优势
-
灵活的部署方式:支持云端一键部署、终端解压即用、终端-云端无缝连接(数据云端同步工具)
-
低硬件成本的存储解决方案:支持高压缩比的磁盘存储,无需区分历史库与实时库,数据统一管理
-
层级化的测点组织管理方式:支持在系统中根据设备实际层级关系进行建模,以实现与工业测点管理结构的对齐,同时支持针对层级结构的目录查看、检索等能力
-
高通量的数据读写:支持百万级设备接入、数据高速读写、乱序/多频采集等复杂工业读写场景
-
丰富的时间序列查询语义:支持时序数据原生计算引擎,支持查询时时间戳对齐,提供近百种内置聚合与时序计算函数,支持面向时序特征分析和AI能力
-
高可用的分布式系统:支持HA分布式架构,系统提供7*24小时不间断的实时数据库服务,一个物理节点宕机或网络故障,不会影响系统的正常运行;支持物理节点的增加、删除或过热,系统会自动进行计算/存储资源的负载均衡处理;支持异构环境,不同类型、不同性能的服务器可以组建集群,系统根据物理机的配置,自动负载均衡
-
极低的使用&运维门槛:支持类 SQL 语言、提供多语言原生二次开发接口、具备控制台等完善的工具体系
-
丰富的生态环境对接:支持Hadoop、Spark等大数据生态系统组件对接,支持Grafana、Thingsboard、DataEase等设备管理和可视化工具
4.2 Apache IoTDB 应用场景
4.2.1 应用背景
近年来,随着科技的不断进步,航空航天领域正进一步加快数字化与智能化建设。先进的数据采集和处理技术逐渐成为提升飞行安全、优化系统性能的重要手段。通过对飞机、火箭、卫星等设备在设计、制造、试飞、运行等全流程中产生的海量时序数据进行高效管理,企业能实现对飞行任务中关键系统的精准监测与分析,通过遥测数据实时回传、试飞数据快速导入,实现航空信息的监测和设计改进,确保飞行任务的安全可靠执行。
4.2.2 架构
IoTDB 凭借其国产自研的高效低流量数据同步、离线数据迁移、丰富的部署选择和低资源占用等特点,为行业的数据管理和业务扩展提供了数据基础,为航空航天领域的技术创新和持续发展提供有力支撑。
4.2.3 结论
科技进步驱动航空航天数字化智能化转型,企业通过全周期数据管理整合实时遥测与试飞数据,实现关键系统精准测,推动设计优化与安全管控。IoTDB以国产自研技术优势,通过高效低流量同步、离线迁移、灵活部署及低资源占用特性,为行业构建可靠数据底座,支撑技术创新与可持续发展。
由于篇幅所限,本文先介绍IoTDB单机版的系统部署方案,后续将持续更新,分享更多相关内容
五、总结
Apache IoTDB广泛应用于工业物联网、车联网、智能家居等领域,能够有效解决海量时序数据的存储和分析挑战。本文详细讲述了单机部署的全流程。建议开发者根据业务规模选择合适部署方式,并充分利用其内置的监控工具进行性能调优,后续将持续更新,分享更多相关安装部署及使用。
👉Apache IoTDB 下载地址👈(点击下载)
由于篇幅所限,本文先介绍IoTDB单机版的系统部署方案,后续将持续更新,分享更多相关内容