Ubuntu 22.04 安装 Apache IoTDB 2.0.11 指南
在 Ubuntu 22.04 真实服务器上从零到一离线/在线安装 Apache IoTDB 2.0.11(standalone),含 JDK17 配置、JVM 堆限制、启动与 CLI 建库建测点插查全流程实测。
Ubuntu 22.04 安装 Apache IoTDB 2.0.11 指南
目标:在 Ubuntu 22.04 x86_64 真实服务器上完成 Apache IoTDB(时序数据库)2.0.11 的 0→1 全流程安装与验证,覆盖 JDK 环境、JVM 堆限制、standalone 启动、CLI 建库建测点与插入查询,已在
/opt/iotdb-exp(安装根目录/opt/iotdb-exp/apache-iotdb-2.0.11-all-bin)实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(
NAME="Ubuntu",VERSION_ID="22.04") - 系统架构:x86_64(
uname -m输出x86_64) - 运行用户:root
- JDK:OpenJDK 17.0.20.1(IoTDB 2.0.x 要求 Java 17 及以上)
- 安装目录:
/opt/iotdb-exp/apache-iotdb-2.0.11-all-bin - 数据目录:
/opt/iotdb-exp/apache-iotdb-2.0.11-all-bin/data(含confignode/、datanode/) - 日志目录:
/opt/iotdb-exp/apache-iotdb-2.0.11-all-bin/logs - 关键端口:
6667(DataNode CLI/RPC)、10710(ConfigNode RPC)、10720(ConfigNode 共识)、10730(DataNode 内部 RPC)、10740(MPP 数据交换)、10750/10760(schema/data region 共识)、9091/9092(Prometheus 指标) - 版本:Apache IoTDB 2.0.11(Build 7c0de06,
SHOW VERSION;实测) - 下载源:
https://downloads.apache.org/iotdb/2.0.11/ - 测试账号:root / 密码
q1w2e3r4(由默认密码修改而来)
二、前置条件
- 操作系统为 Ubuntu 22.04(PASS 认证、x86_64)。
- 能够访问外网以便
apt安装依赖、wget从 Apache 官方下载(下载源downloads.apache.org/archive.apache.org)。 - 至少 4GB 内存用于 standalone 双进程(ConfigNode + DataNode)运行;下方会显式把 JVM 堆限制在 512MB,见「五、配置说明」。
- 磁盘留有足够空间存放数据与 WAL(测试环境约需要数百 MB 以上)。
- 拥有 root 权限执行安装与启动。
三、版本选型说明
Apache IoTDB 官方下载目录 https://downloads.apache.org/iotdb/ 实测存在以下版本线(2026 年 10 月):
| 版本线 | 目录 | 状态 | 说明 |
|---|---|---|---|
| 0.13.4 | 0.13.4/ | 老旧 | 早期导入(cluster),脚本与目录结构与 1.x/2.x 差异大,不推荐 |
| 1.3.7 | 1.3.7/ | 稳定/维护 | 引入 Tree+Table 模型雏形,start-server.sh 形态 |
| 2.0.10 | 2.0.10/ | 稳定 | 2.0 稳定线,树+表双模型 |
| 2.0.11 | 2.0.11/ | 最新稳定(推荐) | 当前 Apache 官方最新稳定版,本指南实测版本 |
💡 说明:2.0.x 起安装包统一拆分为
all-bin、confignode-bin、datanode-bin、cli-bin、edge-bin、library-udf-bin等独立压缩包。单机/测试使用apache-iotdb-<版本>-all-bin.zip一个包即可包含 ConfigNode、DataNode 与 CLI;集群场景则分别使用confignode-bin与datanode-bin部署在两台服务器。
建议:内网隔离、无外网或公司离线环境 → 提前用 wget 把 all-bin.zip 与校验和文件下载到本地再上传;可联网环境 → 直接按本指南在线 wget 下载即可。
四、部署步骤
4.1 更新系统源并安装依赖(JDK、wget、unzip)
apt-get update
apt-get install -y openjdk-17-jdk-headless wget unzip net-tools
安装完成后确认 Java 版本(实测输出):
java -version
回显:
openjdk version "17.0.20.1" 2026-08-18
OpenJDK Runtime Environment (build 17.0.20.1+1-1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.20.1+1-1-22.04-Ubuntu, mixed mode, sharing)
⚠️ 注意:IoTDB 2.0.x 的
datanode-env.sh/confignode-env.sh启动脚本会检查 JDK 大版本,Maj.Api< 17 时直接报IoTDB requires Java 17 or later.并退出,因此必须使用 Java 17+,不能再用 JDK 8/11 启动 2.0.x。
4.2 配置 JAVA_HOME 环境变量
JDK 17 安装路径为 /usr/lib/jvm/java-17-openjdk-amd64。写入 /etc/profile.d/java.sh 使其登录即生效:
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" > /etc/profile.d/java.sh
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile.d/java.sh
chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
echo $JAVA_HOME
验证回显:
/usr/lib/jvm/java-17-openjdk-amd64
💡 说明:
sbin/start-cli.sh等脚本默认从JAVA_HOME或PATH里找java;若未设置JAVA_HOME,脚本报Unable to find java executable. Check JAVA_HOME and PATH environment variables.。配置好JAVA_HOME即可避免。
4.3 从 Apache 官方下载 IoTDB 2.0.11 all-bin
mkdir -p /opt/iotdb-exp
cd /opt/iotdb-exp
wget https://downloads.apache.org/iotdb/2.0.11/apache-iotdb-2.0.11-all-bin.zip
下载完成后核对文件大小与校验和(本指南实测):
ls -lh apache-iotdb-2.0.11-all-bin.zip
sha512sum apache-iotdb-2.0.11-all-bin.zip
实测回显:
-rw-r--r-- 1 root root 114M Sep 11 02:55 apache-iotdb-2.0.11-all-bin.zip
f569ffc94aed2ad898cb256e693ff85c8a0d9bbf02a7bb920858d152b1f0980a4b2f5e4574ddc5727268f5522d739b7cda7abc3d72eb604fc20ce821ca829ed0 apache-iotdb-2.0.11-all-bin.zip
⚠️ 注意:Apache 每个版本目录下都有
KEYS与对应.sha512/.asc文件,生产环境建议下载校验和文件并比对,防止下载被篡改。
4.4 解压到安装目录
cd /opt/iotdb-exp
unzip -q apache-iotdb-2.0.11-all-bin.zip
ls -la /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin
解压后顶层结构(实测):
LICENSE NOTICE README.md README_ZH.md RELEASE_NOTES.md
conf lib licenses sbin tools
关键目录说明:
| 目录 | 说明 |
|---|---|
sbin/ | 启动脚本:start-standalone.sh、start-confignode.sh、start-datanode.sh、start-cli.sh、stop-*.sh |
conf/ | 配置文件:iotdb-system.properties、datanode-env.sh、confignode-env.sh 等 |
lib/ | 依赖 jar 包 |
tools/ | 运维与工具脚本(导入导出、schema 管理、tsfile 校验等) |
4.5 启动 standalone 服务
2.0.x 单机使用 sbin/start-standalone.sh,会同时拉起 ConfigNode 与 DataNode 两个 Java 进程:
cd /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin
sbin/start-standalone.sh
实测回显:
Execute start-standalone.sh finished, you can see more details in the logs of confignode and datanode
4.6 验证进程与端口
进程(jps -l 实测):
3684 org.apache.iotdb.db.service.DataNode
3592 org.apache.iotdb.confignode.service.ConfigNode
5706 jdk.jcmd/sun.tools.jps.Jps
使用 jps -v 确认 JVM 堆设置生效(实测摘录,可见 -Xms512M -Xmx512M -XX:MaxDirectMemorySize=256M):
3592 ConfigNode -Xms512M -Xmx512M -XX:MaxDirectMemorySize=256M -Dname=iotdb.ConfigNode
3684 DataNode -Xms512M -Xmx512M -XX:MaxDirectMemorySize=256M -Dname=iotdb.IoTDB
端口监听(netstat 实测):
tcp6 0 0 127.0.0.1:6667 :::* LISTEN 3684/java
tcp6 0 0 127.0.0.1:10710 :::* LISTEN 3592/java
tcp6 0 0 127.0.0.1:10730 :::* LISTEN 3684/java
日志就绪信息(logs/log_datanode_all.log 与 logs/log_confignode_all.log 实测摘录):
Congratulations, IoTDB DataNode is set up successfully. Now, enjoy yourself!
DataNode started
IoTDB-ConfigNode has successfully started and joined the cluster: defaultCluster.
IoTDB started
4.7 用 CLI 连接并做功能验证
先以默认账号 root/root 连接,把密码改为团队公共演示密码 q1w2e3r4:
cd /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -e "ALTER USER root SET PASSWORD \"q1w2e3r4\";"
回显:
Msg: The statement is executed successfully.
查看现有数据库:
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "SHOW DATABASES;"
回显:
+--------+-----------------------+---------------------+-------------------+---------------------+
|Database|SchemaReplicationFactor|DataReplicationFactor|TimePartitionOrigin|TimePartitionInterval|
+--------+-----------------------+---------------------+-------------------+---------------------+
Empty set.
It costs 0.285s
创建数据库(即数据结构中的 database/schema group):
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "CREATE DATABASE root.iot;"
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "SHOW DATABASES;"
回显:
Msg: The statement is executed successfully.
+--------+-----------------------+---------------------+-------------------+---------------------+
|Database|SchemaReplicationFactor|DataReplicationFactor|TimePartitionOrigin|TimePartitionInterval|
+--------+-----------------------+---------------------+-------------------+---------------------+
|root.iot| 1| 1| 0| 604800000|
+--------+-----------------------+---------------------+-------------------+---------------------+
Total line number = 1
It costs 0.123s
创建测点(时间序列 schema):
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "CREATE TIMESERIES root.iot.sensor.temperature WITH DATATYPE=FLOAT, ENCODING=PLAIN, COMPRESSOR=SNAPPY;"
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "CREATE TIMESERIES root.iot.sensor.humidity WITH DATATYPE=DOUBLE, ENCODING=PLAIN, COMPRESSOR=SNAPPY;"
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "SHOW TIMESERIES;"
回显:
Msg: The statement is executed successfully.
Msg: The statement is executed successfully.
+---------------------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
| Timeseries|Alias|Database|DataType|Encoding|Compression|Tags|Attributes|Deadband|DeadbandParameters|ViewType|
+---------------------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
|root.iot.sensor.temperature| null|root.iot| FLOAT| PLAIN| SNAPPY|null| null| null| null| BASE|
| root.iot.sensor.humidity| null|root.iot| DOUBLE| PLAIN| SNAPPY|null| null| null| null| BASE|
+---------------------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
Total line number = 2
It costs 0.963s
插入时序数据:
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "INSERT INTO root.iot.sensor(timestamp, temperature, humidity) VALUES (1690000000000, 25.5, 60.0);"
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "INSERT INTO root.iot.sensor(timestamp, temperature, humidity) VALUES (1690000001000, 26.2, 58.8), (1690000002000, 27.0, 61.5);"
回显:
Msg: The statement is executed successfully.
Msg: The statement is executed successfully.
查询时序数据:
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "SELECT * FROM root.iot.sensor;"
回显:
+------------------------+---------------------------+------------------------+
| Time|root.iot.sensor.temperature|root.iot.sensor.humidity|
+------------------------+---------------------------+------------------------+
|2023-07-22T04:26:40.000Z| 25.5| 60.0|
|2023-07-22T04:26:41.000Z| 26.2| 58.8|
|2023-07-22T04:26:42.000Z| 27.0| 61.5|
+------------------------+---------------------------+------------------------+
Total line number = 3
It costs 0.332s
查看版本:
sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw q1w2e3r4 -e "SHOW VERSION;"
回显:
+-------+---------+
|Version|BuildInfo|
+-------+---------+
| 2.0.11| 7c0de06|
+-------+---------+
Total line number = 1
It costs 0.026s
五、配置说明
5.1 配置文件位置
| 文件 | 作用 |
|---|---|
conf/iotdb-system.properties | 集群/节点/RPC/端口/副本/目录/指标等核心配置 |
conf/datanode-env.sh | DataNode 的 JVM 参数(堆、非堆、GC 日志等) |
conf/confignode-env.sh | ConfigNode 的 JVM 参数 |
conf/iotdb-common.sh | 通用环境脚本 |
conf/jmx.access / conf/jmx.password | JMX 认证 |
5.2 端口配置(conf/iotdb-system.properties)
实测默认值(摘录):
cn_internal_address=127.0.0.1
cn_internal_port=10710
cn_consensus_port=10720
dn_rpc_address=127.0.0.1
dn_rpc_port=6667
dn_internal_address=127.0.0.1
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=1
data_replication_factor=1
dn_metric_prometheus_reporter_port=9092
5.3 JVM 堆限制(256–512MB)
2.0.x 通过 conf/datanode-env.sh 与 conf/confignode-env.sh 里的 ON_HEAP_MEMORY/OFF_HEAP_MEMORY 控制堆(-Xms/-Xmx)与非堆(-XX:MaxDirectMemorySize)。默认按系统内存 1/2 自动计算,测试/低配服务器建议显式限制在 256–512MB。
编辑 conf/datanode-env.sh,把堆设为 512MB、非堆 256MB(把注释掉的默认行放开并按需改值):
cd /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin/conf
sed -i "s|#ON_HEAP_MEMORY=\"2G\"|ON_HEAP_MEMORY=\"512M\"|g" datanode-env.sh
sed -i "s|#OFF_HEAP_MEMORY=\"512M\"|OFF_HEAP_MEMORY=\"256M\"|g" datanode-env.sh
sed -i "s|#ON_HEAP_MEMORY=\"2G\"|ON_HEAP_MEMORY=\"512M\"|g" confignode-env.sh
sed -i "s|#OFF_HEAP_MEMORY=\"512M\"|OFF_HEAP_MEMORY=\"256M\"|g" confignode-env.sh
修改后重启服务,并用 jps -v 验证生效(实测看到 -Xms512M -Xmx512M -XX:MaxDirectMemorySize=256M):
3592 ConfigNode -Xms512M -Xmx512M -XX:MaxDirectMemorySize=256M -Dname=iotdb.ConfigNode
3684 DataNode -Xms512M -Xmx512M -XX:MaxDirectMemorySize=256M -Dname=iotdb.IoTDB
💡 说明:若需更小堆(256MB),把
ON_HEAP_MEMORY与FF_HEAP_MEMORY均改为256M即可。堆过小会触发频繁 GC,适合纯功能验证;生产建议按数据量评估。
六、注意事项
- IoTDB 2.0.x 要求 Java 17+,
JAVA_HOME未配置会启动失败。 - 首次连接建议使用默认
root/root,随后用ALTER USER root SET PASSWORD修改为强密码q1w2e3r4。 - 单机
start-standalone.sh同时跑 ConfigNode 与 DataNode 两个进程,共同占用约 1GB+ 内存;低配机器务必按 5.3 限制堆。 - 数据与 WAL 默认落在安装目录
data/下,重装/迁移前请先备份该目录。
七、常见问题
Q1:java: command not found 或启动报 Unable to find java executable?
原因:未安装 JDK 或未配置 JAVA_HOME。执行 apt-get install -y openjdk-17-jdk-headless 并按 4.2 配置 JAVA_HOME 即可。
Q2:启动报 IoTDB requires Java 17 or later.?
原因:PATH 上的 java 指向旧版本 JDK(如 JDK 8/11)。确保 JAVA_HOME 指向 /usr/lib/jvm/java-17-openjdk-amd64,并让脚本使用 17+。
Q3:ALTER USER 或建库查询报认证失败?
原因:密码与当前根用户不一致。IoTDB 默认 root 密码为 root,请先用 -pw root 连接,再改密码。
Q4:ss/netstat 查不到 6667 端口?
原因:系统未安装 net-tools 或进程未完全就绪。apt-get install -y net-tools 后重试;启动后等待数秒让 DataNode 完成 RPC 注册。
八、卸载方式
停止服务:
cd /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin
sbin/stop-standalone.sh
确认进程退出后,删除安装与数据目录即可:
rm -rf /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin /opt/iotdb-exp/apache-iotdb-2.0.11-all-bin.zip
rm -f /etc/profile.d/java.sh
⚠️ 注意:
rm -rf不可逆,确认目录内无需要保留的数据后再执行。
九、参考链接
- Apache IoTDB 官方下载目录:
https://downloads.apache.org/iotdb/ - Apache IoTDB 官网:
https://iotdb.apache.org/ - Apache IoTDB 文档(中文):
https://iotdb.apache.org/zh/UserGuide/latest/ - 配置参数详解见《Apache IoTDB 配置参数详解》篇;CLI 命令详见《Apache IoTDB 常用 CLI 命令与工具详解》篇。