AINode 部署

1. AINode 介绍

1.1 能力介绍

AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,该节点通过与 IoTDB 集群的 DataNode、ConfigNode 交互,扩展了对时间序列进行机器学习分析的能力。AINode 将模型的管理、训练及推理融合在数据库引擎中,支持使用注册的模型在指定时序数据上通过简单 SQL 语句完成时序分析任务,还支持注册并使用自定义机器学习模型。AINode 目前已集成常见时序分析场景(例如预测)的机器学习算法和自研模型。

1.2 部署模式

AINode 是 IoTDB 集群外的额外套件,采用独立安装包部署。

2. 安装准备

2.1 安装包获取

AINode 安装包(apache-iotdb-<version>-ainode-bin.zip)解压后关键目录结构如下:

目录类型说明
lib文件夹AINode 的可执行程序及依赖
sbin文件夹AINode 的运行脚本,用于启动或停止 AINode
conf文件夹AINode 的配置文件和版本声明文件

说明:AINode 支持通过源码编译的方式构建安装包,具体操作步骤可参考AINode 构建小节。

2.2 前置检查

为确保您获取的 AINode 安装包完整且正确,在执行安装部署前建议您进行 SHA512 校验。

准备工作:

  • 获取官方发布的 SHA512 校验码:请联系商业支持获取

校验步骤(以 linux 为例):

  1. 打开终端,进入安装包所在目录(如/data/ainode):
    cd /data/ainode
    
  2. 执行以下命令计算哈希值:
    sha512sum apache-iotdb-<version>-ainode-bin.zip
    
  3. 终端输出结果(左侧为SHA512 校验码,右侧为文件名):
(base) root@hadoop@1:/data/ainode (0.664s)
sha512sum apache-iotdb-2.0.5-ainode-bin.zip
b39039a1235a86bc3ce3df0a102efa215e281b5839683ccaf47883b390af4e686f99e6980a24a9d41348325f3518bd55ebb1c61a123495cbdc575dad8c695f28  apache-iotdb-2.0.5-ainode-bin.zip
  1. 对比输出结果与官方 SHA512 校验码,确认一致后,即可按照下方流程执行 AINode 的安装部署操作。

注意事项:

  • 若校验结果不一致,请联系商业支持重新获取安装包
  • 校验过程中若出现“文件不存在”提示,需检查文件路径是否正确或安装包是否完整下载

2.3 环境要求

  • 建议操作环境: Linux, MacOS;
  • IoTDB 版本:>= V 2.0.8-beta;

3. 安装部署及使用

3.1 安装 AINode

下载导入 AINode 到专用文件夹,切换到专用文件夹并解压安装包;

unzip apache-iotdb-<version>-ainode-bin.zip

3.2 配置项修改

AINode 支持修改一些必要的参数。可以在 /IOTDB_AINODE_HOME/conf/iotdb-ainode.properties 文件中找到下列参数并进行持久化的修改:

名称描述类型默认值
cluster_nameAINode 要加入的集群标识stringdefaultCluster
ain_seed_config_nodeAINode 启动时注册的 ConfigNode 地址String127.0.0.1:10710
ain_cluster_ingress_addressAINode 拉取数据的 DataNode 的 rpc 地址String127.0.0.1
ain_cluster_ingress_portAINode 拉取数据的 DataNode 的 rpc 端口Integer6667
ain_cluster_ingress_usernameAINode 拉取数据的 DataNode 的客户端用户名Stringroot
ain_cluster_ingress_passwordAINode 拉取数据的 DataNode 的客户端密码Stringroot
ain_rpc_addressAINode 提供服务与通信的地址 ,内部服务通讯接口String127.0.0.1
ain_rpc_portAINode 提供服务与通信的端口String10810
ain_system_dirAINode 元数据存储路径,相对路径的起始目录与操作系统相关,建议使用绝对路径Stringdata/AINode/system
ain_models_dirAINode 存储模型文件的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径Stringdata/AINode/models
ain_thrift_compression_enabledAINode 是否启用 thrift 的压缩机制,0-不启动、1-启动Boolean0

3.3 导入内置权重文件

若部署环境可联网且能连通 HuggingFace 环境,系统会自动拉取内置模型权重文件,可忽略本步骤。

若为离线环境,联系商业支持获取模型权重文件夹,并放置到/IOTDB_AINODE_HOME/data/ainode/models/builtin 目录下。

​NOTE:​注意目录层级,最终所有内置模型权重的父目录都是 builtin

3.4 启动 AINode

在完成 ConfigNode 的部署后,可以通过添加 AINode 来支持时序模型的管理和推理功能。在配置项中指定 IoTDB 集群的信息后,可以执行相应的指令来启动 AINode,加入 IoTDB 集群。

# 启动命令
 # Linux 和 MacOS 系统
 bash sbin/start-ainode.sh  

 # Windows 系统
 sbin\start-ainode.bat  

 # 后台启动命令(长期运行推荐)
 # Linux 和 MacOS 系统
 bash sbin/start-ainode.sh -d

 # Windows 系统
 bash sbin\start-ainode.bat -d

3.5 检测 AINode 节点状态

AINode 启动过程中会自动将新的 AINode 加入 IoTDB 集群。启动 AINode 后可以在命令行中输入 SQL 来查询,集群中看到 AINode 节点,其运行状态为 Running(如下展示)表示加入成功。

