-
Notifications
You must be signed in to change notification settings - Fork 302
cluster配置
Wenyi Duan edited this page Mar 21, 2023
·
6 revisions
cluster配置中同时包含在线部分 (ha3) 配置和离线 (build_service) 两部分配置;
离线配置中包含了对builder和merger的各种配置,与build_service的builder和merger相关的cluster 配置主要有:
- build_option_config,索引排序相关配置。
- offline_index_config,build相关配置,缺省merge配置。定期 merge 及全量 merge 策略配置,截断配置。
- swift_config,processed doc swift 配置,以及 builder 的 swift reader 配置。
- cluster_config, cluster相关配置。
- slow_node_detect_config, 针对cluster级别的慢节点检测配置
- realtime: true表示开启实时功能,实时功能使用文档
一个完整的cluster配置文件in0_cluster.json示例如下:
{
"build_option_config" : {
"async_build" : true,
"async_queue_size" : 1000,
"document_filter" : true,
"max_recover_time" : 30,
"sort_build" : true,
"sort_descriptions" : [
{
"sort_field" : "hits",
"sort_pattern" : "asc"
}
],
"sort_queue_mem" : 4096,
"sort_queue_size" : 10000000
},
"cluster_config" : {
"builder_rule_config" : {
"batch_mode" : false,
"build_parallel_num" : 1,
"merge_parallel_num" : 1,
"partition_count" : 1
},
"cluster_name" : "in0",
"hash_mode" : {
"hash_field" : "id",
"hash_function" : "HASH"
},
"table_name" : "in0"
},
"offline_index_config" : {
"build_config" : {
"build_total_memory" : 5120,
"keep_version_count" : 40
}
}
}
- sort_build : 索引是否排序,默认为 false。
- sort_descriptions : 索引的排序方式,是一个数组,数组中每个元素由排序字段 sort_field 与排序方式 sort_pattern 组成。允许多维排序;若第一维排序字段相同,则会按照第二维描述排序,依次类推。
- sort_field : schema 配置中的字段,只配置允许 INT,HASH,DOUBLE,FLOAT 等数值类型字段,但是不支持对sort字段update(update消息对该字段不生效)。
- sort_pattern : 排序方式,有 升序 asc 和 降序 desc 两种选择,默认为 desc。
- sort_queue_size :build 过程中每次产生 segment 大小,文档在内存中积累到这个数量之后才会排序,并且生成出索引,默认uint32_t::max()。
- sort_queue_mem:单位MB,默认为build_total_memory的60%,sort队列大小取sort_queue_mem和sort_queue_size的最小。
- document_filter :是否允许文档过滤(关闭该功能,表示增量流与实时流文档一致,可以提高HA3 ReOpen性能),默认值为true。
- async_build :ProcessedDoc反序列化与Build是否异步(各占一个线程),默认为false。
- async_queue_size :异步Build情况下,中间队列大小,默认为1000。
- max_recover_time:单位为秒,全量加载索引后追实时消息,最多花费这么长的时间。
- recover_delay_tolerance_ms:单位毫秒,全量加载索引后追实时消息,当swift最新消息locator和目前引擎中最新locator相差小于此时间时,视为追上实时,默认值为1000ms。
- build_qps_limit: 单位为qps,Realtime Build 限速。
offline_index_options的配置分为build_config, merge_config 和 customized_merge_config 三部分:
- build_config: 离线build配置。
- build_total_memory : build索引时所使用的总内存。单位是M。默认是 6GB。build_total_memory支持通过环境变量"BUILD_TOTAL_MEM"赋值,优先级顺序为:用户配置>环境变量>本身默认值
- max_doc_count : build索引时doc数超过该限制时,会触发Dump, 本身默认值为max_uint32.
- keep_version_count: build 索引后,保留下来的版本个数。主要针对增量 build 的离线版本和实时 build 的本地实时版本个数进行控制,多余的版本会被删掉。默认是2。
- enable_package_file: 是否启用package file 功能。如果启用,索引的每个segment会被打包为一个package文件。该功能用于减小对HDFS的压力。
- hash_map_init_size: 指定构建倒排时使用的hash_map的初始大小
- dump_thread_count: dump 索引使用的线程个数
- speedup_primary_key_reader: 是否启用主键读取加速
- merge_config: 缺省merge配置。
- merge_thread_count: merge 过程使用的并行线程数量。
- merge_strategy: 索引merge策略。
- merge_strategy_param: 索引的merge策略参数,具体配置见下文的merge策略及其参数介绍。
- uniq_pack_attribute_merge_buffer_size: 该参数仅在schema配置有带uniq压缩的pack attriubte的情况下生效。默认为64MB。用来控制pack attribute 在merge过程中使用的buffer大小。
- document_reclaim_param: 指定merge过程回收doc的条件,多个条件之间为or关系;对所有segment均进行回收,不限于参加merge的segment
- truncate_strategy: 截断策略
- customized_merge_config: 用户自定义配置。用户可以对不同场景定制不同的merge策略
- hash_mode
- hash_filed: 用于计算hash值的字段名
- hash_function: hash函数,可填HASH/HASH64/GALAXY_HASH/NUMBER_HASH/KINGSO_HASH
- builder_rule_config
- partition_count: 索引需要build成多少个partition。
- build_parallel_num: 全量build时每个partition的并行进程数,对增量不生效。
- inc_build_parallel_num: 增量build时每个partition的并行进程数,对全量不生效。
- merge_parallel_num: 默认的merge并行数(老的配置方式),如果在offline_index_config中配置了,会覆盖此处的配置。
- batch_mode: build service模式下,增量builder是否常驻,如果为true,则每次定期merge时,启动build。
- map_reduce_ratio: job模式下,map与reduce个数的比例。
- need_partition: job模式下,是否需要引擎分partition。
- align_version: 开启align version 模式后,所有partition 的merge 过程将使用相同的versionId; 默认值是 true