> 技术文档 > Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南


目录

    • 引言
    • 一、Apache IoTDB产品解析
      • 1.1 架构设计
      • 1.2 核心功能
        • 1.2.1 时序数据专属优化
        • 1.2.2 生态兼容
      • 1.3 典型场景对比
    • 二、Docker安装部署(附具体的操作命令)
      • 2.1 安装依赖的工具
      • 2.2 安装证书
      • 2.3 写入源信息
      • 2.4 安装Docker-CE
      • 2.5 设置docker开机自启动
      • 2.6 验证docker安装是否成功
    • 三、Docker环境下单机版部署
      • 3.1 拉取镜像
      • 3.2 创建docker bridge网络
      • 3.3 docker-compose的yml文件
      • 3.4 启动IoTDB
      • 3.5 验证是否启动成功
      • 3.6 修改配置文件
    • 四、Docker环境下集群版部署
      • 4.1 集群架构设计(简述)
      • 4.2 拉取镜像
      • 4.3 yml文件创建
      • 4.4 启动confignode
      • 4.5 启动datanode
      • 4.6 验证是否启动成功
      • 4.7 修改配置文件
    • 五、性能调优
      • 5.1 版本适配矩阵
      • 5.2 内存调优文件配置
    • 六、版本适配与应用场景
      • 6.1 兼容性矩阵
      • 6.2 滚动升级流程
      • 6.3 应用场景
    • 七、结语

引言

如今,高效存储和管理海量时序数据成为企业数字化转型的关键。Apache IoTDB作为一款专为物联网场景设计的时序数据库,凭借其高性能、轻量级和生态集成能力,在工业监测、智慧城市、智能农业等地方得到广泛应用。本文将深入解析IoTDB的核心特性,并详细说明单机版与集群版在Docker环境下的部署实践。

虚拟机测试节点【单机版安装】和【集群版安装】学习之前文章

  • 单机版安装:Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
  • 集群版安装:Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析

一、Apache IoTDB产品解析

1.1 架构设计

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

IoTDB采用\"存储-计算\"分离的架构,通过LSM-tree存储引擎与列式存储格式,实现高并发写入与低延迟查询的平衡。其核心组件包括:

  • ConfigNode:集群元数据管理中心,负责节点协调与路由
  • DataNode:数据存储与计算节点,支持水平扩展
  • CLI工具:命令行交互界面,支持SQL与InfluxDB协议

想要详细了解IoTDB数据库:3ConfigNode+3DataNode请查看上篇文章:
[Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析]

1.2 核心功能

1.2.1 时序数据专属优化
  • 对齐时间序列:支持多设备、多传感器的同步数据建模
  • 连续查询:通过物化视图实现实时数据聚合(如每小时平均值计算)
  • 触发器机制:数据变更时自动触发预设逻辑(需v0.13+)
1.2.2 生态兼容
  • 多语言SDK:提供Java/Python/Go等语言驱动
  • 大数据集成:支持Spark/Flink实时计算,与Grafana深度整合
  • 协议适配:兼容MQTT、HTTP、JDBC等多种接入方式

1.3 典型场景对比

Apache IoTDB 针对不同的场景,这边统计出了对比表,便于伙伴们查看

应用场景 数据特点 IoTDB优势 典型案例 工业物联网 高频传感器数据(1ms~10s间隔),设备多元(万级节点),强时序性 1. 列式存储+时间分区优化压缩率(10:1)
2. 原生支持工业协议(OPC-UA/Modbus)
3. 边缘-云端协同架构 某汽车厂20000+设备监控,存储成本降低70% 能源电力 带质量标签的时序数据,需实时计算(如线损分析),数据生命周期管理(冷热分层) 1. 内置TsFile格式支持数据标记
2. 内置聚合函数(avg/max等)
3. TTL自动过期机制 某电网公司存储5TB/天的智能电表数据 智慧城市 多源异构数据(交通/环境等),空间-时间双维度查询 1. 支持时空联合索引
2. 与GIS系统集成
3. 毫秒级响应千万级数据点查询 某城市交通管理系统处理2000+路口的实时流量数据 车联网 高并发写入(10000+TPS),轨迹数据需要压缩存储 1. 基于内存的写入缓冲
2. 专有编码算法(Gorilla/RLBE)
3. 支持SQL扩展 某新能源车企存储车辆每秒20个传感器的行驶数据 医疗健康 非均匀采样数据(ECG等),需要模式匹配查询 1. 支持非对齐时间序列存储
2. 提供相似性搜索UDF
3. 医疗设备SDK集成 某三甲医院存储2000+病床的实时生命体征数据 航空航天 超高精度数据(ns级时间戳),需要故障预测 1. 纳秒级时间精度
2. 内置异常检测算法
3. 支持联邦查询 某卫星系统每秒处理10万+遥测数据点 智能制造 多维度质量分析,需与MES系统集成 1. 提供质量分析工具包
2. 支持Kafka/PLC4X连接器
3. 可视化API 某半导体厂实现生产设备全生命周期数字化

二、Docker安装部署(附具体的操作命令)

博主这里以ubuntu来安装部署,其他操作系统可以去搜索对应安装方法,需要博主来帮忙也可

