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

10. 两个表的数据对比一致后，等待5分钟，查看该告警是否消除 
    - 是，处理完毕。
    
    - 否，执行[步骤 11]。
    
    
    
    
**收集故障信息。**
11. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
12. 在"服务"中勾选待操作集群的Doris。
13. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。
14. 请联系运维人员，并发送已收集的故障日志信息。
 
