下载与安装

IoTDB 为您提供了两种安装方式,您可以参考下面的建议,任选其中一种:

第一种,从官网下载安装包。这是我们推荐使用的安装方式,通过该方式,您将得到一个可以立即使用的、打包好的二进制可执行文件。

第二种,使用源码编译。若您需要自行修改代码,可以使用该安装方式。

安装环境要求

安装前请保证您的电脑上配有 JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量。

如果您需要从源码进行编译,还需要安装:

  1. Maven >= 3.6 的运行环境,具体安装方法可以参考以下链接:https://maven.apache.org/install.html下载与安装 - 图1open in new window

注: 也可以选择不安装,使用我们提供的’mvnw’ 或 ‘mvnw.cmd’ 工具。使用时请用’mvnw’ 或 ‘mvnw.cmd’命令代替下文的’mvn’命令。

从官网下载二进制可执行文件

您可以从 http://iotdb.apache.org/Download/下载与安装 - 图2open in new window 上下载已经编译好的可执行程序 iotdb-xxx.zip,该压缩包包含了 IoTDB 系统运行所需的所有必要组件。

下载后,您可使用以下操作对 IoTDB 的压缩包进行解压:

  1. Shell > unzip iotdb-<version>.zip

使用源码编译

您可以获取已发布的源码 https://iotdb.apache.org/Download/下载与安装 - 图3open in new window ,或者从 https://github.com/apache/iotdb/tree/master下载与安装 - 图4open in new window git 仓库获取

源码克隆后,进入到源码文件夹目录下。如果您想编译已经发布过的版本,可以先用git checkout -b my_{project.version} v{project.version}命令新建并切换分支。比如您要编译0.12.4这个版本,您可以用如下命令去切换分支:

  1. > git checkout -b my_0.12.4 v0.12.4

切换分支之后就可以使用以下命令进行编译:

  1. > mvn clean package -pl server -am -Dmaven.test.skip=true

编译后,IoTDB 服务器会在 “server/target/iotdb-server-{project.version}” 文件夹下,包含以下内容:

  1. +- sbin/ <-- script files
  2. |
  3. +- conf/ <-- configuration files
  4. |
  5. +- lib/ <-- project dependencies
  6. |
  7. +- tools/ <-- system tools

如果您想要编译项目中的某个模块,您可以在源码文件夹中使用mvn clean package -pl {module.name} -am -DskipTests命令进行编译。如果您需要的是带依赖的 jar 包,您可以在编译命令后面加上-P get-jar-with-dependencies参数。比如您想编译带依赖的 jdbc jar 包,您就可以使用以下命令进行编译:

  1. > mvn clean package -pl jdbc -am -DskipTests -P get-jar-with-dependencies

编译完成后就可以在{module.name}/target目录中找到需要的包了。

通过 Docker 安装

Apache IoTDB 的 Docker 镜像已经上传至 https://hub.docker.com/r/apache/iotdb下载与安装 - 图5open in new window。 Apache IoTDB 的配置项以环境变量形式添加到容器内。

简单尝试

  1. # 获取镜像
  2. docker pull apache/iotdb:1.0.0-standalone
  3. # 创建 docker bridge 网络
  4. docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
  5. # 创建 docker 容器
  6. # 注意:必须固定IP部署。IP改变会导致 confignode 启动失败。
  7. docker run -d --name iotdb-service \
  8. --hostname iotdb-service \
  9. --network iotdb \
  10. --ip 172.18.0.6 \
  11. -p 6667:6667 \
  12. -e cn_internal_address=iotdb-service \
  13. -e cn_target_config_node_list=iotdb-service:22277 \
  14. -e dn_rpc_address=iotdb-service \
  15. -e dn_internal_address=iotdb-service \
  16. -e dn_target_config_node_list=iotdb-service:22277 \
  17. apache/iotdb:1.0.0-standalone
  18. # 尝试使用命令行执行SQL
  19. docker exec -ti iotdb-service /iotdb/sbin/start-cli.sh -h iotdb-service

外部连接:

  1. # <主机IP/hostname> 是物理机的真实IP或域名。如果在同一台物理机,可以是127.0.0.1。
  2. $IOTDB_HOME/sbin/start-cli.sh -h <主机IP/hostname> -p 6667
  1. # docker-compose-1c1d.yml
  2. version: "3"
  3. services:
  4. iotdb-service:
  5. image: apache/iotdb:1.0.0-standalone
  6. hostname: iotdb-service
  7. container_name: iotdb-service
  8. ports:
  9. - "6667:6667"
  10. environment:
  11. - cn_internal_address=iotdb-service
  12. - cn_target_config_node_list=iotdb-service:22277
  13. - dn_rpc_address=iotdb-service
  14. - dn_internal_address=iotdb-service
  15. - dn_target_config_node_list=iotdb-service:22277
  16. volumes:
  17. - ./data:/iotdb/data
  18. - ./logs:/iotdb/logs
  19. networks:
  20. iotdb:
  21. ipv4_address: 172.18.0.6
  22. networks:
  23. iotdb:
  24. external: true

集群部署

目前只支持 host 网络和 overlay 网络,不支持 bridge 网络。overlay 网络参照1C2D下载与安装 - 图6open in new window的写法,host 网络如下。

假如有三台物理机,它们的hostname分别是iotdb-1、iotdb-2、iotdb-3。依次启动。 以 iotdb-2 节点的docker-compose文件为例:

  1. version: "3"
  2. services:
  3. iotdb-confignode:
  4. image: apache/iotdb:1.0.0-confignode
  5. container_name: iotdb-confignode
  6. ports:
  7. - "22277:22277"
  8. - "22278:22278"
  9. environment:
  10. - cn_internal_address=iotdb-2
  11. - cn_target_config_node_list=iotdb-1:22277
  12. - schema_replication_factor=3
  13. - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  14. - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  15. - data_replication_factor=3
  16. - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
  17. volumes:
  18. - /etc/hosts:/etc/hosts:ro
  19. - ./data/confignode:/iotdb/data
  20. - ./logs/confignode:/iotdb/logs
  21. network_mode: "host"
  22. iotdb-datanode:
  23. image: apache/iotdb:1.0.0-datanode
  24. container_name: iotdb-datanode
  25. ports:
  26. - "6667:6667"
  27. - "8777:8777"
  28. - "9003:9003"
  29. - "50010:50010"
  30. - "40010:40010"
  31. environment:
  32. - dn_rpc_address=iotdb-2
  33. - dn_internal_address=iotdb-2
  34. - dn_target_config_node_list=iotdb-1:22277
  35. - data_replication_factor=3
  36. - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
  37. - schema_replication_factor=3
  38. - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  39. - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  40. volumes:
  41. - /etc/hosts:/etc/hosts:ro
  42. - ./data/datanode:/iotdb/data/
  43. - ./logs/datanode:/iotdb/logs/
  44. network_mode: "host"

注意:

  1. dn_target_config_node_list所有节点配置一样,需要配置第一个启动的节点,这里为iotdb-1
  2. 上面docker-compose文件中,iotdb-2需要替换为每个节点的 hostname、域名或者IP地址。
  3. 需要映射/etc/hosts,文件内配置了 iotdb-1、iotdb-2、iotdb-3 与IP的映射。或者可以在 docker-compose 文件中增加 extra_hosts 配置。
  4. 首次启动时,必须首先启动 iotdb-1
  5. 如果部署失败要重新部署集群,必须将所有节点上的IoTDB服务停止并删除,然后清除datalogs文件夹后,再启动。