2.1 安装依赖的工具

sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

2.2 安装证书

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

2.3 写入源信息

sudo add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable\"

2.4 安装Docker-CE

sudo apt-get -y updatesudo apt-get -y install docker-ce

2.5 设置docker开机自启动

sudo systemctl enable docker

2.6 验证docker安装是否成功

docker --version #显示版本信息,即安装成功

三、Docker环境下单机版部署

3.1 拉取镜像

IoTDB的Docker镜像在这个链接:https://hub.docker.com/r/apache/iotdb

博主这里是1.3.2版本

拉取镜像命令:

docker pull apache/iotdb:1.3.2-standalone

查看镜像:

docker images

效果:
Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

3.2 创建docker bridge网络

命令:

docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb

3.3 docker-compose的yml文件

把IoTDB安装目录和yml文件都放在下面这个文件目录里面,文件需要自己写(我这里有提供模版)

文件目录是

/docker-iotdb/iotdb

单机版docker-compose的文件是:

/docker-iotdb/docker-compose-standalone.yml

文件内容:

version: \"3\"services: iotdb-service: image: apache/iotdb:1.3.2-standalone #使用的镜像 hostname: iotdb container_name: iotdb restart: always  ports: - \"6667:6667\" environment: - cn_internal_address=iotdb - cn_internal_port=10710 - cn_consensus_port=10720 - cn_seed_config_node=iotdb:10710 - dn_rpc_address=iotdb - dn_internal_address=iotdb - dn_rpc_port=6667 - dn_internal_port=10730 - dn_mpp_data_exchange_port=10740 - dn_schema_region_consensus_port=10750 - dn_data_region_consensus_port=10760 - dn_seed_config_node=iotdb:10710 privileged: true volumes: - ./iotdb/data:/iotdb/data - ./iotdb/logs:/iotdb/logs networks: iotdb: ipv4_address: 172.18.0.6networks: iotdb: external: true

3.4 启动IoTDB

后台启动

docker-compose -f docker-compose-standalone.yml up -d 

3.5 验证是否启动成功

第一种验证方式:

查看日志命令

docker logs -f iotdb-datanode

是下面这样,就是启动成功了

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

第二种验证方式:

进入容器,查看服务运行状态

查看所有启动的容器命令

docker ps

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南
登录数据库

./start-cli.sh -h iotdb

使用show cluster命令查看服务状态

show cluster#查看服务状态

看到服务状态都是running正在运行,这样IoTDB就已经部署成功了

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

3.6 修改配置文件

后续如果想直接修改配置文件,可以把容器中的/conf文件夹映射出来进行修改

步骤一:拷贝容器中的/conf目录到/docker-iotdb/iotdb/conf

docker cp iotdb:/iotdb/conf /docker-iotdb/iotdb/conf

步骤二:在docker-compose-standalone.yml中添加映射

volumes: - ./iotdb/conf:/iotdb/conf

步骤三:重新启动IoTDB

docker-compose -f docker-compose-standalone.yml up -d

四、Docker环境下集群版部署

4.1 集群架构设计(简述)

因篇幅有限,集群版集体架构(3ConfigNode+3DataNode)及优势见:
Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

采用3ConfigNode+3DataNode的经典架构,博主这里为3台linux服务器,详细信息如下:

节点IP 主机名 服务 192.168.1.3 iotdb-1 ConfigNode、DataNode 192.168.1.4 iotdb-2 ConfigNode、DataNode 192.168.1.5 iotdb-3 ConfigNode、DataNode

4.2 拉取镜像

IoTDB的Docker镜像在这个链接:https://hub.docker.com/r/apache/iotdb

博主这里是1.3.2版本

在3台服务器上分别拉取IoTDB镜像

拉取镜像命令:

docker pull apache/iotdb:1.3.2-standalone

查看镜像:

docker images

效果:
Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

4.3 yml文件创建

把IoTDB安装目录和yml文件都放在下面这个文件目录里面,文件需要自己写(我这里有提供模版)

文件目录是

/docker-iotdb/iotdb

confignode的文件是:

/docker-iotdb/confignode.yml

datanode的文件是:

/docker-iotdb/datanode.yml

confignode.yml文件(示例):

version: \"3\"services: iotdb-confignode: image: apache/iotdb:latest #使用的镜像 hostname: iotdb-1|iotdb-2|iotdb-3 #根据实际情况选择,三选一 container_name: iotdb-confignode command: [\"bash\", \"-c\", \"entrypoint.sh confignode\"] restart: always environment: - cn_internal_address=iotdb-1|iotdb-2|iotdb-3 #根据实际情况选择,三选一 - cn_internal_port=10710 - cn_consensus_port=10720 - cn_seed_config_node=iotdb-1:10710 #默认第一台为seed节点 - schema_replication_factor=3 #元数据副本数 - data_replication_factor=2  #数据副本数 privileged: true volumes: - ./iotdb/data:/iotdb/data - ./iotdb/logs:/iotdb/logs network_mode: \"host\" #使用host网络

datanode.yml文件(示例):

