IoTDB部署运维及常见问题
乔嘉林
2020年5月26日
培训内容
启动方式
目录结构
配置文件 v0.10.0
错误码
JMX监控
常见问题
启动方式
 前台启动
./sbin/start-server.sh
控制台退出,进程结束
 后台启动 IoTDB server
nohup ./sbin/start-server.sh &
进程所有输出日志都额外汇总到 nohup 文件中
nohup ./sbin/start-server.sh >/dev/null 2>&1 &
不额外存储任何输出信息
目录结构
单机启动默认目录结构
数据文件TsFile
系统文件
写前日志
目录结构
数据文件目录 data/data
sequence (顺序数据)
root.turbine1 (存储组)
分区 0(0.10.0 默认1个分区)
.tsfile 文件
.tsfile.resource 索引文件
...
unsequence 乱序数据
与顺序数据结构相同
按设备最后落盘时间戳区分顺序乱序数据
如:写入时间戳 1-10 持久化后(客户端不可控)
时间戳 > 10 的为顺序数据
时间戳<=10 的为乱序数据
目录结构
系统文件目录 data/system
schema/mlog.txt
所有元数据操作日志,重启恢复到内存里
schema/system.properties
系统配置,启动后禁止修改
写前日志 data/wal
重启时重做,重做完成后删除
想重新来过?
删除 data目录重启
目录结构
服务器日志:data/logs
配置文件v0.10.0
配置文件:conf 目录
iotdb-env.sh or iotdb-env.bat
内存分配
#MAX_HEAP_SIZE="2G"
#HEAP_NEWSIZE="2G"
iotdb-engine.properties
start-server 脚本启动时生效
直接代码启动 IoTDB 主类
需要修改 org.apache.iotdb.db.conf.IoTDBConfig
http://iotdb.apache.org/UserGuide/Master/Server/Config%20Manual.html
重要参数
rpc_port=6667
客户端访问端口
base_dir=data
系统数据存放地址,默认 根目录/data
data_dirs=data/data
数据文件目录,可配置多盘,data1, data2, data3
multi_dir_strategy=MaxDiskUsableSpaceFirstStrate
gy
数据配置多目录时的选择策略,默认选择剩余空间最大的
重要参数
tsfile_storage_fs=LOCAL
数据文件存储位置:HDFS or LOCAL
hdfs_ip=localhost
hdfs_port=9000
dfs_nameservices=hdfsnamespace
http://iotdb.apache.org/UserGuide/Master/Architecture/Writing%20Data%20o
n%20HDFS.html
除非想利用 HDFS 做副本和用 Spark 并行读取 HDFS 的 TsFile 做分析
否则不建议存储到 HDFS 上,会影响IoTDB引擎查询速度
重要参数
timestamp_precision=ms
时间戳 long 的单位
默认读写都按 long 原值返回
仅在日期表示时间戳时需要注意
default_ttl=36000000
数据保留时间,默认注释掉,永久保存
tag_attribute_total_size=700
如果使用时间序列的属性管理功能,需要设置所有属性和
标签的最大序列化大小,可以尝试注册属性最多的序列
启动后不允许更改,更改需删除
data/system/schema/mlog.txt
data/system/schema/tlog.txt
重要参数
enable_parameter_adapter=true
是否开启动态参数调整
write_read_free_memory_proportion=6:3:1
读写内存分配
is_sync_enable=true
sync_server_port=5555
数据文件同步功能接收端监听端口,默认启动
enable_mqtt_service=false
mqtt 服务默认关闭,需要手动开启
重要参数:自动注册序列
enable_auto_create_schema=true
default_storage_group_level=1
自动注册存储组,存储组级别默认为第1层,root为0层
boolean_string_infer_type=BOOLEAN
integer_string_infer_type=FLOAT
floating_string_infer_type=FLOAT
以第一次value的字符串推断数据类型并注册序列
默认数字都是 float 型,true/false 是 boolean,其他为 text
错误码
错误码
http://iotdb.apache.org/UserGuide/Master/Client/Status%20Codes.html
try {
session.setStorageGroup("root.sg1");
} catch (StatementExecutionException e) {
if (e.getStatusCode() != TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode())
throw e;
}
JMX监控cpu、内存
本机使用 jdk8
jvisualvm 启动
本机启动 IoTDB
直接打开本地 IoTDB 进程
连接远端 IoTDB(默认不接受远端访问)
iotdb-env.sh 中的 JMX_LOCAL=false,设置 IP
连接31999端口
http://iotdb.apache.org/zh/UserGuide/Master/System%20Tools/JMX%20Tool.html
常见问题
连接不上服务器:版本问题
https://blog.csdn.net/qiaojialin/article/details/106258371
系统负载过大,无法创建序列或存储组(会在0.11解
决)
增大内存(优先选择)
关闭 enable_parameter_adapter参数
有爆内存风险,需要手动调整参数
简单调法:
memtable_size_threshold=tsfile_size_threshold
=可分配内存*50% / 存储组个数 / 4 (有乱序数据)
=可分配内存*50% / 存储组个数 / 2 (无乱序数据)
IoTDB system load is too large to add timeseries, please increase memory or
disable the enable_parameter_adapter in iotdb-engine.properties
常见问题
路径名不合法,存在特殊字符 /@#$%&-
已在 0.10.0 解决(master 分支)
重启元数据为空
0.8-0.9.2,更新0.9.3或 0.10.0
Connection reset by peer:socket write error
通常在单独使用 Session 时出现,连接不稳定,可在客户
端重新创建 session 重连
timeout to get a connection from
使用 SessionPool 时出现
原因:查询结果集SessionDataSetWrapper未调用
SessionPool.closeResultSet(SessionDataSetWrapper )归
还
常见问题
其他问题
 issue 列表搜索
提交issue
https://github.com/apache/incubator-iotdb/issues
附带server端日志
客户端出错信息
和我们联系,没有解决不了的 bug!

IoTDB Ops