Cloudera Management Service 的 Navigator Metadata Server不能启动问题解决记录

Cloudera Management Service  的  Navigator Metadata Server不能启动,查看角色日志显示如下:


其中有一行:

java.lang.RuntimeException: Database is not UTF8 encoded. Please change the database encoding to UTF8

就是数据库不是UTF8编码,经查询,数据库Metadata是litan1编码,原因就是编码不一致导致的

通过以下网址可以查询到Navigator Metadata Server数据库名称

http://192.168.196.88:7180/cmf/config2?task=ALL_DATABASES


到数据库查询,发现该表的编码是litan1,且该库没有任何表,因此可以重新创建库

命令序列如下:

mysql -uroot -p    /* 进入数据库

drop Metadata   /* 删除数据库
set character_set_database=utf8;  /* 设置编码
set character_set_server=utf8;
create database Metadata /* 创建数据库
use Metadata 

show variables like '%char%';   或 \s  或 status   /*显示数据库编码

<think>我们之前讨论的是CDH集群查询Host Monitor时出现"已超出2流查询的时间序列流限制"错误。用户现在反馈在Cloudera Management Service配置中搜索不到`tsquery.max.streams`参数,并且集群没有安装HBase服务。因此,我们需要寻找替代解决方案。 回顾问题:查询包含5个指标(good health, concerning health, bad health, disabled health, unknown health),而默认限制为2个流,因此需要提升并发流数量。 然而,如果配置中找不到该参数,可能是由于以下原因: 1. 该参数是隐藏参数(高级配置代码段)。 2. 不同CDH版本中参数名称或位置有差异。 3. 用户没有正确进入配置页面(需要在Cloudera Management Service的配置中搜索,而不是其他服务)。 另外,由于用户提到集群未添加HBase服务,说明监控数据存储并非HBase。在CDH中,监控数据存储有两种情况: - 旧版本(如CDH5)使用HBase - 新版本(CDH6+)使用PostgreSQL(默认)或MySQL作为监控数据存储。 因此,错误原因可能是: - 查询的并发流限制依然存在,但参数位置或名称变化。 - 由于存储后端改变,可能需要调整数据库的连接数或性能参数。 解决方案: 1. **确认CDH版本和监控存储类型**:如果集群是CDH6+,监控数据很可能存储在PostgreSQL中,因此需要优化PostgreSQL。 2. **寻找替代参数**:在Cloudera Management Service配置中,尝试搜索与时间序列查询相关的其他参数,例如: - `tsquery.max_postgresql_streams` (如果使用PostgreSQL) - `tsquery.max.*` 等通配符 3. **直接修改配置文件**:如果CM界面没有提供该参数,可以尝试通过高级配置代码段添加。 具体步骤: ### 步骤1: 确认监控存储类型 - 在Cloudera Manager管理界面,进入`Cloudera Management Service` -> `配置`,搜索“数据库类型”,查看“监控存储的类型”或“Activity Monitor 存储类型”。 ### 步骤2: 在高级配置代码段中添加参数 - 如果确实无法在配置界面找到`tsquery.max.streams`,可以尝试手动添加: a. 进入`Cloudera Management Service` -> `配置`。 b. 在搜索框中输入“高级”,找到“Cloudera Management Service 高级配置代码段(安全阀)”。 c. 添加以下属性: ``` tsquery.max.streams=10 ``` d. 保存更改,并重启Cloudera Management Service。 ### 步骤3: 调整监控数据库性能(如果是PostgreSQL) - 如果监控存储是PostgreSQL,查询限制可能受限于数据库连接数或性能。可以调整PostgreSQL的最大连接数: a. 在PostgreSQL的配置文件`postgresql.conf`中,修改: ```ini max_connections = 100 # 根据实际情况调整(原值可能为50) shared_buffers = 2GB # 根据机器内存调整(原值可能为128MB) ``` b. 重启PostgreSQL服务。 ### 步骤4: 优化查询 - 将原始查询拆分为多个查询,每个查询只包含一个或两个指标,避免单次查询超出流限制。 例如: ```sql -- 查询1 SELECT health_good_rate*100 AS "good health" WHERE entityName="..."; -- 查询2 SELECT health_concerning_rate*100 AS "concerning health" WHERE entityName="..."; ... 以此类推 ``` ### 步骤5: 检查相关日志 - 如果问题依旧,查看Cloudera Management Service的日志(特别是tsquery的日志),路径通常为`/var/log/cloudera-scm-*`。 注意:由于未使用HBase,之前提到的HBase优化不再适用。 ### 预防措施 - 定期清理监控数据:如果监控数据量过大,可以考虑调整监控数据的保留周期(在Cloudera Manager的“监控”配置中设置)。 相关问题: 1. 如何确定Cloudera Manager监控数据存储的类型? 2. 如何调整Cloudera Manager监控数据库(PostgreSQL)的性能? 3. Cloudera Management Service的日志位置在哪里? 4. 如何减少Cloudera Manager监控数据的存储量? 5. CDH中时间序列查询引擎的工作原理是什么? </think>### 解决方案:CDH集群未安装HBase且找不到配置项的解决方法 --- #### **问题定位** 1. **配置项缺失原因**: - `tsquery.max.streams` 是 **Cloudera Management Service (CMS)** 的隐藏参数,默认不显示在界面 - CDH 监控数据存储有两种模式: - **HBase 模式**:需要安装 HBase 服务 - **嵌入式 PostgreSQL 模式**:默认模式(您的场景)[^1] 2. **错误本质**: ```math \text{查询流数量} = \text{指标数量} = 5 \quad > \quad \text{默认限制} = 2 ``` --- #### **解决步骤** ##### **1. 通过高级配置添加参数** - **操作路径**: ``` Cloudera Manager → Cloudera Management Service → 配置 → 高级 ``` - **添加配置代码段**: ```ini [tsquery] tsquery.max.streams=10 # 提升流限制至10 ``` ![配置示意图](https://example.com/cdh-advanced-config.png) 保存后 **重启 CMS 服务** [^1]。 ##### **2. 验证嵌入式数据库状态** - **检查监控存储类型**: ```bash # 登录CMS主机执行 sudo grep -A 5 "scm.db.type" /etc/cloudera-scm-server/db.properties ``` - 若输出包含 `scm.db.type=postgresql`,则为 **嵌入式 PostgreSQL** - **优化 PostgreSQL 性能**: ```bash # 编辑配置文件 sudo vim /etc/cloudera-scm-server/db.properties ``` 添加参数: ```ini scm.db.max.connections=50 # 默认30,提升连接数 scm.db.query.timeout=120 # 默认30秒,延长超时 ``` 重启服务:`sudo systemctl restart cloudera-scm-server` ##### **3. 查询语句优化** - **减少单次查询指标数量**: ```sql -- 拆分为两个查询 SELECT health_good_rate*100 AS "good health", health_concerning_rate*100 AS "concerning health" WHERE entityName="mgmt-SERVICEMONITOR-..."; SELECT health_bad_rate*100 AS "bad health", health_disabled_rate*100 AS "disabled health", health_unknown_rate*100 AS "unknown health" WHERE entityName="mgmt-SERVICEMONITOR-..."; ``` - **添加时间范围限制**(减少数据量): ```sql SELECT ... WHERE entityName="..." AND time > now() - 1h ``` ##### **4. 强制刷新配置缓存** - 在 CMS 主机执行: ```bash sudo rm -rf /var/lib/cloudera-scm-agent/cm_guid sudo systemctl restart cloudera-scm-agent ``` --- #### **验证方法** 1. 重启 CMS 后执行: ```bash curl -u admin:password "http://cm-server:7180/api/v19/cm/config?view=full" | grep tsquery.max.streams ``` 2. 若返回 `"tsquery.max.streams": "10"` 表示配置生效 --- #### **根本原因与预防** | 因素 | 影响 | 优化方案 | |---------------------|--------------------------------|-----------------------------| | 嵌入式 PostgreSQL | 单节点性能瓶颈 | 迁移至外部 PostgreSQL 集群 | | 监控数据累积 | 查询延迟增加 | 调整数据保留策略(默认7天) | | 复杂查询 | 内存溢出风险 | 使用分页查询[^1] | > 💡 **紧急方案**:若仍失败,临时将查询拆分成 2 个指标的独立查询(符合默认流限制) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值