version: \"3\"services: iotdb-datanode: image: iotdb-enterprise:1.3.2.3-standalone #使用的镜像 hostname: iotdb-1|iotdb-2|iotdb-3 #根据实际情况选择,三选一 container_name: iotdb-datanode command: [\"bash\", \"-c\", \"entrypoint.sh datanode\"] restart: always ports: - \"6667:6667\" privileged: true environment: - dn_rpc_address=iotdb-1|iotdb-2|iotdb-3 #根据实际情况选择,三选一 - dn_internal_address=iotdb-1|iotdb-2|iotdb-3 #根据实际情况选择,三选一 - dn_seed_config_node=iotdb-1:10710 #默认第1台为seed节点 - dn_rpc_port=6667 - dn_internal_port=10730 - dn_mpp_data_exchange_port=10740 - dn_schema_region_consensus_port=10750 - dn_data_region_consensus_port=10760 - schema_replication_factor=3 #元数据副本数 - data_replication_factor=2  #数据副本数 volumes: - ./iotdb/data:/iotdb/data - ./iotdb/logs:/iotdb/logs network_mode: \"host\" #使用host网络

4.4 启动confignode

在3台服务器上分别启动confignode,需要注意启动顺序

  1. 先启动第1台iotdb-1
  2. 再启动iotdb-2
  3. 再启动iotdb-3

后台启动命令:

docker-compose -f confignode.yml up -d #

4.5 启动datanode

在3台服务器上分别启动datanode

后台启动命令:

docker-compose -f datanode.yml up -d #后台启动

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

4.6 验证是否启动成功

查看日志,有如下字样,表示datanode启动成功

进入容器,查看服务运行状态

查看启动的容器

第一种验证方式:

查看日志命令

docker logs -f iotdb-datanode

是下面这样,就是启动成功了

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

第二种验证方式:

进入容器,查看服务运行状态

查看所有启动的容器命令

docker ps

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

登录数据库

./start-cli.sh -h iotdb

使用show cluster命令查看服务状态

show cluster#查看服务状态

看到服务状态都是running正在运行,这样IoTDB就已经部署成功了

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

4.7 修改配置文件

后续如果想直接修改配置文件,可以把容器中的/conf文件夹映射出来进行修改

步骤一:在3台服务器中分别拷贝容器中的/conf目录到/docker-iotdb/iotdb/conf

docker cp iotdb-confignode:/iotdb/conf /docker-iotdb/iotdb/conf或docker cp iotdb-datanode:/iotdb/conf /docker-iotdb/iotdb/conf

步骤二:在3台服务器的confignode.yml和datanode.yml中添加/conf目录映射

confignode.yml文件:

 volumes: - ./iotdb/conf:/iotdb/conf 

datanode.yml文件:

 volumes: - ./iotdb/conf:/iotdb/conf

步骤三:在3台服务器上重新启动IoTDB

docker-compose -f confignode.yml up -ddocker-compose -f datanode.yml up -d

五、性能调优

5.1 版本适配矩阵

场景类型 配置调整 效果提升 高并发写入 增大memtable_size_threshold至256M 写入延迟降低40% 复杂查询 启用enable_parallel_query=true 查询速度提升3倍 跨节点查询 调整query_timeout至60000 防止超时中断

5.2 内存调优文件配置

文件1:confignode-env.sh

export MEMORY_SIZE=\"4G\"export JAVA_OPTS=\"-Xms4G -Xmx4G -XX:+UseG1GC\"

文件2:datanode-env.sh

export MEMORY_SIZE=\"8G\"export JAVA_OPTS=\"-Xms8G -Xmx8G -XX:+UseConcMarkSweepGC\"

六、版本适配与应用场景

6.1 兼容性矩阵

IoTDB版本 JDK版本 Docker版本 推荐场景 0.13.x 及以上 JDK8/11/17 19.03+ 生产环境 0.12.x JDK8 18.09+ 兼容旧系统

6.2 滚动升级流程

三个步骤轻松完成升级

第一步:停止旧节点

docker stop datanode1

第二步:迁移数据

docker run --rm -v /old_data:/source apache/iotdb:1.3.2-standalone \\ /iotdb/sbin/migrate-tool.sh -source /source -dest /dest

第三步:启动新节点

docker run -d --name datanode1_new ... apache/iotdb:1.3.2-standalone

6.3 应用场景

一图理清Apache IoTDB数据库适用的场景

Apache IoTDB(3):时序数据库 IoTDB Docker部署从单机到集群的全场景部署与实践指南

七、结语

Apache IoTDB通过其独特的时序数据管理能力和灵活的部署方式,可针对不同场景进行安装部署。本文提供的部署方案已在多个测试环境验证。

Apache IoTDB在触发器、连续查询等高级功能上的突破,能够快速构建起高效可靠的物联网时序数据平台,为数字化转型提供数据支撑,本文详细讲述了Docker安装部署方案,建议小伙伴在实践过程中,结合具体业务场景调整配置参数,小伙伴部署中有任何问题可以私信或VX联系博主,博主会第一时间为你解答。

官方获取:👉Apache IoTDB 下载地址👈(点击下载

乒羽论坛交流