ALM-50232 Doris中存在较大的Tablet
告警解释
告警模块按5分钟周期检查Doris集群中是否存在大于3GB(可通过“alarm_tablet_max_size”参数修改该值)的Tablet,如果存在则产生此告警。
当检测到Doris集群中不存在大于3GB的Tablet时,告警恢复。
该告警仅适用于MRS 3.5.0版本。
告警属性
| 告警ID | 告警级别 | 是否可自动清除 | 
|---|---|---|
| 50232 | 提示 | 是 | 
告警参数
| 类别 | 参数名称 | 参数含义 | 
|---|---|---|
| 定位信息 | 来源 | 产生告警的集群或系统名称。 | 
| 服务名 | 产生告警的服务名称。 | |
| 角色名 | 产生告警的角色名称。 | |
| 主机名 | 产生告警的主机名称。 | |
| 附加信息 | db | 存在较大Tablet的数据库名称。 | 
| table | 存在较大Tablet的表名称。 | 
对系统的影响
Tablet较大时可能导致Doris查询速度变慢或者compaction变慢。
可能原因
写入Doris表中的数据大于预估值或者分区设置不合理,导致不同分区下的Tablet大小差异较大。
处理步骤
查看是否是导入的数据过大或表字段分区设置不合理。
- 登录FusionInsight Manager界面,选择“运维 > 告警 > 告警”,选中“告警ID”为“50232”的告警,查看“附加信息”中的“db”和“table”。如果较大的Tablet较多,在附加信息中不能完全显示相关信息,可在Master FE节点的日志文件“${BIGDATA_LOG_HOME}/nodeagent/monitorlog/pluginmonitor.log”中搜索“Large tablets have”查看所有较大的Tablet信息。
- 登录安装了MySQL的节点,执行以下命令,连接Doris数据库。
     
     若集群已启用Kerberos认证(安全模式),需先执行以下命令再连接Doris数据库: export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1 mysql -u数据库登录用户 -p数据库登录用户密码 -PFE查询连接端口 -hDoris FE实例IP地址   - Doris FE的查询连接端口,可以通过登录FusionInsight Manager,选择“集群 > 服务 > Doris > 配置”,查询Doris服务的“query_port”参数获取。
- Doris FE实例IP地址,可以通过登录FusionInsight Manager,选择“集群 > 服务 > Doris > 实例”,查看任一FE的业务IP地址。
 
- 执行以下命令查看异常Tablet详情:
     
     show tablets from dbName.tableName; 查看返回结果中的Tablet大小的比值是否小于10%。 
- 导入的数据大于预估的数据导致不同分区下的Tablet大小差异较大。执行以下命令查看建表语句:
     
     show create table dbName.tableName; 重新估算写入表中的数据量,根据数据量的大小,适当调大BUCKETS的大小,确保每个分区下的Tablet大小的范围在100MB~3GB,并重新创建表tableNameBak,执行步骤 6。 
- 表分区字段设置不合理导致不同分区下的Tablet大小差异较大。执行以下命令查看建表语句:
     
     show create table dbName.tableName; 重新设置建表语句的分区字段,该分区字段可以更均匀地区分表中的数据,并创建表tableNameBak,执行步骤 6。 
- 执行以下命令将告警上报中的tableName表的数据写入tableNameBak中:
     
     insert into tableNameBak select * from tableName; 
- 数据写入成功后,执行以下命令对比表tableName和tableNameBak中的数据条数是否一致。
     
     select count(*) from dbName.tableName; select count(*) from dbName.tableNameBak; 
- 执行以下命令删除表tableNameBak:
     
     drop table dbName.tableNameBak; 表删除成功后,再次适当调大BUCKETS或重新设置表字段创建表,并执行步骤 6~步骤 7导入数据、对比数据结果。如果第二次导入数据完成后,数据量大小仍然不一致,则执行步骤 11。 
- 执行以下命令删除表tableName:
     
     drop table dbName.tableName; 执行以下命令修改表名: alter table dbName.tableNameBak rename dbName.tableName; 
- 两个表的数据对比一致后,等待5分钟,查看该告警是否消除
     
     - 是,处理完毕。
- 否,执行步骤 11。
 
收集故障信息。
 
  