Apache IoTDB Docker部署:单机至集群全场景实战指导

引言

当下,高效存储与管理大量时序数据成为企业进行数字化转型的关键所在。Apache IoTDB是一款专为物联网场景打造的时序数据库,它凭借高性能、轻量级以及生态集成能力,在工业监测、智慧城市、智能农业等诸多领域有着广泛应用。本文将会深入剖析IoTDB的核心特性,并且详细讲解单机版和集群版在Docker环境下的部署实践。

关于虚拟机测试节点的单机版和集群版安装,可参考之前的文章:

一、Apache IoTDB产品解析

1.1 架构设计

Apache IoTDB采用“存储 - 计算”相分离的架构,借助LSM - tree存储引擎以及列式存储格式,达成高并发写入和低延迟查询的平衡。其核心组件包含:

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

若要深入了解包含3个ConfigNode和3个DataNode的IoTDB数据库,可查看上篇文章:
[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 update
sudo 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 update
sudo apt-get -y install docker-ce

2.5 设置docker开机自启动

sudo systemctl enable docker

2.6 验证docker安装是否成功

docker --version  #显示版本信息则表示安装成功

三、Docker环境下单机版部署

3.1 拉取镜像

Apache IoTDB的Docker镜像可在以下链接获取:https://hub.docker.com/r/apache/iotdb

博主这里使用的是1.3.2版本。

拉取镜像的命令为:

docker pull apache/iotdb:1.3.2-standalone

查看镜像的命令:

docker images

效果如下:
在这里插入图片描述

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.6
networks:
  iotdb:
    external: true

3.4 启动IoTDB

后台启动命令:

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

3.5 验证是否启动成功

第一种验证方式:

查看日志的命令:

docker logs -f iotdb-datanode

出现以下类似内容则表示启动成功:
在这里插入图片描述

第二种验证方式:

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

查看所有启动容器的命令:

docker ps

在这里插入图片描述

登录数据库:

./start-cli.sh -h iotdb

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

show cluster                      #查看服务状态

当看到服务状态均为running时,表明IoTDB部署成功,效果如下:
在这里插入图片描述

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 集群安装与部署的技术优势及适用场景解析]

在这里插入图片描述

采用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 拉取镜像

Apache IoTDB的Docker镜像可在以下链接获取:https://hub.docker.com/r/apache/iotdb

博主这里使用的是1.3.2版本。

在3台服务器上分别执行拉取镜像的命令:

docker pull apache/iotdb:1.3.2-standalone

查看镜像的命令:

docker images

效果如下:
在这里插入图片描述

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 #后台启动

在这里插入图片描述

4.6 验证是否启动成功

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

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

查看启动的容器:

第一种验证方式:

查看日志的命令:

docker logs -f iotdb-datanode

出现以下类似内容则表示启动成功:
在这里插入图片描述

第二种验证方式:

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

查看所有启动容器的命令:

docker ps

在这里插入图片描述

登录数据库:

./start-cli.sh -h iotdb

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

show cluster                      #查看服务状态

当看到服务状态均为running时,表明IoTDB部署成功,效果如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1d80e362521b4e5f95ceba45

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/13635.html

(0)
LomuLomu
上一篇 2025 年 9 月 18 日
下一篇 2025 年 9 月 18 日

相关推荐

  • WebStorm破解后配置会丢失吗?备份与恢复方案!

    免责声明:以下激活补丁与序列号均搜集自互联网,仅供学习交流,禁止商业用途。如条件允许,请支持正版 JetBrains! 先放一张实测图:WebStorm 2025.2.1 已顺利激活到 2099 年,爽歪歪! 下面用图文一步步演示如何给最新版 WebStorm 打上补丁并输入激活码。 嫌折腾?官方正版全家桶账号低至 32 元/年,登录即用: https://…

    2025 年 9 月 22 日
    3000
  • 微服务篇-深入了解索引库与文档 CRUD 操作、使用 RestCliet API 操作索引库与文档 CRUD(Java 客户端连接 Elasticsearch 服务端)

    🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 索引库操作 1.1 Mapping 映射属性 1.2 索引库的 CRUD 1.2.1 创建索引和映射 1.2.2 查询索引库 1.2.3 修改索引库 1.2.4 删除索引库 2.0 文档操作 2.1 新增文档 2.2 查询文档 2.3 删除文档 2.4 修改文档 2.4.…

    2024 年 12 月 27 日
    25300
  • 2025年最新DataGrip激活码与永久破解教程(支持2099年)

    本教程适用于JetBrains全家桶所有产品,包括DataGrip、PyCharm、IDEA等! 先展示最新DataGrip版本成功激活的截图,可以看到已经完美破解到2099年! 下面将用详细的图文步骤,教你如何永久激活DataGrip至2099年。 此方法适用于所有版本的DataGrip,新旧版本均可使用! 支持Windows/Mac/Linux全平台 兼…

    DataGrip激活码 2025 年 7 月 31 日
    10500
  • 程序员出海做 AI 工具:如何用 similarweb 找到最佳流量渠道?

    当然,以下是润色后的文章内容: 今天,我将与大家分享一个实用的小教程,探讨一个关键问题:“在海外市场推动产品流量增长时,如何为产品选择合适的营销渠道?” 我将介绍一个三步法,步骤如下: 识别与您产品最相似的顶级竞争对手。 明确这些竞争对手主要使用的营销渠道。 选择最适合您的营销渠道。 一、如何识别您的顶级竞争对手 以“人工智能视频剪辑工具”为例。 首先,访问…

    2024 年 12 月 24 日
    41100
  • 全面剖析NoSQL数据库:文档存储到图数据库的全场景应用

    全方位解读NoSQL数据库:从文档存储到图数据库的全场景运用 title: 透彻剖析NoSQL数据库:自文档存储至图数据库的全场景实践date: 2025/2/19updated: 2025/2/19author: cmdragon excerpt:借助电商、社交网络、物联网等十二个行业场景,融合MongoDB聚合管道、Redis Stream实时处理、Ca…

    2025 年 6 月 18 日
    15000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信