IoTDB 安装与部署1.3.0
# IoTDB 安装与部署
Ambari Plus Monitor 会把采集到的时序指标写入 IoTDB,所以在安装 Monitor 服务前,我会先把 IoTDB 单独准备好。本文示例使用单机 IoTDB 1.3.0,部署在 hadoop1.test.com,后续 Monitor 安装向导里也会使用这台机器作为 IoTDB 入口。
本篇环境继续沿用三台 FQDN 主机,不过 IoTDB 只放在核心节点:
| 主机 | 本次角色 | 说明 |
|---|---|---|
hadoop1.test.com | ConfigNode、DataNode | IoTDB 服务端,提供 26667 写入入口。 |
hadoop2.test.com | 无 | 后续只安装 Monitor Agent。 |
hadoop3.test.com | 无 | 后续只安装 Monitor Agent。 |
提示
本文为了演示方便使用 IoTDB 默认账号 root / root。生产环境建议按安全规范修改密码,并把 Monitor 连接账号收敛到最小权限。
Ambari Plus 3.0.2
从 Ambari Plus 3.0.2 开始,Monitor 可以使用客户自建的 IoTDB 用户,不再要求长期使用 root。安装页会区分“自动建库”和“管理员预创建”两种模式,并提供连接与权限预检。
# 1. 准备 IoTDB 安装包
在 hadoop1.test.com 上创建安装包目录,把 iotdb-distribution-1.3.0-all-bin.zip 放到 /data/modules/iotdb。我这里使用 1.3.0,是因为当前 Ambari Plus Monitor 的 IoTDB 客户端依赖也按这个版本准备,先保证服务端和客户端版本口径一致。
mkdir -p /data/modules/iotdb
cd /data/modules/iotdb
ls -lh iotdb-distribution-1.3.0-all-bin.zip
2
3
如果安装包来自离线介质,建议顺手做一次校验:
sha1sum iotdb-distribution-1.3.0-all-bin.zip
本文环境的校验值如下:
afd3040847db44a836d6c2501d9ac436adea508f iotdb-distribution-1.3.0-all-bin.zip
# 2. 解压并创建固定软链接
把安装包解压到 /opt/modules,然后创建 /opt/modules/iotdb 软链接。后续写配置、启动服务、填写 Monitor 参数时都使用软链接路径,升级时也更容易切版本。
unzip -q iotdb-distribution-1.3.0-all-bin.zip -d /opt/modules
ln -sfn /opt/modules/apache-iotdb-1.3.0-all-bin /opt/modules/iotdb
ls -lh /opt/modules/iotdb
2
3
解压完成后,目录里能看到 conf、sbin、lib 等子目录。
# 3. 配置 ConfigNode 和 DataNode
IoTDB 1.3.0 会同时启动 ConfigNode 和 DataNode。单机部署时,ConfigNode 内部地址、DataNode 内部地址、seed config node 都指向 hadoop1.test.com 即可。
cd /opt/modules/iotdb
cat >> conf/iotdb-common.properties <<'EOF'
cluster_name=TtbigdataMonitor
EOF
cat >> conf/iotdb-confignode.properties <<'EOF'
cn_internal_address=hadoop1.test.com
cn_internal_port=10710
cn_seed_config_node=hadoop1.test.com:10710
EOF
cat >> conf/iotdb-datanode.properties <<'EOF'
dn_rpc_address=0.0.0.0
dn_rpc_port=26667
dn_internal_address=hadoop1.test.com
dn_seed_config_node=hadoop1.test.com:10710
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
内存先按小集群演示值设置,后面如果采集量变大,再结合主机资源调整。
sed -i 's/^MEMORY_SIZE=.*/MEMORY_SIZE=1024M/' conf/confignode-env.sh
sed -i 's/^MEMORY_SIZE=.*/MEMORY_SIZE=2048M/' conf/datanode-env.sh
2
配置完成后,我会先 grep 一遍关键参数,避免把 localhost、短主机名或默认端口漏在配置里。

