Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析
目录
-
- 引言
- 一、Apache IoTDB产品概述
-
- 1.1 核心架构设计
- 1.2 组件关系
- 1.3 核心优势
- 二、Apache IoTDB 集群部署环境准备
-
- 2.1 硬件配置建议
- 2.2 预配置
- 三、Apache IoTDB 集群部署实施(三节点架构)
-
- 3.1 节点规划
- 3.2 安装包下载
- 3.3 ZooKeeper集群配置(全局)
- 3.4 集群配置文件
-
- 3.4.1 iotdb-cluster.properties(全局)
- 3.4.2 iotdb-confignode.properties(主节点)
- 3.4.3 iotdb-datanode.properties(从节点)
- 3.5 服务启动脚本
-
- 3.5.1 systemd服务配置
- 3.5.2 启动命令
- 四、Apache IoTDB 集群部署验证与测试
-
- 4.1 状态检查
- 4.2 数据写入测试
- 4.3 高可用验证
- 4.4 启动失败问题汇总
- 五、Apache IoTDB 运维与优化
-
- 5.1 性能调优参数
- 5.2 监控指标
- 六、Apache IoTDB 部署常见问题处理
-
- 6.1 端口冲突
- 6.2 SSH免密登录
- 6.3 集群扩容
- 七、Apache IoTDB 部署方式区别及目标
-
- 7.1 两种部署方式区别
- 7.2 IoTDB 数据处理目标
- 八、总结
引言
在物联网与工业互联网快速发展的背景下,时序数据管理成为企业数字化转型的关键技术。Apache IoTDB作为一款专为时序数据设计的开源数据库,凭借其高性能、高可用性和易扩展性,在工业监控、智能电网、车联网等地方得到广泛应用
本文将介绍IoTDB的产品特性,并带领各位小伙伴详细讲述三节点集群(1主2从)的部署流程,基于稳定1.3.2版本,提供可落地的安装指南
Apache IoTDB 单机版安装点击下方链接:
👉Apache IoTDB 时序数据库介绍与单机版安装部署指南
一、Apache IoTDB产品概述
1.1 核心架构设计
博主以IoTDB经典集群部署架构3C3D(3个ConfigNode和3个DataNode)为案例,即通常所说的3C3D集群。架构图如下:
IoTDB采用\"计算存储分离\"的分布式架构,支持多节点协同工作:
- ConfigNode:负责元数据管理与集群协调(主节点)
- DataNode:承担数据存储与计算任务(从节点)
- ZooKeeper集成:实现集群状态同步与故障检测
1.2 组件关系
1.3 核心优势
- 高吞吐量:单节点支持百万级数据点/秒写入
- 压缩算法:内置多种压缩策略(SNAPPY/GZIP),存储成本降低70%
- 查询优化:支持SQL-like语法与复杂时序查询
- 生态兼容:集成Grafana、Spark、Flink等组件
二、Apache IoTDB 集群部署环境准备
2.1 硬件配置建议
2.2 预配置
# 配置文件描述符限制echo \"* soft nofile 65535\" >> /etc/security/limits.confecho \"* hard nofile 65535\" >> /etc/security/limits.conf# 配置网络参数sysctl -w net.core.somaxconn=65535sysctl -w vm.max_map_count=262144
三、Apache IoTDB 集群部署实施(三节点架构)
3.1 节点规划
采用三节点架构实现容错机制与负载均衡
3.2 安装包下载
JDK下载示例
IoTDB 下载示例
# 下载稳定版(以1.3.2为例)wget https://dlcdn.apache.org/iotdb/1.3.2/apache-iotdb-1.3.2-all-bin.zip# 解压并设置软链接unzip apache-iotdb-1.3.2-all-bin.zip -d /data/iotdbln -s /data/iotdb/apache-iotdb-1.3.2-all-bin /data/iotdb/current
3.3 ZooKeeper集群配置(全局)
配置节点:
192.168.1.101
# 创建数据目录mkdir -p /data/zookeeper/{data,log}# 配置zoo.cfgcat > /opt/zookeeper/conf/zoo.cfg <<EOFtickTime=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/datadataLogDir=/data/zookeeper/logclientPort=2181server.1=192.168.1.101:2888:3888server.2=192.168.1.102:2888:3888server.3=192.168.1.103:2888:3888EOF# 设置myidecho \"1\" > /data/zookeeper/data/myid
启动服务:
/opt/zookeeper/bin/zkServer.sh start
3.4 集群配置文件
3.4.1 iotdb-cluster.properties(全局)
配置节点:全局配置
192.168.1.101
192.168.1.102
192.168.1.103
# 集群节点列表(IP:端口格式)confignode_address_list=192.168.1.100:10710datanode_address_list=192.168.1.101:10730,192.168.1.102:10750# SSH配置(需提前配置免密登录)ssh_account=rootssh_port=1234# 部署路径配置confignode_deploy_path=/data/iotdb/currentdatanode_deploy_path=/data/iotdb/current
3.4.2 iotdb-confignode.properties(主节点)
配置节点:主节点
192.168.1.101
# 元数据服务配置cn_internal_address=192.168.1.100cn_internal_port=10710cn_consensus_port=10720# 种子节点配置(集群初始化)cn_seed_config_node=192.168.1.100:10710# 副本配置schema_replication_factor=3data_replication_factor=2
3.4.3 iotdb-datanode.properties(从节点)
配置节点:从节点
192.168.1.102
192.168.1.103
# 数据服务配置dn_rpc_address=0.0.0.0dn_rpc_port=6667dn_internal_address=192.168.1.101 # Slave1节点IPdn_internal_port=10730# 集群通信配置dn_seed_config_node=192.168.1.100:10710dn_metric_prometheus_reporter_port=9091
3.5 服务启动脚本
3.5.1 systemd服务配置
文件目录:
/etc/systemd/system/iotdb.service
[Unit]Description=Apache IoTDB ClusterAfter=network.target[Service]User=iotdbGroup=iotdbEnvironment=\"JAVA_HOME=/usr/local/java/jdk1.8.0_411\"ExecStart=/data/iotdb/current/sbin/start-all.shExecStop=/data/iotdb/current/sbin/stop-all.shRestart=on-failureRestartSec=30s[Install]WantedBy=multi-user.target
3.5.2 启动命令
以上配置完成之后,来启动服务试下
# 初始化配置(首次部署时执行)/data/iotdb/current/sbin/init-cluster.sh# 启动服务systemctl start iotdbjournalctl -u iotdb -f --since=\"5 min ago\"
四、Apache IoTDB 集群部署验证与测试
4.1 状态检查
上面的环境配置、文件配置并且命令都已启动,接下来我们检查一下状态
检查节点状态
/data/iotdb/current/sbin/status-all.sh# 预期输出ConfigNode [192.168.1.100:10710] STATUS: HEALTHYDataNode [192.168.1.101:6667] STATUS: HEALTHYDataNode [192.168.1.102:6667] STATUS: HEALTHY
通过CLI检查
SHOW CLUSTER-- 输出下面内容就OK了-- +----------------+-------+---------------+--------------------+-- | Node | State | RpcAddress | DataNodeVersion |-- +----------------+-------+---------------+--------------------+-- | 192.168.1.100 | Running|192.168.1.100:6667|1.3.2 |-- | 192.168.1.101 | Running|192.168.1.101:6667|1.3.2 |-- | 192.168.1.102 | Running|192.168.1.102:6667|1.3.2 |-- +----------------+-------+---------------+--------------------+
4.2 数据写入测试
检查数据是否可以写入,工具是否可用
-- 创建存储组CREATE STORAGE GROUP root.ln-- 创建时序CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAININSERT INTO root.ln.wf01.wt01(timestamp,status) VALUES(1627833600000,true)
4.3 高可用验证
# 模拟主节点故障systemctl stop iotdb-confignode# 观察从节点选举tail -f /data/iotdb/current/logs/iotdb-confignode.log
4.4 启动失败问题汇总
Confignode节点启动失败
-
步骤 1: 查看启动日志,检查是否修改了某些首次启动后不可改的参数。
-
步骤 2: 查看启动日志,检查是否出现其他异常。
-
步骤 3: 如果是首次部署或者数据可删除,也可清理环境,重新部署后,再次启动。
-
步骤 4: 清理环境步骤:
(1)结束所有 ConfigNode 和 DataNode 进程
# 1. 停止 ConfigNode 和 DataNode 服务 sbin/stop-standalone.sh # 2. 检查是否还有进程残留 jps # 或者 ps -ef|grep iotdb # 3. 如果有进程残留,则手动kill kill -9 <pid> # 如果确定机器上仅有1个iotdb,可以使用下面命令清理残留进程 ps -ef|grep iotdb|grep -v grep|tr -s \' \' \' \' |cut -d \' \' -f2|xargs kill -9
(2)删除 data 和 logs 目录
删除 data 目录是必要的,删除 logs 目录是为了纯净日志,后续好做问题排查,非必需删除
cd /data/iotdb rm -rf data logs
五、Apache IoTDB 运维与优化
5.1 性能调优参数
在 iotdb-engine.properties
文件中配置
group_size_in_byte=1048576 # 内存数据落盘阈值page_size_in_byte=65536 # 列数据打包大小
在 iotdb-cluster.properties
文件中配置
write_consistency_level=STRONG # 写一致性级别read_consistency_level=WEAK # 读一致性级别
5.2 监控指标
六、Apache IoTDB 部署常见问题处理
6.1 端口冲突
修改相关配置文件,将应用端口更改为空闲端口
# 检查端口占用netstat -tunlp | grep 6667# 修改datanode端口sed -i \'s/dn_rpc_port=6667/dn_rpc_port=6668/\' conf/iotdb-datanode.properties
6.2 SSH免密登录
SSH免密登录通过公钥认证机制实现
# 生成密钥对ssh-keygen -t rsa -b 4096# 分发公钥ssh-copy-id root@192.168.1.101ssh-copy-id root@192.168.1.102
6.3 集群扩容
准备新的从节点3
- 新节点准备
unzip apache-iotdb-1.3.2-all-bin.zip -d /data/iotdb/node3
- 修改配置文件:
iotdb-cluster.properties
vi conf/iotdb-cluster.propertiesconfignode_address_list=192.168.1.100:10710,192.168.1.103:10770
- 启动新节点
/data/iotdb/node3/sbin/add-node.sh
七、Apache IoTDB 部署方式区别及目标
7.1 两种部署方式区别
结论:单机模式和集群模式,部署步骤类似(逐个增加 ConfigNode 和 DataNode),仅副本数和可提供服务的最少节点数不同。
7.2 IoTDB 数据处理目标
通过实现上图目标,时序数据处理能够支持从业务监控到智能决策的多种应用,最终输出的数据质量与分析结果直接影响下游任务的可靠性
八、总结
Apache IoTDB通过其创新的\"云原生时序数据库\"架构,有效解决了物联网场景下海量时序数据的管理难题。本文详细讲述了三节点集群部署方案,小伙伴部署中的任何问题可以私信或VX联系博主,博主会第一时间为你解答。
官方获取:👉Apache IoTDB 下载地址👈(点击下载)