一、DataSophon是什么
1.1 DataSophon概述
《三体》,这部获世界科幻文学最高奖项雨果奖的作品以惊艳的"硬科幻"风被大家所熟知,其作者刘慈欣更是被誉为"单枪匹马将中国科幻提高到世界级水平"。
作为三体中非常重要的角色,智子(Sophon)是将九维的质子进行二维展开,通过电路蚀刻改造成超级计算机后,再转回到微观的十一维来监控人类的一举一动,并利用量子纠缠实现瞬时通信报告给4光年之外的三体文明。说白了智子是三体文明部署在地球的AI实时远程监控和管理平台。
DataSophon也是个类似的管理平台,只不过与智子不同的是,智子的目的是锁死人类的基础科学阻碍人类技术爆炸,而DataSophon是致力于自动化监控、运维、管理大数据基础组件和节点的,帮助您快速构建起稳定,高效的大数据集群服务。
DataSophon 是一款面向大数据运维人员的开源集群管理平台,它能够替代传统手动部署大数据组件的方式,通过 Web 可视化界面统一管控多台服务器。运维人员只需完成节点代理程序部署,即可在平台上批量完成 Hadoop、Spark、Flink 等大数据组件的一键安装、配置下发、服务启停、运行状态监控与故障告警等工作,极大简化了分布式集群的搭建、扩容及日常运维流程,降低了大数据环境部署的操作门槛,可高效保障多节点大数据集群稳定运行。
主要特性有:
- 快速部署,可快速完成300个节点的大数据集群部署
- 兼容复杂环境,极少的依赖使其很容易适配各种复杂环境
- 监控指标全面丰富,基于生产实践展示用户最关心的监控指标
- 灵活便捷的告警服务,可实现用户自定义告警组和告警指标
- 可扩展性强,用户可通过配置的方式集成或升级大数据组件

1.2 架构设计

1.3 集成组件
各集成组件均进行过兼容性测试,并稳定运行于300+个节点规模的大数据集群,日处理数据量约4000亿条。在海量数据下,各大数据组件调优成本低,平台默认展示用户关心和需要调优的配置。
| 序号 | 名称 | 版本 | 描述 |
|---|---|---|---|
| 1 | HDFS | 3.3.3 | 分布式大数据存储 |
| 2 | YARN | 3.3.3 | 分布式资源调度与管理平台 |
| 3 | ZooKeeper | 3.5.10 | 分布式协调系统 |
| 4 | FLINK | 1.15.2 | 实时计算引擎 |
| 5 | DolphoinScheduler | 3.1.1 | 分布式易扩展的可视化工作流任务调度平台 |
| 6 | StreamPark | 1.2.3 | 流处理极速开发框架,流批一体&湖仓一体的云原生平台 |
| 7 | Spark | 3.1.3 | 分布式计算系统 |
| 8 | Hive | 3.1.0 | 离线数据仓库 |
| 9 | Kafka | 2.4.1 | 高吞吐量分布式发布订阅消息系统 |
| 10 | Trino | 367 | 分布式Sql交互式查询引擎 |
| 11 | Doris | 1.1.5 | 新一代极速全场景MPP数据库 |
| 12 | Hbase | 2.4.16 | 分布式列式存储数据库 |
| 13 | Ranger | 2.1.0 | 权限控制框架 |
| 14 | ElasticSearch | 7.16.2 | 高性能搜索引擎 |
| 15 | Prometheus | 2.17.2 | 高性能监控指标采集与告警系统 |
| 16 | Grafana | 9.1.6 | 监控分析与数据可视化套件 |
| 17 | AlertManager | 0.23.0 | 告警通知管理系统 |
二、环境准备
2.1 关闭防火墙
各主机防火墙需关闭。
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
2.2 配置主机host
大数据集群所有机器需配置主机host。
配置主机名: hostnamectl set-hostname 主机名
配置/etc/hosts文件
主机名配置建议采用如下方式:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.11.132 ddp1
192.168.11.133 ddp2
192.168.11.131 ddp3
2.3 免密登录配置
部署机器中,DataSophon节点以及大数据服务主节点与从节点之间需免密登录。
生成ssh 秘钥: ssh-keygen -m PEM -t rsa ,一路回车。
执行 ssh-copy-id 目标主机。
2.4 环境要求
Jdk环境需安装。
建议mysql版本为5.7.X,并关闭ssl。
修改/etc/security/limits.conf配置文件
末尾样子如下:

