IoTDB下载安装
环境准备
IoTDB 的理念就是系统运维要简单,要一键启动、开箱即用。先从安装环境开始说起
-
安装前需要保证设备上配有 JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量; -
如果希望能从源代码编译和安装IoTDB,需要maven版本 >= 3.6; -
将最大文件打开数(max open files )设置为 65535,以避免"too many open files"错误。 -
将 somaxconn 设置为 65535,以避免系统在高负载时出现"connection reset" 错误(可选)。
下载与安装
IoTDB 提供了两种安装方式:
第一种,从官网下载安装包。这是推荐的安装方式,通过该方式,可以得到一个可以立即使用的、打包好的二进制可执行文件。
第二种,使用源码编译。如果想自行修改代码,可以使用这种安装方式。
历史版本下载:https://archive.apache.org/dist/iotdb/
从官网下载二进制可执行文件
可以从 http://iotdb.apache.org/Download/ (opens new window)上下载已经编译好的可执行程序 iotdb-xxx.zip,该压缩包包含了 IoTDB 系统运行所需的所有必要组件。
下载后,可使用如下命令对 IoTDB 的压缩包进行解压:
uzip iotdb-<version>.zip
使用源码编译
可以获取已发布的源码 https://iotdb.apache.org/Download/,或者从 https://github.com/apache/iotdb/tree/master 仓库获取
克隆项目
git clone https://github.com/apache/iotdb.git
源码克隆后,进入到源码文件夹目录下。 如果想编译已经发布过的版本,可以先用git checkout -b my_{project.version} v{project.version} 命令新建并切换分支。比如当要编译0.12.4这个版本的源码,可以用如下命令去切换分支:
git checkout -b my_0.12.4 v0.12.4
server编译
切换分支之后就可以使用以下命令进行编译:
mvn clean package -pl server -am -Dmaven.test.skip=true
编译后,IoTDB 服务器会在 “server/target/iotdb-server-{project.version}” 文件夹下,包含以下内容:
+- conf/ <-- configuration files # 配置文件目录
|
+- lib/ <-- project dependencies # 系统工具目录
|
+- logs/ <-- project logs #项目日志目录
|
+- sbin/ <-- script files # 启动和停止脚本目录
|
+- tools/ <-- system tools # 依赖包目录
cli编译
mvn clean package -pl cli -am -Dmaven.test.skip=true
编译后,IoTDB cli工具在"cli/target/iotdb-server-{project.version}"文件下,包含以下内容:
+- sbin/ <-- script files # 启动和停止脚本目录
|
+- lib/ <-- project dependencies # 系统工具目录
|
+- tools/ <-- system tools # 依赖包目录
如果想要编译项目中的某个模块,可以在源码文件夹中使用mvn clean package -pl {module.name} -am -DskipTests 命令进行编译。如果需要的是带依赖的 jar 包,您可以在编译命令后面加上-P get-jar-with-dependencies 参数。
比如想编译带依赖的 jdbc jar 包,可以使用以下命令进行编译:
mvn clean package -pl jdbc -am -DskipTests -P get-jar-with-dependencies
编译完成后就可以在{module.name}/target 目录中找到需要的包了。
通过 Docker 安装 (Dockerfile)
dockerfile 文件位于 https://github.com/apache/iotdb/blob/master/docker/src/main
Docker简介
Docker 是一种运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。
“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。
安装
添加源进行安装
首先安装docker的仓库,你可以从这个仓库中安装或者升级docker。
设置仓库
1、安装依赖包,yum-utils 提供yum-config-manager 工具,devicemapper 存储驱动需要device-mapper-persistent-data 和lvm2
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2、使用下面的命令安装稳定版仓库,即使安装最新体验版或者是测试版也需要稳定版仓库。
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、可选:体验版和测试版默认是关闭的,你可以通过下面的命令打开,不打开也不影响稳定版的使用。
$
$ sudo yum-config-manager --enable docker-ce-edge
$ sudo yum-config-manager --enable docker-ce-test
$
$ sudo yum-config-manager --disable docker-ce-edge
$ sudo yum-config-manager --disable docker-ce-test
注意:从docker17.06开始,稳定版也同样会被推送到体验版和测试版的仓库里。
安装docker CE
1、安装最新版本的docker CE
$ sudo yum install -y docker-ce
以上命令始终安装docker CE最新版本,如果提示接受GPG key,官方说检查指纹是否是 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 ,是的话,就接受,不过我在安装的过程中没有遇见。
2、安装指定版本的docker CE
列出版本,版本号从高到低 yum list docker-ce --showduplicates | sort -r
[root@leviyun ~]
已加载插件:fastestmirror
已安装的软件包
可安装的软件包
Loading mirror speeds from cached hostfile
docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable
......
安装指定版本的docker CE,需要指定完整的包名称,例如安装仓库中的这个版本 18.03.0.ce-1.el7.centos ,其命令为:
$ sudo yum install -y docker-ce-18.03.0.ce
其他版本同理。
启动docker CE
启动其实是启动docker deamon,即docker守护进程/docker引擎
$ sudo systemctl start docker
如果需要升级的话,移除之前的docker,再重复上面的过程即可。
Apache IoTDB 的 Docker 镜像已经上传至https://hub.docker.com/r/apache/iotdb
1、获取 IoTDB docker 镜像
- 推荐:执行
docker pull apache/iotdb:latest 即可获取最新的 docker 镜像。
- 用户也可以根据代码提供的 Dockerfile 文件来自己生成镜像。Dockerfile 存放在的 docker 工程下的
src/main/Dockerfile 中。
方法 1:
docker build -t iotdb:base git://github.com/apache/iotdb
方法 2:
git clone https://github.com/apache/iotdb
cd iotdb
mvn package -DskipTests
cd docker
docker build -t iotdb:base .
当 docker image 在本地构建完成的时候 (示例中的 tag 为 iotdb:base),已经距完成只有一步之遥了!
2、创建数据文件和日志的 docker 挂载目录 (docker volume)
docker volume create mydata
docker volume create mylogs
3、运行 docker 容器
docker run -p 6667:6667 -v mydata:/iotdb/data -v mylogs:/iotdb/logs -d iotdb:base /iotdb/bin/start-server.sh
您可以使用docker ps 来检查是否运行成功,当成功时控制台会输出下面的日志:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a68b6944cb5 iotdb:base "/iotdb/bin/start-se…" 4 minutes ago Up 5 minutes 0.0.0.0:6667->6667/tcp laughing_meitner
您可以使用下面的命令来获取 container 的 ID:
docker container ls
然后使用下面的命令获取这个 ID 对应的 IP 地址,假设获取的 IP 为 <C_IP>:
docker inspect --format='{{.NetworkSettings.IPAddress}}' <C_ID>
现在 IoTDB 服务器已经启动成功了。
4、使用 iotdb-cli 命令行
使用如下命令:
docker exec -it <C_ID> /bin/bash
(now you have enter the container): /iotdb/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root
还可以使用本地的 iotdb-cli,执行如下命令:
/%IOTDB_HOME%/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root
如果想写一些代码来插入或者查询数据,您可以在 pom.xml 文件中加入下面的依赖:
<dependency>
<groupId>org.apache.iotdb</groupId>
<artifactId>iotdb-jdbc</artifactId>
<version>0.14.0-SNAPSHOT</version>
</dependency>
IoTDB 试用
用户可以根据以下操作对 IoTDB 进行简单的试用,若以下操作均无误,则说明 IoTDB 安装成功。
启动 IoTDB
用户可以使用 sbin 文件夹下的 start-server 脚本启动 IoTDB。
Linux 系统与 MacOS 系统启动命令如下:
$ nohup sbin/start-server.sh >/dev/null 2>&1 &
or
$ nohup sbin/start-server.sh -c <conf_path> -rpc_port <rpc_port> >/dev/null 2>&1 &
Windows 系统启动命令如下:
$ sbin\start-server.bat -c <conf_path> -rpc_port <rpc_port>
- “
-c ” and “-rpc_port ” 都是可选的。 - 选项 “
-c ” 指定了配置文件所在的文件夹。 - 选项 “
-rpc_port ” 指定了启动的 rpc port 。 - 如果两个选项同时指定,那么* rpc_port 将会覆盖 conf_path *下面的配置。
或者直接双击sbin文件夹下的start-server.bat启动脚本运行。
使用 Cli 工具
IoTDB 为用户提供多种与服务器交互的方式,在此我们介绍使用 Cli 工具进行写入、查询数据的基本步骤。
初始安装后的 IoTDB 中有一个默认用户:root,默认密码为 root。
用户可以使用该用户运行 Cli 工具操作 IoTDB。
Cli 工具启动脚本为 sbin 文件夹下的 start-cli 脚本。启动脚本时需要指定运行 ip、port、username 和 password。
若脚本未给定对应参数,则默认参数为"-h 127.0.0.1 -p 6667 -u root -pw -root "
以下启动语句为服务器在本机运行,且用户未更改运行端口号的示例。
Linux 系统与 MacOS 系统启动命令如下:
$ sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root
Windows 系统启动命令如下:
sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root
或者直接双击sbin文件夹下的start-cli.bat脚本运行。
基本的IoTDB命令
使用Cli工具创建时间序列、插入数据并查看数据的方法:
数据在 IoTDB 中的组织形式是以时间序列为单位,每一个时间序列中有若干个数据-时间点对,每一个时间序列属于一个存储组。
在定义时间序列之前,要首先使用 SET STORAGE GROUP 语句定义存储组。
SQL 语句如下:
SET STORAGE GROUP TO root.ln
使用 SHOW STORAGE GROUP 语句来查看系统当前所有的存储组。
SQL 语句如下:
SHOW STORAGE GROUP
执行结果为: 存储组设定后,使用 CREATE TIMESERIES 语句可以创建新的时间序列,创建时间序列时需要定义数据的类型和编码方式。此处我们创建两个时间序列,SQL 语句如下:
IoTDB> CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN
Msg: The statement is executed successfully.
IoTDB> CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE
Msg: The statement is executed successfully.
为了查看指定的时间序列,我们可以使用 SHOW TIMESERIES <Path> 语句,其中<Path> 表示时间序列对应的路径,默认值为空,表示查看系统中所有的时间序列。
使用 SHOW TIMESERIES 语句查看系统中存在的所有时间序列,SQL 语句如下:
SHOW TIMESERIES
执行结果为: 查看具体的时间序列 root.ln.wf01.wt01.status 的 SQL 语句如下:
SHOW TIMESERIES root.ln.wf01.wt01.status
执行结果为: 使用 INSERT 语句向 root.ln.wf01.wt01.status 时间序列中插入数据,在插入数据时需要首先指定时间戳和路径后缀名称:
INSERT INTO root.ln.wf01.wt01(timestamp,status) values(100,true);
也可以向多个时间序列中同时插入数据,这些时间序列同属于一个时间戳:
INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,20.71)
使用 SELECT 语句可以查询指定的时间序列的数据结果,SQL 语句如下:
SELECT status FROM root.ln.wf01.wt01
查询结果: 查询多个时间序列的数据结果,SQL 语句如下:
SELECT * FROM root.ln.wf01.wt01
查询结果: 输入 quit 或 exit 可退出 Cli 结束本次会话。
也可以向多个时间序列中同时插入数据,这些时间序列同属于一个时间戳:
```sql
INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,20.71)
使用 SELECT 语句可以查询指定的时间序列的数据结果,SQL 语句如下:
SELECT status FROM root.ln.wf01.wt01
查询结果: 查询多个时间序列的数据结果,SQL 语句如下:
SELECT * FROM root.ln.wf01.wt01
查询结果: 输入 quit 或 exit 可退出 Cli 结束本次会话。
|