TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)
  • Ambari

    • 编译小技巧

      • Ambari 编译打前端包如何提速
      • Ambari 编译打包需要的 GCC 环境
      • Ambari 汉化方案及实践
      • Ambari 乱码问题处理及解决方案
        • 1、乱码问题分析
          • 1.1 乱码出现的情况
          • 1.2 乱码问题出现的原因
          • 1.3 解决乱码的方案
          • 1.3.1 使用MariaDB 10版本
          • 1.3.1.1 配置YUM源
          • 1.3.1.2 调整数据库配置
          • 1.3.1.3 初始化数据库
          • 1.3.1.4 创建数据库
          • 1.4 乱码问题验证
      • Ambari 本地二次开发——跨域处理
    • 使用Ambari-Env编译

    • 适用于Centos7.9

    • 适用于Rocky8.10

    • 适用于Ubuntu22.04

  • Ambari-Metrics

  • Ambari-Infra

  • 组件编译-Ambari
  • Ambari
  • 编译小技巧
JaneTTR
2023-04-05
目录

Ambari 乱码问题处理及解决方案

# 一、Ambari的乱码问题处理

在部署Ambari集群时,可能会遇到乱码问题,尤其是在后台操作中。乱码问题通常表现在界面上的中文内容未能正确显示,取而代之的是一串乱码字符。这种问题会影响系统的可用性和用户体验,因此需要及时解决。

# 1、乱码问题分析

# 1.1 乱码出现的情况

在使用Ambari时,乱码现象通常在以下几个地方出现:

  • 流程进度条:整个页面刷新后,所有的进度条文本显示为乱码。
  • 部分中文条目乱码:部分条目能够正常显示中文,但部分条目则显示乱码字符。

溯源思路:
从接口请求开始就能看到乱码,进一步分析发现,数据库中存储的中文数据也显示为乱码。
通过数据库层面的检查,确认了中文数据存储过程中出现了乱码。

image-20240704162450086

提示

出现乱码的根本原因是数据库创建时没有指定字符集为 utf-8,这使得中文字符无法正确存储和显示。

# 1.2 乱码问题出现的原因

乱码问题的根本原因在于数据库创建时,未正确配置字符集。通常情况下,数据库默认使用的是系统字符集,而这个字符集可能不支持存储中文字符,导致乱码。

警告

当数据库表没有指定utf-8字符集时,中文字符在存储过程中会被错误编码,从而导致乱码。

此外,低版本的数据库(如MariaDB 5)也可能会导致此类问题。由于这些版本的数据库不完全支持utf8mb4字符集,可能会在存储中文字符时发生错误。

溯源:
默认的MariaDB版本可能在创建数据库表时出现如下错误:
[42000][1071] (conn=5) Specified key was too long; max key length is 767 bytes
这种情况通常发生在使用utf8mb4字符集时,尤其是在数据库版本较低时。

# 1.3 解决乱码的方案

解决乱码问题的关键在于更换数据库版本,或者修改数据库的字符集设置。以下是推荐的解决方案:

# 1.3.1 使用MariaDB 10版本

对于MariaDB数据库,可以通过升级到10版本来解决字符集问题。MariaDB 10版本对utf8mb4字符集提供了更好的支持,能够避免低版本数据库的问题。

# 1.3.1.1 配置YUM源

首先,需要配置MariaDB 10的YUM源,确保能够从可靠的镜像源安装最新版本的MariaDB。

vim /etc/yum.repos.d/Mariadb.repo
1
# MariaDB 10.6 CentOS repository list - created 2024-07-04 11:14 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://mirrors.neusoft.edu.cn/mariadb/yum/10.6/centos/$releasever/$basearch
module_hotfixes = 1
gpgkey = https://mirrors.neusoft.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
1
2
3
4
5
6
7
8
# 处理repo源
yum clean all && yum makecache
# 安装MariaDB
yum install -y MariaDB-server MariaDB-client
1
2
3
4
# 1.3.1.2 调整数据库配置

调整MariaDB的配置文件my.cnf,确保字符集使用utf8mb4,这可以大大提升中文字符的存储能力。

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = 'SET NAMES utf8mb4'
1
2
3
4
5
6
7
# 1.3.1.3 初始化数据库

初始化数据库并设置好root用户的密码,确保数据库的安全性:

# 清理数据文件
rm -rf /var/lib/mysql/* ;
# 初始化MariaDB
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql;
# 杀掉现有的MariaDB进程
kill -9 `ss -anp | grep 3306 | grep mariadbd | awk -F '[=,]' '{print $3}' | uniq`;

# 启动MariaDB
systemctl restart mariadb
1
2
3
4
5
6
7
8
9
# 1.3.1.4 创建数据库

通过SQL命令创建一个新的数据库,并设置字符集为utf8mb4:

mysql -uroot
1
CREATE DATABASE ambari CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE ambari;

CREATE USER 'ambari'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
FLUSH PRIVILEGES;
1
2
3
4
5
6

注意: 在设置数据库时,要确保字符集和排序规则正确配置,以避免乱码问题。

# 1.4 乱码问题验证

在完成数据库配置后,验证乱码问题是否已经得到解决。可以通过检查数据库中的数据来确认中文是否正确存储。

image-20240704161824090

image-20240704162043654

注意

在完成数据库字符集调整后,记得重新启动MariaDB并清理缓存,以确保所有配置生效。

#Ambari#乱码#数据库
Ambari 汉化方案及实践
Ambari 本地二次开发——跨域处理

← Ambari 汉化方案及实践 Ambari 本地二次开发——跨域处理→

最近更新
01
Pandoc 缺失导致 SparkR 构建失败
06-08
02
Cyrus SASL/GSASL 缺失解决
06-07
03
Hadoop_3.3.4 编译实战 1.0.0+
06-06
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式