- 保存退出 vim;
- 断开当前 ssh 连接,重新登录服务器(limits 只对新会话生效,不重登查看的值不变);
- 验证命令:
# 查看文件打开数
ulimit -n
# 查看最大进程/线程数
ulimit -u
其他两台虚拟机同样操作
编辑 mysql 配置文件/etc/my.cnf,在[mysqld]段添加:

注释掉所有自带 ssl 证书行(如有):

我使用的版本是8.0,需要在[mysqld]里额外添加认证插件配置,防止 DataSophon 连接报密码认证失败:
default_authentication_plugin=mysql_native_password
三、安装部署
3.1 创建目录
在服务器/opt/datasophon目录下创建目录
mkdir -p /opt/datasophon/DDP/packages
将下载的部署包上传到/opt/datasophon/DDP/packages目录下,作为项目部署包仓库地址
解压缩:
cd /opt/datasophon/DDP/packages/
tar -zxvf datasophon-manager-1.2.1.tar.gz


3.2 部署mysql
注意需关闭mysql ssl功能。在部署过程中,部分组件会执行sql生成库表,不同环境的mysql在配置上存在差异,可根据sql执行情况,变更mysql配置。

3.3 执行初始化脚本
执行如下数据库脚本:
先登录MySQL:
mysql -uroot -p123456
1. 先修改全局密码校验规则
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.check_user_name = OFF;
创建简单密码用户(示例密码 123456)
CREATE USER 'datasophon'@'%' IDENTIFIED BY '123456';
授权库权限
GRANT ALL PRIVILEGES ON datasophon.* TO 'datasophon'@'%' WITH GRANT OPTION;
适配加密协议
ALTER USER 'datasophon'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
关闭 SSL 强制
ALTER USER 'datasophon'@'%' REQUIRE NONE;
刷新权限
FLUSH PRIVILEGES;
登录测试
mysql -udatasophon -p123456 -h127.0.0.1

3.4 启动服务
1)先看 MySQL 驱动下载好没(lib 目录)

如果没有:
cd lib
curl -O https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.33/mysql-connector-java-8.0.33.jar
ls
出现 mysql-connector-java-8.0.33.jar 代表下载成功。
可能会下载失败,下载失败按如下操作:
本地下载驱动包,上传至lib

版本稍微有点不一样,注意大小2.4M
2)切回根目录启动服务
cd ..
sh bin/datasophon-api.sh start api
3)查看实时运行日志
tail -f logs/datasophon-api.log
配套启停命令汇总
# 启动
sh bin/datasophon-api.sh start api
# 停止
sh bin/datasophon-api.sh stop api
# 重启
sh bin/datasophon-api.sh restart api
# 错误日志单独看
tail -f logs/datasophon-api-error.log

部署成功后,可以进行日志查看,日志统一存放于logs文件夹内:

3.5 各种问题
1)登录不成功

DataSophon 后端采用MD5 加密比对密码,数据库内存储的密码密文与前端输入admin计算出的 MD5 不匹配,所以校验失败。
登录 MySQL 重置管理员账号
# 登录数据库
mysql -udatasophon -p123456 -hhadoop11
use datasophon;
# 删除旧admin用户,避免冲突
DELETE FROM t_ddh_user_info WHERE username='admin';
# 插入明文admin对应的标准MD5密文:21232f297a57a5a743894a0e4a801fc3
INSERT INTO t_ddh_user_info (id,username,password,email,phone,create_time,user_type)
VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3','admin@163.com','13800000000',NOW(),1);
exit;
再重启服务
# 停止服务
sh bin/datasophon-api.sh stop api
# 启动服务
sh bin/datasophon-api.sh start api
# 实时查看启动日志,等所有组件缓存加载完毕
tail -f logs/api-hadoop11.out
2)网络访问报错:外部浏览器打不开页面

