附录1:配置参数

为方便IoTDB Server的配置与管理,IoTDB Server为用户提供三种配置项,使得用户可以在启动服务或服务运行时对其进行配置。

三种配置项的配置文件均位于IoTDB安装目录:$IOTDB_HOME/conf文件夹下,其中涉及server配置的共有2个文件,分别为:iotdb-env.sh, iotdb-engine.properties。用户可以通过更改其中的配置项对系统运行的相关配置项进行配置。

配置文件的说明如下:

  • iotdb-env.sh:环境配置项的默认配置文件。用户可以在文件中配置JAVA-JVM的相关系统配置项。

  • iotdb-engine.properties:IoTDB引擎层系统配置项的默认配置文件。用户可以在文件中配置IoTDB引擎运行时的相关参数,如JDBC服务监听端口(rpc_port)、overflow数据文件存储目录(overflow_data_dir)等。此外,用户可以在文件中配置IoTDB存储时TsFile文件的相关信息,如每次将内存中的数据写入到磁盘时的数据大小(group_size_in_byte),内存中每个列打一次包的大小(page_size_in_byte)等。

热修改配置项

为方便用户使用,IoTDB Server为用户提供了热修改功能,即在系统运行过程中修改iotdb-engine.properties中部分配置参数并即时应用到系统中。下面介绍的参数中,改后 生效方式为触发生效的均为支持热修改的配置参数。

触发方式:客户端发送load configuration命令至IoTDB Server,客户端的使用方式详见第4章

环境配置项

环境配置项主要用于对IoTDB Server运行的Java环境相关参数进行配置,如JVM相关配置。IoTDB Server启动时,此部分配置会被传给JVM。用户可以通过查看 iotdb-env.sh(或iotdb-env.bat)文件查看环境配置项内容。详细配置项说明如下:

  • JMX_LOCAL
名字JMX_LOCAL
描述JMX监控模式,配置为yes表示仅允许本地监控,设置为no的时候表示允许远程监控
类型枚举String : “yes”, “no”
默认值yes
改后生效方式重启服务生效
  • JMX_PORT
名字JMX_PORT
描述JMX监听端口。请确认该端口不是系统保留端口并且未被占用。
类型Short Int: [0,65535]
默认值31999
改后生效方式重启服务生效
  • MAX_HEAP_SIZE
名字MAX_HEAP_SIZE
描述IoTDB启动时能使用的最大堆内存大小。
类型String
默认值取决于操作系统和机器配置。在Linux或MacOS系统下默认为机器内存的四分之一。在Windows系统下,32位系统的默认值是512M,64位系统默认值是2G。
改后生效方式重启服务生效
  • HEAP_NEWSIZE
名字HEAP_NEWSIZE
描述IoTDB启动时能使用的最小堆内存大小。
类型String
默认值取决于操作系统和机器配置。在Linux或MacOS系统下默认值为机器CPU核数乘以100M的值与MAX_HEAP_SIZE四分之一这二者的最小值。在Windows系统下,32位系统的默认值是512M,64位系统默认值是2G。。
改后生效方式重启服务生效

系统配置项

系统配置项是IoTDB Server运行的核心配置,它主要用于设置IoTDB Server文件层和引擎层的参数,便于用户根据自身需求调整Server的相关配置,以达到较好的性能表现。系统配置项可分为两大模块:文件层配置项和引擎层配置项。用户可以通过iotdb-engine.properties,文件查看和修改两种配置项的内容。在0.7.0版本中字符串类型的配置项大小写敏感。

文件层配置

  • compressor
名字compressor
描述数据压缩方法
类型枚举String : “UNCOMPRESSED”, “SNAPPY”, “LZ4”
默认值SNAPPY
改后生效方式触发生效
  • group_size_in_byte
名字group_size_in_byte
描述每次将内存中的数据写入到磁盘时的最大写入字节数
类型Int32
默认值134217728
改后生效方式触发生效
  • max_number_of_points_in_page
名字max_number_of_points_in_page
描述一个页中最多包含的数据点(时间戳-值的二元组)数量
类型Int32
默认值1048576
改后生效方式触发生效
  • max_degree_of_index_node
名字max_degree_of_index_node
描述元数据索引树的最大度(即每个节点的最大子节点个数)
类型Int32
默认值256
改后生效方式仅允许在第一次启动服务前修改
  • max_string_length
名字max_string_length
描述针对字符串类型的数据,单个字符串最大长度,单位为字符
类型Int32
默认值128
改后生效方式触发生效
  • page_size_in_byte
名字page_size_in_byte
描述内存中每个列写出时,写成的单页最大的大小,单位为字节
类型Int32
默认值65536
改后生效方式触发生效
  • time_series_data_type
