Apache IoTDB 系列教程-3:部署运维-LMLPHP

今天介绍 IoTDB 的部署运维相关知识,帮助大家玩转 IoTDB!

正文 1859 字,预计阅读时间 5 分钟。

开箱即用

IoTDB 的理念就是系统运维要简单,要一键启动、开箱即用。就从启动开始说起吧,需要安装 jdk8 或者 jdk11,下载发布版,http://iotdb.apache.org/Download/  ,解压缩后是这样的目录结构:

Apache IoTDB 系列教程-3:部署运维-LMLPHP

内存在 conf/iotdb-env.sh 里,配置 MAX_HEAP_SIZE,要去掉前边的注释。其他所有置都在 conf/iotdb-engine.properties

可能需要给脚本加个执行权限,接下来后台启动 server

nohup sbin/start-server.sh >/dev/null 2>&1 &

目录结构

使用默认配置启动并且写数据之后,项目根目录会生成下面这些文件夹,都在 data 目录下:

Apache IoTDB 系列教程-3:部署运维-LMLPHP

其中主要包括 3 部分,数据文件data/data,系统文件data/system,写前日志data/wal。

数据目录:data/data

目录组织方式为 顺序/乱序数据 -> 存储组 -> 分区号(目前默认一个分区) -> 数据文件.tsfile及索引文件.resource。

数据文件 TsFile (Timeseries File) 是我们设计的列存文件格式,主要存储各个时间序列原始数据,TsFile 有单独的 API,可以当做一个独立的工具使用,就像 Parquet、ORC 一样。 数据文件可以配置多目录,通过 data_dirs 参数配置。

系统目录:data/system

里面有几个重要的文件。

mlog.txt:元数据日志,采用追加的方式,记录了所有的元数据操作,包括增删存储组、增删时间序列等。重启的时候会重做这个文件里的日志,遇到错误的会跳过。

system.properties:系统属性,记录了一些启动后不可更改的参数,如分区粒度、时间精度等。

tlog.txt:标签和属性信息,如果没创建,这个文件就是空的。

写前日志目录:data/wal

写入的数据会先记录写前日志,然后写到内存里。当内存里的数据刷盘之后,写前日志才会被清理。当你发现写了一些数据之后,数据目录还是空的,这时候数据就在写前日志和内存里。 

写前日志是按照存储组组织的,一个写前日志文件对应一个 TsFile 文件。

如果想强制将内存的数据刷盘,可以通过 CLI 执行 flush 命令。会持久化内存数据,并且清楚写前日志。

系统日志:data/logs

除了上边那三个最重要的,还有系统日志,日志文件按照日期归档,没有日期的就是今天的。

Apache IoTDB 系列教程-3:部署运维-LMLPHP

出现问题可以来这里拷日志发给我们。

重新来过

测试了一些之后,想重新来过,很方便,把上边那三个目录都删掉,重新启动就可以了。还是整条街最靓的 IoTDB 。

数据迁移

迁移之前,最好用 CLI 控制台执行一次 flush 命令,持久化内存数据(这样就没有写前日志了)。重启一次 IoTDB 也是类似的效果。迁移的IoTDB版本要相同。

介绍几个场景:

1. 把 A 机器上的 IoTDB 整体迁移到 B 机器上(调试、数据备份等)

可以把整个data目录(包括数据目录、系统目录)都拷过去,在 B 机器配置好根目录,启动 B 机器的 IoTDB 即可。

2. 把 A 机器上的 IoTDB 的部分存储组的数据迁移到 B 机器上

想迁移数据,元数据一定要迁移。首先把 A 机器的 data/system 目录拷贝到 B 机器上,接下来把 A 机器数据目录里的部分存储组目录拷贝到 B 机器,在 B 机器配置好对应的目录。启动 B 机器的 IoTDB 即可。

3. 把 A 机器上的 IoTDB 的元数据迁移到 B 机器上,但是不要数据

把 A 机器的 data/system 目录拷贝到 B 机器的相应位置,启动 B 机器的 IoTDB 即可。

系统监控

监控系统的内存和CPU还是很爽的,现在让大家也爽一下,以下适用于 0.9.2 以后的版本,主要是用 jvisualvm,本地需要有 jdk8。

如果是本机运行 IoTDB,直接在本机命令行输入 jvisualvm 就可以连接本机的 IoTDB 进程了。

如果要在服务器运行 IoTDB,需要先修改配置文件 conf/iotdb-env.sh,

JMX_LOCAL="false"
JMX_IP="the_real_iotdb_server_ip"  # 填写实际IoTDB的IP地址

查看 conf/jmx.password,这里记录了默认的 JMX 的用户和密码,可以修改。各个用户的权限在 conf/jmx.access 中。

然后建立远程连接,默认 31999 端口,连上之后就能看到了:

Apache IoTDB 系列教程-3:部署运维-LMLPHP

总结

今天介绍了 IoTDB 的目录结构,重新来过和迁移方式,最后介绍了系统监控方式。欢迎关注、转发!

Apache IoTDB 系列教程-3:部署运维-LMLPHP

07-12 08:24