停止 API 服务
sh bin/datasophon-api.sh stop api
MySQL 重置 admin 管理员账号(核心,修复用户不存在 / 密码不匹配)
# 登录数据库
mysql -udatasophon -p123456 -hhadoop11
use datasophon;
# 删除旧失效admin
DELETE FROM t_ddh_user_info WHERE username='admin';
# 清空过期会话缓存
TRUNCATE TABLE t_ddh_session;
# 插入明文admin对应的标准MD5密码账号
INSERT INTO t_ddh_user_info (id,username,password,email,phone,create_time,user_type)
VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3','admin@163.com','13800000000',NOW(),1);
exit;
确认配置文件无语法错误、数据库地址正确
# 覆盖纯净application-config.yml(无重复datasophon节点)
cat > conf/application-config.yml <<'EOF'
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://hadoop11:3306/datasophon?allowMultiQueries=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
username: datasophon
password: 123456
main:
allow-circular-references: true
server:
port: 8081
address: 0.0.0.0
datasophon:
migration:
enable: true
mybatis-plus:
global-config:
db-config:
id-type: auto
configuration:
map-underscore-to-camel-case: true
EOF
放行防火墙 8081 端口,保证 Windows 能连通
firewall-cmd --permanent --add-port=8081/tcp
firewall-cmd --reload
# 临时关闭防火墙快速验证
systemctl stop firewalld
重启 API 服务,等待组件全部加载完成
sh bin/datasophon-api.sh start api
# 实时查看日志,直到打印完所有组件缓存加载日志
tail -f logs/api-hadoop11.out
浏览器修正访问地址(关键:放弃域名 hadoop11,改用 IP)
- 地址栏输入:
http://192.168.91.11:8081/ddh - 快捷键
Ctrl + F5强制清空浏览器缓存 - 登录框手动输入:用户名
admin、密码admin登录成功后 401 页面消失,进入系统。
我出现的错误:

- YML 多次追加配置出现重复
datasophon:节点,服务启动失败;- 数据库连接 URL 写
localhost,报账号访问拒绝,服务无法读取用户表;- 错误使用表名
t_ddh_user,实际用户表为t_ddh_user_info;- 浏览器使用域名
hadoop11访问,Cookie 域校验异常,直接拦截返回 401 页面。
3)端口被占用

- 启动 DataSophon 后日志抛出
BindException: Address already in use: 3000;- Grafana 组件启动失败,监控页面无法打开;
- 集群部署 Grafana 实例时端口冲突,组件缓存加载告警;
- 连带影响:监控图表空白、前端监控接口请求超时。
产生原因
- 上一次 Grafana 进程未正常关闭,后台残留进程持续占用 3000;
- 重复执行部署 / 重启集群脚本,多实例抢占 3000 端口;
- 服务器本地其他 Web 程序(如 Grafana、Node 项目)提前占用 3000;
- DataSophon 框架默认 Grafana 固定配置端口 3000,无自动避让机制。
#查询占用 3000 端口的进程 PID
#直接检索grafana相关进程
ps -ef | grep grafana | grep -v grep
#执行后会输出占用进程的 PID 编号。
# 批量杀掉所有grafana残留进程
ps -ef | grep grafana | grep -v grep | awk '{print $2}' | xargs kill -9
# 通用杀端口进程(替换<pid>为查询到的进程号)
kill -9 <pid>
# 验证 3000 端口是否释放
ss -tuln | grep 3000
# 无输出 = 端口释放完成;有输出则重复执行杀进程命令。
还有一种方法:换个端口号

4)其他错误