名字time_series_data_type
描述时间戳数据类型
类型枚举String: “INT32”, “INT64”
默认值Int64
改后生效方式触发生效
  • time_encoder
名字time_encoder
描述时间列编码方式
类型枚举String: “TS_2DIFF”,“PLAIN”,“RLE”
默认值TS_2DIFF
改后生效方式触发生效
  • value_encoder
名字value_encoder
描述value列编码方式
类型枚举String: “TS_2DIFF”,“PLAIN”,“RLE”
默认值PLAIN
改后生效方式触发生效
  • float_precision
名字float_precision
描述浮点数精度,为小数点后数字的位数
类型Int32
默认值默认为2位。注意:32位浮点数的十进制精度为7位,64位浮点数的十进制精度为15位。如果设置超过机器精度将没有实际意义。
改后生效方式触发生效

引擎层配置

  • data_dirs
名字data_dirs
描述IoTDB数据存储路径,默认存放在和sbin目录同级的data目录下。相对路径的起始目录与操作系统相关,建议使用绝对路径。
类型String
默认值data/data
改后生效方式触发生效
  • system_dirs
名字system_dirs
描述IoTDB元数据存储路径,默认存放在和sbin目录同级的data目录下。相对路径的起始目录与操作系统相关,建议使用绝对路径。
类型String
默认值data/system
改后生效方式触发生效
  • wal_dirs
名字wal_dirs
描述IoTDB写前日志存储路径,默认存放在和sbin目录同级的data目录下。相对路径的起始目录与操作系统相关,建议使用绝对路径。
类型String
默认值data/wal
改后生效方式触发生效
  • enable_wal
名字enable_wal
描述是否开启写前日志,默认值为true表示开启,配置成false表示关闭
类型Bool
默认值true
改后生效方式触发生效
  • enable_discard_out_of_order_data
名字enable_discard_out_of_order_data
描述是否删除无序数据,默认值为false表示关闭
类型Bool
默认值false
改后生效方式触发生效
  • tag_attribute_total_size
名字tag_attribute_total_size
描述每个时间序列标签和属性的最大持久化字节数
类型Int32
默认值700
改后生效方式仅允许在第一次启动服务前修改
  • enable_partial_insert
名字enable_partial_insert
描述在一次insert请求中,如果部分测点写入失败,是否继续写入其他测点
类型Bool
默认值true
改后生效方式重启服务生效
  • mtree_snapshot_interval
名字mtree_snapshot_interval
描述创建 MTree snapshot 时至少累积的 mlog 日志行数。单位为日志行数
类型Int32
默认值100000
改后生效方式重启服务生效
  • mlog_buffer_size
名字mlog_buffer_size
描述mlog的buffer大小
类型Int32
默认值1048576
改后生效方式触发生效
  • sync_mlog_period_in_ms
名字sync_mlog_period_in_ms
描述mlog定期刷新到磁盘的周期,单位毫秒。如果该参数为0,则表示每次对元数据的更新操作都会被立即写到磁盘上。
类型Int64
默认值100
改后生效方式重启服务生效
  • force_wal_period_in_ms
名字force_wal_period_in_ms
描述写前日志定期刷新到磁盘的周期,单位毫秒,有可能丢失至多force_wal_period_in_ms毫秒的操作。
类型Int32
默认值100
改后生效方式触发生效
  • flush_wal_threshold
名字flush_wal_threshold
描述写前日志的条数达到该值之后,刷新到磁盘,有可能丢失至多flush_wal_threshold个操作
类型Int32
默认值10000
改后生效方式触发生效
  • wal_buffer_size
名字wal_buffer_size
描述写前日志的buffer大小
类型Int32
默认值16777216
改后生效方式触发生效
  • enable_mem_control
名字enable_mem_control
描述开启内存控制,避免爆内存
类型Bool
默认值true
改后生效方式重启服务生效
  • memtable_size_threshold
名字memtable_size_threshold
描述内存缓冲区 memtable 阈值
类型Long
默认值1073741824
改后生效方式enable_mem_control为false时生效、重启服务生效
  • avg_series_point_number_threshold
名字avg_series_point_number_threshold
描述内存中平均每个时间序列点数最大值,达到触发flush
类型Int32
默认值10000
改后生效方式重启服务生效
  • tsfile_size_threshold
名字tsfile_size_threshold
描述每个 tsfile 大小
类型Long
默认值1
改后生效方式重启服务生效
  • enable_partition
名字enable_partition
描述是否开启将数据按时间分区存储的功能,如果关闭,所有数据都属于分区 0
类型Bool
默认值false
改后生效方式仅允许在第一次启动服务前修改
  • partition_interval
名字partition_interval
描述用于存储组分区的时间段长度,用户指定的存储组下会使用该时间段进行分区,单位:秒
类型Int64
默认值604800
改后生效方式仅允许在第一次启动服务前修改
  • multi_dir_strategy