# 4. 启动 IoTDB
先启动 ConfigNode,再启动 DataNode。
cd /opt/modules/iotdb
sbin/start-confignode.sh -d
sbin/start-datanode.sh -d
2
3
启动后看两个结果:Java 进程在不在,26667 和 10710 端口是否监听。
jps -l | egrep 'ConfigNode|DataNode'
ss -lntp | egrep '26667|10710'
2
如果 jps 能看到 org.apache.iotdb.confignode.service.ConfigNode 和 org.apache.iotdb.db.service.DataNode,并且端口监听正常,就可以进 CLI 做最终确认。
# 5. 验证 IoTDB 集群状态
使用 IoTDB 自带 CLI 连接 hadoop1.test.com:26667:
/opt/modules/iotdb/sbin/start-cli.sh \
-h hadoop1.test.com \
-p 26667 \
-u root \
-pw root
2
3
4
5
进入 CLI 后执行:
show cluster;
ConfigNode 和 DataNode 都是 Running,版本显示 1.3.0,说明 Monitor 后续可以使用这个入口写入指标。

# 6. 为 Monitor 准备专用用户 3.0.2+
生产环境里,我更建议提前创建 root.monitor,再给 Monitor 运行用户授予这个路径下的最小权限。这样运行账号不需要全局建库权限,后续审计也更清楚。
先使用 IoTDB 管理员账号进入 CLI,然后创建数据库、角色和运行用户:
CREATE DATABASE root.monitor;
CREATE ROLE IOTDB;
CREATE USER monitor_user 'ChangeMe_Strong_Password';
GRANT READ_DATA, WRITE_DATA, READ_SCHEMA, WRITE_SCHEMA
ON root.monitor.** TO ROLE IOTDB;
GRANT ROLE IOTDB TO monitor_user;
2
3
4
5
6
7
8
9
如果用户或角色已经存在,只执行缺少的授权即可。示例密码必须替换,生产环境不要直接使用文中的字符串。
授权路径要覆盖子路径
Monitor 指标会继续写到 root.monitor 下的主机、服务和指标子路径,因此授权范围必须写成 root.monitor.**。只授权 root.monitor 本身,不能覆盖后续实际写入的时序路径。
如果希望由 Monitor 第一次启动时自动创建 root.monitor,还要给运行用户增加建库权限:
GRANT MANAGE_DATABASE ON root.** TO ROLE IOTDB;
两种模式的权限差异如下:
| 使用方式 | 页面中的“启动时自动创建 IoTDB 数据库” | 数据库准备 | 运行用户权限 |
|---|---|---|---|
| 管理员预创建 推荐 | 关闭 | 管理员提前执行 CREATE DATABASE root.monitor | root.monitor.** 上的 READ_DATA、WRITE_DATA、READ_SCHEMA、WRITE_SCHEMA |
| Monitor 自动创建 | 开启 | 可以暂不创建,由 Ingester 启动时创建 | 除上述读写与 Schema 权限外,还需要 root.** 上的 MANAGE_DATABASE |
角色授权和直接给用户授权都可以。若不使用角色,可以把示例中的 TO ROLE IOTDB 改为 TO USER monitor_user。配置 Monitor 前,我会先确认角色关系和最终有效权限:
LIST ROLE OF USER monitor_user;
LIST PRIVILEGES OF USER monitor_user;
2
LIST PRIVILEGES OF USER 会同时显示用户直接获得的权限和从角色继承的权限。检查结果里至少要能看到 root.monitor.** 的四项运行权限;开启自动建库时,还要看到 root.** 的 MANAGE_DATABASE。
# 7. 留给 Monitor 的连接参数
IoTDB 准备好以后,后面安装 Ambari Plus Monitor 时就按下面这组参数填写。
| 配置项 | 本文示例值 | 说明 |
|---|---|---|
| IoTDB Host | hadoop1.test.com | 使用 FQDN,和集群主机名保持一致。 |
| IoTDB Port | 26667 | DataNode RPC 端口。 |
| IoTDB User | root | 教程环境使用默认用户;生产环境可填写前面创建的 monitor_user。 |
| IoTDB Password | root | 教程环境使用默认密码;使用专用用户时填写对应密码。 |
| IoTDB Storage Group | root.monitor | Monitor 指标写入的存储组。 |
| 启动时自动创建 IoTDB 数据库 | 开启 | 教程环境可以开启;管理员已经预创建 root.monitor 时建议关闭。 |
到这里,Monitor 依赖的时序库已经准备完成。下一步先导入 Monitor 元数据库初始化 SQL,再进入 Ambari Plus 页面安装 Monitor 服务。