Spring 上下文容器已经提前关闭,所有 Bean 无法完成依赖注入
触发该错误的 3 个根本原因
- 数据库连接失败(之前遇到的
Access denied for user 'datasophon'@localhost):Druid 持续拿不到数据库连接池,Spring 容器启动超时直接关闭上下文,MyBatis、Service 全部初始化中断;- YAML 配置语法错误:重复顶层 key、缩进错乱、配置参数非法,导致 MyBatis-Plus 配置绑定失败,容器提前销毁;
- 端口 / 进程冲突:8081 服务端口被占用,服务无法正常绑定 Web 容器,Spring 上下文启动失败并关闭;
- 连锁反应:容器一旦关闭,所有 Mapper、Service、Actor 集群逻辑全部报这个嵌套异常。
# ========================== 1、清理残留进程,释放8081端口 ==========================
# 批量杀死所有DataSophon后台Java进程,避免端口占用导致容器启动失败
ps -ef | grep DataSophonApplicationServer | grep -v grep | awk '{print $2}' | xargs kill -9
# 验证8081端口是否释放,无输出代表释放成功
ss -tuln | grep 8081
# ========================== 2、修复MySQL数据库账号权限(报错核心诱因) ==========================
# 登录MySQL root用户执行授权SQL
mysql -uroot -p <<EOF
# 给本地localhost访问授权,密码123456
ALTER USER 'datasophon'@'localhost' IDENTIFIED BY '123456';
# 给hadoop11主机远程访问授权
ALTER USER 'datasophon'@'hadoop11' IDENTIFIED BY '123456';
# 刷新权限立即生效
FLUSH PRIVILEGES;
EOF
# 测试数据库连通性,验证账号密码正常
mysql -udatasophon -p123456 -hhadoop11 -e "use datasophon;show tables;"
# ========================== 3、覆盖纯净无语法错误的yml配置文件(解决MyBatis-Plus绑定异常) ==========================
# 重写application-config.yml,无重复顶层key、数据库地址正确、mybatis配置规范
cat > conf/application-config.yml <<'EOF'
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://hadoop11:3306/datasophon?allowMultiQueries=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
username: datasophon
password: 123456
main:
allow-circular-references: true
server:
port: 8081
address: 0.0.0.0
datasophon:
migration:
enable: true
mybatis-plus:
global-config:
db-config:
id-type: auto
configuration:
map-underscore-to-camel-case: true
EOF
# ========================== 4、防火墙放行8081端口 ==========================
# 永久开放8081端口外部访问
firewall-cmd --permanent --add-port=8081/tcp
firewall-cmd --reload
# 临时关闭防火墙快速验证连通性
systemctl stop firewalld
# ========================== 5、标准重启API服务,观察日志 ==========================
# 停止旧服务
sh bin/datasophon-api.sh stop api
# 启动API后台服务
sh bin/datasophon-api.sh start api
# 实时跟踪启动日志,查看是否还出现上下文关闭报错
tail -f logs/api-hadoop11.out
# ========================== 兜底方案:数据库重建(如果上面执行完仍报错) ==========================
# mysql -uroot -p <<EOF
# drop database if exists datasophon;
# create database datasophon default character set utf8mb4;
# EOF
# sh bin/datasophon-api.sh stop api
# sh bin/datasophon-api.sh start api
3.6 登录
启动服务
sh bin/datasophon-api.sh start api

网址:http://192.168.91.11:8081/ddh
账号密码:admin


四、创建集群
1.登陆页面后,点击集群管理,创建集群

2.创建成功后点击【配置集群】:
根据提示,输入主机列表(注意:主机名需与在准备环境中hostnamectl set-hostname 设置的主机名一致),ssh用户名默认为root和ssh端口默认为22。

进入 配置集群


下一步,主机agent分发步骤将自动分发datasophon-worker组件,并启动WorkerApplicationServer

主机管理Agent分发完成后,点击【下一步】,开始部署服务。
初始化配置集群先选择部署AlertManager,Grafana和Prometheus三个组件。
点击【下一步】,分配AlertManager,Grafana和Prometheus服务的master服务角色部署节点,此三个组件需部署在同一台机器上。

点击【下一步】,分配AlertManager,Grafana和Prometheus服务的worker与client服务角色部署节点,没有worker和client服务角色的可以跳过之间点击【下一步】。
修改各服务配置。系统已给出默认配置,大部分情况下无需修改。

点击【下一步】开始服务安装,可实时查看服务安装进度。
点击【完成】,在集群管理页面点击【进入】,即可进入集群服务组件管理页面。
五、添加服务
1)添加Flink
点击【添加服务】,选择Flink。

根据实际情况修改Flink服务配置。

安装成功后即可查看Flink服务总览页面。
添加flink任务后,可以看到全集群大盘,全局一键定位 Flink 数据倾斜、集群资源瓶颈
内置成熟监控告警体系,自动采集所有组件 Metrics:
- 一张大盘看 集群整体内存水位、所有 Flink 任务子任务负载,快速定位数据倾斜
- 自定义钉钉 / 邮件告警:磁盘使用率、YARN 资源超限、服务宕机提前通知,不用熬夜盯集群
- 不用从零搭建监控系统,节省大量运维开发时间。


被折叠的 条评论
为什么被折叠?