名字multi_dir_strategy
描述IoTDB在tsfile_dir中为TsFile选择目录时采用的策略。可使用简单类名或类名全称。系统提供以下三种策略:
1. SequenceStrategy:IoTDB按顺序从tsfile_dir中选择目录,依次遍历tsfile_dir中的所有目录,并不断轮循;
2. MaxDiskUsableSpaceFirstStrategy:IoTDB优先选择tsfile_dir中对应磁盘空余空间最大的目录;
3. MinFolderOccupiedSpaceFirstStrategy:IoTDB优先选择tsfile_dir中已使用空间最小的目录;
4. UserDfineStrategyPackage(用户自定义策略)
您可以通过以下方法完成用户自定义策略:
1. 继承cn.edu.tsinghua.iotdb.conf.directories.strategy.DirectoryStrategy类并实现自身的Strategy方法;
2. 将实现的类的完整类名(包名加类名,UserDfineStrategyPackage)填写到该配置项;
3. 将该类jar包添加到工程中。
类型String
默认值MaxDiskUsableSpaceFirstStrategy
改后生效方式触发生效
  • rpc_address
名字rpc_address
描述
类型String
默认值“0.0.0.0”
改后生效方式重启服务生效
  • rpc_port
名字rpc_port
描述jdbc服务监听端口。请确认该端口不是系统保留端口并且未被占用。
类型Short Int : [0,65535]
默认值6667
改后生效方式重启服务生效
  • rpc_max_concurrent_client_num
名字rpc_max_concurrent_client_num
描述最大连接数。
类型Short Int : [0,65535]
默认值65535
改后生效方式重启服务生效
  • rpc_thrift_compression_enable
名字rpc_thrift_compression_enable
描述是否启用thrift的压缩机制。
类型true 或者 false
默认值false
改后生效方式重启服务生效
  • rpc_advanced_compression_enable
名字rpc_advanced_compression_enable
描述是否启用thrift的自定制压缩机制。
类型true 或者 false
默认值false
改后生效方式重启服务生效
  • enable_stat_monitor
名字enable_stat_monitor
描述选择是否启动后台统计功能
类型Boolean
默认值false
改后生效方式重启服务生效
  • concurrent_flush_thread
名字concurrent_flush_thread
描述当IoTDB将内存中的数据写入磁盘时,最多启动多少个线程来执行该操作。如果该值小于等于0,那么采用机器所安装的CPU核的数量。默认值为0。
类型Int32
默认值0
改后生效方式重启服务生效
  • tsfile_storage_fs
名字tsfile_storage_fs
描述Tsfile和相关数据文件的存储文件系统。目前支持LOCAL(本地文件系统)和HDFS两种
类型String
默认值LOCAL
改后生效方式仅允许在第一次启动服务前修改
  • core_site_path
名字core_site_path
描述在Tsfile和相关数据文件存储到HDFS的情况下用于配置core-site.xml的绝对路径
类型String
默认值/etc/hadoop/conf/core-site.xml
改后生效方式重启服务生效
  • hdfs_site_path
名字hdfs_site_path
描述在Tsfile和相关数据文件存储到HDFS的情况下用于配置hdfs-site.xml的绝对路径
类型String
默认值/etc/hadoop/conf/hdfs-site.xml
改后生效方式重启服务生效
  • hdfs_ip
名字hdfs_ip
描述在Tsfile和相关数据文件存储到HDFS的情况下用于配置HDFS的IP。如果配置了多于1个hdfs_ip,则表明启用了Hadoop HA
类型String
默认值localhost
改后生效方式重启服务生效
  • hdfs_port
名字hdfs_port
描述在Tsfile和相关数据文件存储到HDFS的情况下用于配置HDFS的端口
类型String
默认值9000
改后生效方式重启服务生效
  • dfs_nameservices
名字hdfs_nameservices
描述在使用Hadoop HA的情况下用于配置HDFS的nameservices
类型String
默认值hdfsnamespace
改后生效方式重启服务生效
  • dfs_ha_namenodes
名字hdfs_ha_namenodes
描述在使用Hadoop HA的情况下用于配置HDFS的nameservices下的namenodes
类型String
默认值nn1,nn2
改后生效方式重启服务生效
  • dfs_ha_automatic_failover_enabled
名字dfs_ha_automatic_failover_enabled
描述在使用Hadoop HA的情况下用于配置是否使用失败自动切换
类型Boolean
默认值true
改后生效方式重启服务生效
  • dfs_client_failover_proxy_provider
名字dfs_client_failover_proxy_provider
描述在使用Hadoop HA且使用失败自动切换的情况下配置失败自动切换的实现方式
类型String
默认值org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
改后生效方式重启服务生效
  • hdfs_use_kerberos
