星环大数据平台ArgoDB数据平衡
星环大数据平台ArgoDB数据平衡(TDDMS数据平衡)
💡 ArgoDB使用的存储经常会遇到磁盘的个数、容量大小等异构的情况,需要涉及到数据平衡。
1. 数据平衡
1.1.打开迁移开关
curl -u shiva:shiva -X PUT "10.10.10.10:4567/config?config=DATA_BALANCE_ENABLED,true"
1.2.触发Balance操作
curl -u shiva:shiva -X POST "10.10.10.10:4567/cluster/balance?action=data?pretty"
1.3.查看迁移状态
查看当前正在执行和准备执行的迁移任务数
curl -u shiva:shiva -X GET "10.10.10.10:4567/change_config_tasks?pretty"
2. 阈值调整
数据写入原理:
💡操作系统可以实时感知磁盘剩余空间,但是对于软件是需要定期的去收集磁盘当前的使用率的情况更新的,目前这个时间是7分钟一次。如果节点单盘比较小,在上次判断到下次判断之间有可能导致磁盘写到100%。
💡在数据apply到engine前,会先把数据写到payload里。在实际apply时,会把这些文件提交到engine里。从而日志看,在21号,17:44分,有一个节点由于达到了写入上限(默认是90),导致数据加到payload里的时候加不进去,被标记为corrupt。本来这个时候应该能自动修复的,但是你达到了150w的上限,修不了了。在9.22号凌晨5:54分左右,那个100%的盘也写入失败,导致了副本corrupt,直接进入少数派了。
无法创建表的参数限制:
💡迁出阈值:当磁盘的剩余空间低于迁出阈值 STORE_DO_BALANCE_THRESHOLD(默认 20%
)时,该磁盘拒绝创建新的分片。
💡写入阈值:当磁盘的剩余空间低于写入阈值
DISK_LOW_FREE_SPACE_PERCENTAGE(默认 10%) 时拒绝写入。
💡副本阈值:MAX_TABLET_NUM_PER_TABLET_SERVER 即单个 Table Server
可以承载的tablet副本数量上限(默认150w),超过这个参数时,无法进行数据迁移和创建新的分片。(大概为15w张表达到上限)
2.1.迁入阈值
- 迁入阈值调整,STORE_MIGRATE_IN_PERCENTAGE是集群的,仅设置在master
curl -u shiva:shiva -X PUT "10.10.10.10:4567/config?config=STORE_MIGRATE_IN_PERCENTAGE,70"
2.2.迁出阈值
- 迁出阈值调整
curl -u shiva:shiva -X PUT "http://10.10.10.10:4567/config?config=STORE_DO_BALANCE_THRESHOLD,20"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.11:8002/config?config=STORE_DO_BALANCE_THRESHOLD,20"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.12:8002/config?config=STORE_DO_BALANCE_THRESHOLD,20"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.13:8002/config?config=STORE_DO_BALANCE_THRESHOLD,20"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.14:8002/config?config=STORE_DO_BALANCE_THRESHOLD,20"
2.3.写入阈值
- 写入限制阈值(也叫做写拒绝阈值)
curl -u shiva:shiva -X PUT "http://10.10.10.10:4567/config?config=DISK_LOW_FREE_SPACE_PERCENTAGE,10"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.11:8002/config?config=DISK_LOW_FREE_SPACE_PERCENTAGE,10"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.12:8002/config?config=DISK_LOW_FREE_SPACE_PERCENTAGE,10"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.13:8002/config?config=DISK_LOW_FREE_SPACE_PERCENTAGE,10"
curl -u shiva:shiva -X PUT "10.10.10.10:4567/server/10.10.10.14:8002/config?config=DISK_LOW_FREE_SPACE_PERCENTAGE,10"
2.4.副本阈值
副本阈值调整到160w
curl -u shiva:shiva -X PUT "http://10.10.10.10:4567/config?config=MAX_TABLET_NUM_PER_TABLET_SERVER,1600000"
副本阈值:MAX_TABLET_NUM_PER_TABLET_SERVER 目前上限大小为200w。设置过高,会导致单Tablet
Server和Master的副本管理成本过高,导致集群的稳定性风险提高,任务可能会失败。推荐150-160w就可以。
如果集群上都是比较小的表,就是单个tablet的数据小于10GB,这种情况如果是常态,可以在quark上调一个参数,让建表时单表的tablet数量不再等于
Tablet Server数量 * 3,而只是Tablet Server数量,降低压力。
argodb.tablet.num.ratio默认是3,可以改成1,在tdh manager,给quark配置。
3. 迁移优化
3.1.迁移容量调整
单次迁出容量调整,比如:单次迁出容量为10%
curl -u shiva:shiva -X PUT "http://10.10.10.10:4567/config?config=STORE_MIGRATE_OUT_PERCENTAGE,10"
3.2.取消迁移计划
取消迁移计划命令,取消当前迁移任务:
curl -u shiva:shiva -X PUT "10.10.10.10:4567/config?config=DATA_BALANCE_ENABLED,false"
3.3.增加迁移效率
增加迁移效率,提高线程数(默认是4),迁移完成后需要还原。
curl -u shiva:shiva -XPUT "http://10.10.10.10:4567/config?config=ADD_CONSENSUS_MEMBER_QUOTA,16"
退役调整并发数,默认为4,退役完成后,恢复默认。
curl -u shiva:shiva -XPUT "http://10.10.10.10:4567/config?config=ADD_CONSENSUS_MEMBER_QUOTA,4"
3.4.查看集群参数
查看集群现状参数
查看Table Server节点参数详情:
curl -u shiva:shiva -X GET "http://10.10.10.10:4567/server/10.10.10.11:8002/config"
查看TDDMS集群参数详情,查看当前配置信息:
curl -u shiva:shiva -X GET "http://10.10.10.10:4567/config"
查看TDDMS集群详细配置:
curl -u shiva:shiva -X GET "http://10.10.10.10:4567/config?config=TABLE_KEEP_IN_TRASH_TIME_S"
3.5.数据削峰优化
STORE_USAGE_BALANCE_FIRST 优先做磁盘的削峰还是tablet在所有tserver上的均衡。
对于扩缩容的场景,优先tserver拓扑均衡。 平时优先磁盘削峰就行。 false : 所有Table
Server节点之间的削峰,数据平衡。 true : 磁盘间削峰,数据平衡。
命令如下:
curl -u shiva:shiva -X PUT "10.10.10.10:4567/config?config=STORE_USAGE_BALANCE_FIRST,true"
4. 权重控制
4.1.权重描述
基本逻辑是根据一个权重可以影响tserver上的分片数,这个权重可以通过人工配置,也可以根据磁盘/内存等计算
kNormalWeight(值为0, 默认): 每个tserver权重都是10,对应tabletserver.conf里的weight
kCapacityWeight(值为1): 根据tserver所有capacity_units sum作为权重
kMemoryWeight(值为2): 根据tserver节点内存大小作为权重 kPhysicalCapacityWeight(值为3):
根据tserver使用的磁盘总容量作为权重
4.2.权重修改
curl -X PUT "172.22.7.41:4567/config?config=BASE_WEIGHT_TYPE,0"
注意事项,使用前请与研发沟通
如果打开BASE_WEIGHT_TYPE,估计分片会更多集中在大节点上,但是磁盘均衡会失效,有可能有leader
balance不均衡的问题; 如果不打开,基本就是维持现状,小机器一直处于高水位往大节点迁移; 如果开启权重3 的参数,先把leader
balance 关闭掉。 curl -XPOST “ip:port/cluster/balance?action=leader”
5. 相关参数和介绍
文档连接如下:https://wiki.transwarp.io/pages/viewpage.action?pageId=109440096
DATA_BALANCE_ENABLED
参数说明:布尔类型,表示是否允许data balance运行,值为false时,不允许data
balance运行且取消当前准备执行的迁移计划 修改方法:curl -X PUT
“172.22.7.41:4567/config?config=DATA_BALANCE_ENABLED,true”
DATA_BALANCE_PERIOD_S
参数说明:数值类型,表示data balance定时任务触发周期,单位为秒,最小配置600;如data balance禁止运行,此配置无意义
修改方法:curl -X PUT
“172.22.7.41:4567/config?config=DATA_BALANCE_PERIOD_S,600”
ADD_CONSENSUS_MEMBER_QUOTA
参数说明:数值类型,master会控制consensus相关逻辑的并发,确保tserver上不会出现过多的change
membership任务,值得注意的是,由于master不能确保准确的leadership信息,故计算quota时,所有当前membership中的tserver都被计算在内;本配置表示一台tserver执行add
member的quota,最小配置1,最大配置不限,这里可用于配置迁移任务执行的并发度 修改方法:curl -X PUT
“172.22.7.41:4567/config?config=ADD_CONSENSUS_MEMBER_QUOTA,4”
RECOVERY_DISK_RATE_LIMIT_BYTES
参数说明:数值类型,表示单盘用于计算recovery限速的总吞吐,最小配置50MB,最大配置不限 修改方法:curl -X PUT
“172.22.7.41:4567/server/172.22.7.41:8002/config?config=RECOVERY_DISK_RATE_LIMIT_BYTES,52428800” 说明:这个参数是tserver的参数,需要对所有tserver都进行配置,tserver地址直接从webserver的详情页拷贝后放在‘/server/${tserverAddress}‘中
BASE_WEIGHT_TYPE
参数说明:数值类型,基于什么方法来均衡分片,支持
kNormalWeight/kCapacityWeight/kMemoryWeight/kPhysicalCapacityWeight(对应数值0,1,2,3)
修改方法:curl -X PUT “172.22.7.41:4567/config?config=BASE_WEIGHT_TYPE,0”
说明:若为0(默认值),表示所有tserver上的分片数量一致;若为1,表示按照tserver的逻辑配额进行等比例分配tablet数量;若为2,表示按照内存容量大小等比例分配tablet数量;若为3,表示按照实际物理磁盘空间比例分配tablet数量。使用前请与研发沟通
多谢大家的关注、评论和点赞哦!!!
更多推荐


所有评论(0)