IoTDB> show cluster
+------+----------+-------+---------------+------------+-------+-----------+
|NodeID|  NodeType| Status|InternalAddress|InternalPort|Version|  BuildInfo|
+------+----------+-------+---------------+------------+-------+-----------+
|     0|ConfigNode|Running|      127.0.0.1|       10710|UNKNOWN|190e303-dev|
|     1|  DataNode|Running|      127.0.0.1|       10730|UNKNOWN|190e303-dev|
|     2|    AINode|Running|      127.0.0.1|       10810|UNKNOWN|190e303-dev|
+------+----------+-------+---------------+------------+-------+-----------+

除此之外,还可以通过 show models 命令来查看模型状态。如果模型状态不对,请检查权重文件路径是否正确。

IoTDB> show models
+---------------------+---------+--------+--------+
|              ModelId|ModelType|Category|   State|
+---------------------+---------+--------+--------+
|                arima|   sktime| builtin|  active|
|          holtwinters|   sktime| builtin|  active|
|exponential_smoothing|   sktime| builtin|  active|
|     naive_forecaster|   sktime| builtin|  active|
|       stl_forecaster|   sktime| builtin|  active|
|         gaussian_hmm|   sktime| builtin|  active|
|              gmm_hmm|   sktime| builtin|  active|
|                stray|   sktime| builtin|  active|
|             timer_xl|    timer| builtin|  active|
|              sundial|  sundial| builtin|  active|
|             chronos2|       t5| builtin|  active|
+---------------------+---------+--------+--------+

3.6 停止 AINode

如果需要停止正在运行的 AINode 节点,则执行相应的关停脚本,且支持通过参数 -p 指定端口,该端口为配置项中的 ain_rpc_port

# Linux / MacOS 
 bash sbin/stop-ainode.sh
 bash sbin/stop-ainode.sh -p <port_id> # 指定端口
  
 #Windows
 sbin\stop-ainode.bat  
 sbin\stop-ainode.bat -p <port_id> # 指定端口

停止 AINode 后,还可以在集群中看到 AINode 节点,其运行状态为 UNKNOWN(如下展示),此时无法使用 AINode 功能。

IoTDB> show cluster
+------+----------+-------+---------------+------------+-------+-----------+
|NodeID|  NodeType| Status|InternalAddress|InternalPort|Version|  BuildInfo|
+------+----------+-------+---------------+------------+-------+-----------+
|     0|ConfigNode|Running|      127.0.0.1|       10710|UNKNOWN|190e303-dev|
|     1|  DataNode|Running|      127.0.0.1|       10730|UNKNOWN|190e303-dev|
|     2|    AINode|UNKNOWN|      127.0.0.1|       10790|UNKNOWN|190e303-dev|
+------+----------+-------+---------------+------------+-------+-----------+

如果需要重新启动该节点,需重新执行启动脚本。

3.7升级 AINode

如果需要对当前 AINode 进行版本升级,可参考如下步骤:

  1. 停止当前 AINode 服务

    • 执行停止命令,确保服务完全退出后再进行后续操作
    # Linux / MacOS 
     bash sbin/stop-ainode.sh
     bash sbin/stop-ainode.sh -p <port_id> # 指定端口
    
     #Windows
     sbin\stop-ainode.bat  
     sbin\stop-ainode.bat -p <port_id> # 指定端口
    
  2. 替换核心文件

    • 删除当前版本的libsbin目录,并将新版本的 libsbin 复制到对应位置
    • 备份 conf 目录下已修改的配置文件,然后替换 conf 文件夹,并将修改的配置同步到对应位置
  3. 更新内置模型权重(可选)

    • 若新版本涉及内置模型更新,相关信息将在发布历史中同步。可联系商业支持获取最新权重包,并将权重包替换至 data/ainode/models/builtin 目录
  4. 升级完毕后,可启动 AINode 服务,并查看节点状态,具体命令可参考【3.4】和【3.5】小节。

4. AINode 构建

AINode 支持通过如下方式构建安装包。

4.1 环境要求

  • python: >=3.11.0,<3.12.0
  • Maven :>= 3.6;
  • Java:>= 1.8(已验证支持 1.8、11 至 17 版本,请确保环境变量路径已正确配置)。

4.2 操作步骤

  1. 支持通过如下两种 maven 命令构建 AINode。
# 同时构建 IoTDB 和 AINode 的指令
mvn clean package -pl distribution -P with-ainode -am -DskipTests
# 只构建 AINode 的指令
mvn clean package -pl iotdb-core/ainode -P with-ainode -am -DskipTests

注意:

  • 首次编译前请注意 pip 和 poetry 源可访问。
  • 在当前操作系统、架构下构建的 AINode,构建后可部署在对应系统及更新的版本上。例如,在 Ubuntu20 x86 构建的 AINode 可直接部署于 Ubuntu20、Ubuntu24 等。
  1. 构建成功后,AINode 安装包的目录结构大致如下。
.
├── conf
   ├── git.properties
   ├── iotdb-ainode.properties # AINode 配置文件
   └── pom.properties
├── lib # 采用文件夹形式打包 AINode,有助于提升启动效率
   ├── _internal # 内含 Python 解释器及全量 python 依赖,解决离线启动问题
   └── ainode # AINode 可执行程序
├── LICENSE
├── licenses
   ├── 'CDDL License 1.1'
   ├── 'Eclipse Public License 1.0 (EPL-1.0)'
   ├── 'Eclipse Public License version 2.0 (EPL-2.0)'
   ├── 'The 2-Clause BSD License'
   ├── 'The 3-Clause BSD License'
   ├── 'The MIT License (progressbar)'
   └── 'The MIT License (QOS.ch)'
├── NOTICE
├── README.md
├── README_ZH.md
├── RELEASE_NOTES.md
└── sbin # 部署脚本
    ├── start-ainode.sh
    ├── stop-ainode.sh
    └── windows