名字hdfs_use_kerberos
描述是否使用kerberos验证访问hdfs
类型String
默认值false
改后生效方式重启服务生效
  • kerberos_keytab_file_path
名字kerberos_keytab_file_path
描述kerberos keytab file 的完整路径
类型String
默认值/path
改后生效方式重启服务生效
  • kerberos_principal
名字kerberos_principal
描述Kerberos 认证原则
类型String
默认值your principal
改后生效方式重启服务生效
  • authorizer_provider_class
名字authorizer_provider_class
描述权限服务的类名
类型String
默认值org.apache.iotdb.db.auth.authorizer.LocalFileAuthorizer
改后生效方式重启服务生效
其他可选值org.apache.iotdb.db.auth.authorizer.OpenIdAuthorizer
  • openID_url
名字openID_url
描述openID 服务器地址 (当OpenIdAuthorizer被启用时必须设定)
类型String (一个http地址)
默认值
改后生效方式重启服务生效
  • thrift_max_frame_size
名字thrift_max_frame_size
描述RPC 请求/响应的最大字节数
类型long
默认值67108864 (应大于等于 8 1024 1024)
改后生效方式重启服务生效
  • thrift_init_buffer_size
名字thrift_init_buffer_size
描述字节数
类型long
默认值1024
改后生效方式重启服务生效
  • timestamp_precision
名字timestamp_precision
描述时间戳精度,支持ms、us、ns
类型String
默认值ms
改后生效方式触发生效
  • default_ttl
名字default_ttl
描述ttl时间,单位ms
类型long
默认值36000000
改后生效方式重启服务生效

数据类型自动推断

  • enable_auto_create_schema
名字enable_auto_create_schema
描述当写入的序列不存在时,是否自动创建序列到Schema
取值true or false
默认值true
改后生效方式重启服务生效
  • default_storage_group_level
名字default_storage_group_level
描述当写入的数据不存在且自动创建序列时,若需要创建相应的存储组,将序列路径的哪一层当做存储组. 例如, 如果我们接到一个新序列 root.sg0.d1.s2, 并且level=1, 那么root.sg0被视为存储组(因为root是level 0 层)
取值整数
默认值1
改后生效方式重启服务生效
  • boolean_string_infer_type
名字boolean_string_infer_type
描述“true” 或者 “false” 被视为什么数据
取值BOOLEAN 或者 TEXT
默认值BOOLEAN
改后生效方式重启服务生效
  • integer_string_infer_type
名字integer_string_infer_type
描述整数型数据被推断成什么
取值INT32, INT64, FLOAT, DOUBLE, TEXT
默认值FLOAT
改后生效方式重启服务生效
  • nan_string_infer_type
名字nan_string_infer_type
描述NaN 字符串被推断为什么
取值DOUBLE, FLOAT or TEXT
默认值DOUBLE
改后生效方式重启服务生效
  • floating_string_infer_type
名字floating_string_infer_type
描述“6.7”等浮点数被推断为什么
取值DOUBLE, FLOAT or TEXT
默认值FLOAT
改后生效方式重启服务生效
  • long_string_infer_type
名字long_string_infer_type
描述long(num > 2 ^ 24)被推断为什么
取值DOUBLE, FLOAT or TEXT
默认值DOUBLE
改后生效方式重启服务生效
  • default_boolean_encoding
名字default_boolean_encoding
描述BOOLEAN类型编码格式
取值PLAIN, RLE
默认值RLE
改后生效方式重启服务生效
  • default_int32_encoding
名字default_int32_encoding
描述int32类型编码格式
取值PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA
默认值RLE
改后生效方式重启服务生效
  • default_int64_encoding
名字default_int64_encoding
描述int64类型编码格式
取值PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA
默认值RLE
改后生效方式重启服务生效
  • default_float_encoding
名字default_float_encoding
描述float类型编码格式
取值PLAIN, RLE, TS_2DIFF, GORILLA
默认值GORILLA
改后生效方式重启服务生效
  • default_double_encoding
名字default_double_encoding
描述double类型编码格式
取值PLAIN, RLE, TS_2DIFF, GORILLA
默认值GORILLA
改后生效方式重启服务生效
  • default_text_encoding
名字default_text_encoding
描述text类型编码格式
取值PLAIN
默认值PLAIN
改后生效方式重启服务生效

开启GC日志

GC日志默认是关闭的。为了性能调优,用户可能会需要收集GC信息。 若要打开GC日志,则需要在启动IoTDB Server的时候加上”printgc”参数:

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

或者

  1. sbin\start-server.bat printgc

GC日志会被存储在IOTDB_HOME/logs/gc.log. 至多会存储10个gc.log文件,每个文件最多10MB。