一、概览
1、愿景
致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台,帮助您快速构建起稳定、高效、可弹性伸缩的大数据云原生平台。
2、DataSophon是什么
《三体》,这部获世界科幻文学最高奖项雨果奖的作品以惊艳的"硬科幻"风被大家所熟知,其作者刘慈欣更是被誉为"单枪匹马将中国科幻提高到世界级水平"。
作为三体中非常重要的角色,智子(Sophon)是将九维的质子进行二维展开,通过电路蚀刻改造成超级计算机后,再转回到微观的十一维来监控人类的一举一动,并利用量子纠缠实现瞬时通信报告给4光年之外的三体文明。说白了智子是三体文明部署在地球的AI实时远程监控和管理平台。
DataSophon也是个类似的管理平台,只不过与智子不同的是,智子的目的是锁死人类的基础科学阻碍人类技术爆炸,而DataSophon是致力于自动化监控、运维、管理大数据基础组件和节点的,帮助您快速构建起稳定,高效的大数据集群服务。
主要特性有:
-
快速部署,可快速完成300个节点的大数据集群部署
-
兼容复杂环境,极少的依赖使其很容易适配各种复杂环境
-
监控指标全面丰富,基于生产实践展示用户最关心的监控指标
-
灵活便捷的告警服务,可实现用户自定义告警组和告警指标
-
可扩展性强,用户可通过配置的方式集成或升级大数据组件
3、核心特性
1、简单易用
仅需几步即可快速完成数千个节点规模的大数据集群部署,界面化操作、轻松管理各种大数据组件,大幅提升运维工作效率
2、高兼容性
全面兼容开源生态,已支持多种常用大数据组件、并且适配各种复杂环境,支持常用Linux生态操作系统及arm和x86机器
3、云原生
支持大数据服务以容器化方式运行,基于Kubernetes内核实现大数据组件的自动运维调优,避免组件繁琐的运维调优工作
4、整体架构
5、集成组件
各集成组件均进行过兼容性测试,并稳定运行于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 | 告警通知管理系统 |
二、准备环境
1、集群规划
主机名 | ip | 备注 | 配置 | 系统 |
ddp01 | 192.168.20.241 | master+node1 | 4C+16G | 银河麒麟 V10 |
ddp02 | 192.168.20.242 | node2 | 4C+16G | 银河麒麟 V10 |
ddp03 | 192.168.20.243 | node3 | 4C+16G | 银河麒麟 V10 |
2、网络要求
要求各机器各组件正常运行提供如下的网络端口配置:
组件 | 默认端口 | 说明 |
DDHApplicationServer | 8081、2551、8586 | 8081为http server端口,2551为rpc通信端口,8586为jmx端口 |
WorkerApplicationServer | 2552、9100、8585 | 2552 rpc通信端口,8585为jmx端口,9100为主机数据采集器端口 |
nginx | 8888 | 提供 UI 端通信端口 |
3、客户端浏览器要求
推荐 Chrome 以及使用 Chrome 内核的较新版本浏览器访问前端可视化操作界面。
4、关闭防火墙(三个节点)
各主机防火墙需关闭。
# 查看当前防火墙状态
[root@ddp01 ~]# sudo systemctl status firewalld
# 关闭防火墙
[root@ddp01 ~]# sudo systemctl stop firewalld
# 设置开机不启动
[root@ddp01 ~]# sudo systemctl disable firewalld
5、配置hostname (三个节点)
192.168.20.241
[root@ddp01 ~]# hostnamectl set-hostname ddp01
[root@ddp01 ~]#
192.168.20.242
[root@ddp02 ~]# hostnamectl set-hostname ddp02
[root@ddp02 ~]#
192.168.20.243
[root@ddp03 ~]# hostnamectl set-hostname ddp03
[root@ddp03 ~]#
6、配置 hosts (三个节点)
[root@ddp01 ~]# vim /etc/hosts
192.168.20.241 ddp01
192.168.20.242 ddp02
192.168.20.243 ddp03
7、配置校时服务 (三个节点)
# 安装 chrony
[root@ddp01 ~]# yum -y install chrony
上次元数据过期检查:0:31:42 前,执行于 2024年03月04日 星期一 16时34分15秒。
软件包 chrony-3.5-3.p01.ky10.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
# 启用开机启动chronyd服务
[root@ddp01 ~]# systemctl enable chronyd.service
# 重启chronyd服务
[root@ddp01 ~]# systemctl restart chronyd.service
# 查看chronyd服务状态
[root@ddp01 ~]# systemctl status chronyd.service
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-03-04 17:06:11 CST; 5s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 9462 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Process: 9466 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Main PID: 9464 (chronyd)
Tasks: 1
Memory: 260.0K
CGroup: /system.slice/chronyd.service
└─9464 /usr/sbin/chronyd
3月 04 17:06:10 ddp01 systemd[1]: Starting NTP client/server...
3月 04 17:06:10 ddp01 chronyd[9464]: chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
3月 04 17:06:10 ddp01 chronyd[9464]: Frequency -11.491 +/- 2.092 ppm read from /var/lib/chrony/drift
3月 04 17:06:11 ddp01 systemd[1]: Started NTP client/server.
[root@ddp01 ~]#
# 修改配置文件增加 server ntp1.aliyun.com iburst
[root@ddp01 ~]# vi /etc/chrony.conf
#pool pool.ntp.org iburst
server ntp1.aliyun.com iburst
# 重启 chronyd 服务
[root@ddp01 ~]# systemctl restart chronyd.service
# 设置服务器时间为24小时制
[root@ddp01 ~]# timedatectl
Local time: 一 2024-03-04 17:11:34 CST
Universal time: 一 2024-03-04 09:11:34 UTC
RTC time: 一 2024-03-04 09:11:34
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@ddp01 ~]#
# 修改时区
[root@ddp01 ~]# timedatectl set-timezone Asia/Shanghai
8、关闭selinux (三个节点)
[root@ddp01 ~]# vim /etc/sysconfig/selinux
# SELINUX=enforcing
SELINUX=disabled
9、修改文件句柄最大限制 (三个节点)
[root@ddp01 ~]# vim /etc/security/limits.conf
# End of file
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
10、配置免密登录
# 配置免密
[root@ddp01 ~]# ssh-keygen -m PEM -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 回车
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Qe9wPduRYNkLtFAjHU9goD9NlkMjocuNUYRxiayH0p0 root@ddp01
The key's randomart image is:
+---[RSA 3072]----+
| .o=XB%=. |
| .+*.O+O.. |
| . +*.o O.+. |
| . +.E@ + =.. |
| . .S = o . |
| . |
| |
| |
| |
+----[SHA256]-----+
[root@ddp01 ~]#
#集群之间配置免密(包括节点本身)
[root@ddp01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@ddp01
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'ddp01 (fe80::a79d:80fa:dba2:ea81%ens33)' can't be established.
ECDSA key fingerprint is SHA256:yE9q6U2UBN1hVRLguZ2W8Fuo83wxgG3WGGLLCxVnoYU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized users only. All activities may be monitored and reported.
root@ddp01's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@ddp01'"
and check to make sure that only the key(s) you wanted were added.
[root@ddp01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@ddp02
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'ddp02 (192.168.20.242)' can't be established.
ECDSA key fingerprint is SHA256:mKoAmQsQgJI9ugOAOvnH9qqX4X9YTsH8Mt9coH1OI1o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized users only. All activities may be monitored and reported.
root@ddp02's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@ddp02'"
and check to make sure that only the key(s) you wanted were added.
[root@ddp01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@ddp03
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'ddp03 (192.168.20.243)' can't be established.
ECDSA key fingerprint is SHA256:POEUesKnZUBCfdT2C6N3+oByFHu4lggdCspfCt5Mbf8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized users only. All activities may be monitored and reported.
root@ddp03's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@ddp03'"
and check to make sure that only the key(s) you wanted were added.
# 验证 免密是否成功
[root@ddp01 ~]# ssh ddp01
[root@ddp01 ~]# ssh ddp02
[root@ddp01 ~]# ssh ddp03
11、安装jdk
参考 https://blog.csdn.net/zhangli_li520/article/details/123913328
12、安装mysql
参考 https://blog.csdn.net/zhangli_li520/article/details/106842298
建议mysql版本为5.7.X,并关闭ssl。
vim /etc/my.cnf
[mysqld]
skip-ssl # 跳过ssl
13、配置应用数据库
注意需关闭mysql ssl功能。在部署过程中,部分组件会执行sql生成库表,不同环境的mysql在配置上存在差异,可根据sql执行情况,变更mysql配置。
创建数据库, 指定数据库编码为UTF-8
CREATE DATABASE IF NOT EXISTS datasophon DEFAULT CHARACTER SET utf8;
grant all privileges on *.* to datasophon@"%" identified by 'datasophon' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%';
FLUSH PRIVILEGES;
三、DataSophon 前后端安装
1、下载安装包
a、下载 datasophon-manager-{version}.tar.gz
下载地址 https://github.com/datavane/datasophon/releases
我这里下载的是 1.2.1
b、下载DDP部署包
DDP部署包下载地址:链接:https://pan.baidu.com/s/1AA8uUpiV8ejyYavjg2uTAw?pwd=hnn0 提取码:hnn0
c、创建文件夹
[root@ddp01 ~]# mkdir -p /opt/datasophon/DDP/packages/
d、上传 datasophon-manager-{version}.tar.gz 至 /opt/datasophon/DDP/packages/
解压之后的文件结构如下
[root@ddp01 packages]# tar -zxvf datasophon-manager-1.2.1.tar.gz
├── bin # 执行脚本目录
├── conf # 配置文件目录
├── lib # 项目依赖目录
├── (logs) # 日志目录;应用运行后生成
├── jmx # jmx插件目录
├── datasophon-init # 环境初始化脚本
├── README.md # 读我说明
├── Dockerfile # 容器构建脚本
└── LICENSE
e、上传 DDP部署包 至 /opt/datasophon/DDP/packages/
2、修改配置文件
修改 /opt/datasophon/DDP/packages/datasophon-manager-1.2.1/conf 目录下datasophon.conf 文件完成配置
[root@ddp01 conf]# pwd
/opt/datasophon/DDP/packages/datasophon-manager-1.2.1/conf
[root@ddp01 conf]# vim datasophon.conf
# datasource config
datasource.ip=192.168.20.191
datasource.port=3857
datasource.database=datasophon
datasource.username=datasophon
datasource.password=datasophon
# server
server.port=8081
server.address=0.0.0.0
3、启动 DataSophon
进入 /opt/datasophon/DDP/packages/datasophon-manager-1.2.1/ 目录下
启动:sh bin/datasophon-api.sh start api
停止:sh bin/datasophon-api.sh stop api
重启:sh bin/datasophon-api.sh restart api
[root@ddp01 datasophon-manager-1.2.1]# sh bin/datasophon-api.sh start api
Begin start api......
starting api, logging to /opt/datasophon/DDP/packages/datasophon-manager-1.2.1/logs/api-ddp01.out
nohup /usr/bin/java -Xms1g -Xmx1g -Xmn512m -server -javaagent:/opt/datasophon/DDP/packages/datasophon-manager-1.2.1/jmx/jmx_prometheus_javaagent-0.16.1.jar=8586:/opt/datasophon/DDP/packages/datasophon-manager-1.2.1/jmx/jmx_exporter_config.yaml -Dspring.profiles.active=config -classpath /opt/datasophon/DDP/packages/datasophon-manager-1.2.1/conf:/opt/datasophon/DDP/packages/datasophon-manager-1.2.1/lib/* com.datasophon.api.DataSophonApplicationServer > /opt/datasophon/DDP/packages/datasophon-manager-1.2.1/logs/api-ddp01.out 2>&1 &
End start api.
部署成功后,可以进行日志查看,日志统一存放于logs文件夹内:
/opt/datasophon/DDP/packages/datasophon-manager-1.2.1/logs/
├── ddh-api.log
├── ddh-api-error.log
|—— api-{hostname}.out
使用浏览器访问 http://192.168.20.241:8081/ddh 默认用户名密码为 admin/admin123
能访问则个页面表示部署成功
查看mysql datasophon 库里面自动生成的表
4、创建集群
登录进去后 点击创建集群
填写对应的集群名称,和编码,选择对应的集群框架 点击确认
5、存储库管理
点击集群配置
输入 主机列表 和 SSH 用户名 跟端口 点击下一步
等待检测结果 全部成功后,选中主机,点击下一步 等待主机Agent分发 ,主机agent分发步骤将自动分发datasophon-worker组件,并启动WorkerApplicationServer。
分发完成后,选择主机 点击下一步
选择服务 初始化配置集群先选择部署AlertManager,Grafana和Prometheus三个组件。DataSophon依赖此三个组件实现系统监控告警管理。
点击【下一步】,分配AlertManager,Grafana和Prometheus服务的master服务角色部署节点,此三个组件需部署在同一台机器上。
点击【下一步】,分配AlertManager,Grafana和Prometheus服务的worker与client服务角色部署节点,没有worker和client服务角色的可以跳过之间点击【下一步】。
修改各服务配置。系统已给出默认配置,大部分情况下无需修改。点击下一步 开始安装服务
点击完成
点击进入集群
6、添加服务
1、添加 Zookeeper 服务
选中ZooKeeper 点击下一步
分配ZooKeeper master服务角色部署节点,zk需部3台或5台。
Zk没有worker与client服务角色,直接点击【下一步】跳过。
根据实际情况修改Zk服务配置。
点击【下一步】,进行zk服务安装。
安装完成后 点击前面 安装 ZOOKEEPER 进到里面查看各个节点安装情况,以及安装日志
点击各个节点名称,查看安装日志 其他组件查看日志类似,后面不在赘述
安装完成后 点击完成
2、添加 HDFS 服务
部署HDFS,其中JournalNode需部署三台,NameNode部署两台,ZKFC和NameNode部署在相同机器上。如下图:
点击【下一步】,选择DataNode部署节点。
根据实际情况修改配置,例如修改DataNode数据存储目录。
点击【下一步】,开始安装Hdfs。
3、添加 YARN 服务
部署YARN,其中ResourceManager需部署两台作高可用。如下图:
点击【下一步】,选择NodeManager部署节点。
根据实际情况修改配置。
安装完成 点击完成
4、添加其他服务服务
其他服务添加跟上述服务添加操作一致
其他功能建议参考官网
https://datasophon.github.io/datasophon-website/