Appearance
DataSophon 1.2.1 大数据平台部署
注:
此篇未实践,仅仅先整理
原文连接:大数据管理平台DataSophon-1.2.1安装部署
其他文章1:大数据管理平台DataSophon-1.2.1
官方地址:DataSophon-官方部署文档
Github地址:datasophon
DataSophon介绍
愿景
致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台,帮助您快速构建起稳定、高效、可弹性伸缩的大数据云原生平台
DataSophon是什么
DataSophon概述
《三体》,这部获世界科幻文学最高奖项雨果奖的作品以惊艳的"硬科幻"风被大家所熟知,其作者刘慈欣更是被誉为"单枪匹马将中国科幻提高到世界级水平"。
作为三体中非常重要的角色,智子(Sophon)是将九维的质子进行二维展开,通过电路蚀刻改造成超级计算机后,再转回到微观的十一维来监控人类的一举一动,并利用量子纠缠实现瞬时通信报告给4光年之外的三体文明。说白了智子是三体文明部署在地球的AI实时远程监控和管理平台。
DataSophon也是个类似的管理平台,只不过与智子不同的是,智子的目的是锁死人类的基础科学阻碍人类技术爆炸,而DataSophon是致力于自动化监控、运维、管理大数据基础组件和节点的,帮助您快速构建起稳定,高效的大数据集群服务。
主要特性有:
- 快速部署,可快速完成300个节点的大数据集群部署
- 兼容复杂环境,极少的依赖使其很容易适配各种复杂环境
- 监控指标全面丰富,基于生产实践展示用户最关心的监控指标
- 灵活便捷的告警服务,可实现用户自定义告警组和告警指标
- 可扩展性强,用户可通过配置的方式集成或升级大数据组件

架构概览

设计思想
为设计出轻量级,高性能,高可扩的,可满足国产化环境要求的大数据集群管理平台。需满足以下设计要求:
(1)一次编译,处处运行,项目部署仅依赖java环境,无其他系统环境依赖。
(2)DataSophon工作端占用资源少,不占用大数据计算节点资源。
(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 | 告警通知管理系统 |
环境准备
测试服务器
| IP | 主机名 |
|---|---|
| 192.168.3.115 | ddp01 |
| 192.168.3.116 | ddp02 |
| 192.168.3.117 | ddp03 |
| 192.168.3.118 | ddp04 |
主机名映射
bash
$vi /etc/hosts
192.168.3.115 ddp01
192.168.3.116 ddp02
192.168.3.117 ddp03
192.168.3.118 ddp04关闭防火墙
bash
$systemctl stop firewalld
$systemctl disable firewalld
$systemctl status firewalld集群免密
部署机器中,DataSophon节点以及大数据服务主节点与从节点之间需免密登录。
配置免密
bash
$ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$chmod 600 ~/.ssh/authorized_keys集群之间完成免密
bash
$ssh-copy-id -i ~/.ssh/id_rsa.pub root@主机系统文件句柄
shell
$vi /etc/security/limits.conf
# End of file
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536环境要求
JDK环境需安装。建议mysql版本为5.7.X,并关闭ssl。
创建目录
在115服务器/opt/datasophon目录下创建目录
bash
$mkdir -p /opt/datasophon/DDP/packages将下载的部署包上传到/opt/datasophon/DDP/packages目录下,作为项目部署包仓库地址

部署
解压
在安装目录下解压datasophon-manager-{version}.tar.gz,解压后可以看到如下安装目录:
bash
$cd /opt/datasophon/DDP/packages/
$tar -zxvf datasophon-manager-1.2.1.tar.gz -C /opt/datasophon/- bin:启动脚本git
- conf :配置文件
- lib :项目依赖的jar包
- logs:项目日志存放目录
- jmx:jmx插件

部署mysql
注意需关闭mysql ssl功能。在部署过程中,部分组件会执行sql生成库表,不同环境的mysql在配置上存在差异,可根据sql执行情况,变更mysql配置。
sql
SHOW VARIABLES LIKE '%ssl%';
修改配置文件my.cnf,在MySQL的配置文件my.cnf中加入以下内容:
bash
$vi /etc/my.cnf
#disable_ssl
skip-ssl重启mysql服务
修改了my.cnf文件之后,需要重启MySQL才能使修改生效。可以使用以下命令重启MySQL:
bash
$service mysqld restart再次查看,可以发现此时have_ssl值为DISABLED

执行初始化脚本
执行如下数据库脚本:
sql
CREATE DATABASE IF NOT EXISTS datasophon DEFAULT CHARACTER SET utf8;以下可选:
MySQL5.X
sql
grant all privileges on *.* to datasophon@"%" identified by 'datasophon' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%';
FLUSH PRIVILEGES;
exitMySQL8.X
sql
create user 'datasophon'@'%' identified by 'datasophon';
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit执行

元数据库会自动初始化。
修改配置
修改 conf 目录下的application.yml 配置文件中数据库链接配置,我使用默认配置:
shell
$cat conf/profiles/application-config.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://${datasource.ip:localhost}:${datasource.port:3306}/${datasource.database:datasophon}?&allowMultiQueries=true&characterEncoding=utf-8
username: ${datasource.username:datasophon}
password: ${datasource.password:datasophon}
server:
port: ${server.port:8081}
address: ${server.ip:0.0.0.0}
datasophon:
migration:
enable: true启动服务
shell
$cd /opt/datasophon/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部署成功后,可以进行日志查看,日志统一存放于logs文件夹内:
shell
$ll logs/
total 364
-rw-r--r-- 1 root root 175042 Dec 12 11:10 api-ddp-manager.out
-rw-r--r-- 1 root root 171916 Dec 12 10:59 datasophon-api.2023-12-12_10.0.log
-rw-r--r-- 1 root root 0 Dec 12 10:58 datasophon-api-error.log
-rw-r--r-- 1 root root 1640 Dec 12 11:10 datasophon-api.log访问前端页面地址: http://192.168.3.115:8081/ddh/#/login, 默认用户名和密码为admin/admin123

配置系统服务
shell
$ cat > /usr/lib/systemd/system/datasophon.service << EOF
[Unit]
Description=Datasophon Service
After=network.target
[Service]
Type=forking
# 注意datasophon-api.sh所在的路径
ExecStart=/data/datasophon-manager/bin/datasophon-api.sh start api
ExecStop=/data/datasophon-manager/bin/datasophon-api.sh stop api
Restart=on-abort
KillMode=none
# 创建私有的内存临时空间
PrivateTmp=True
[Install]
Alias=ddh
Alias=ddp
WantedBy=multi-user.target
EOFbash
systemctl daemon-reload
systemctl status datasophon.service
systemctl start datasophon.service
systemctl stop datasophon.service
systemctl restart datasophon.service创建集群
登录进入系统页面后在集群管理页面创建集群,DataSophon支持多集群管理和授予用户集群管理员权限

点击【创建集群】,输入集群名称,集群编码(集群唯一标识),集群框架。

创建成功后点击【配置集群】: 根据提示,输入主机列表(注意:主机名需与在准备环境中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服务角色的可以跳过之间点击【下一步】。

修改各服务配置。系统已给出默认配置,大部分情况下无需修改。

点击【下一步】开始服务安装,可实时查看服务安装进度

点击【完成】,在集群管理页面点击【进入】,即可进入集群服务组件管理页面。

总览

添加服务
添加ZooKeeper
点击【添加服务】,选择ZooKeeper。

选择 ZK服务

分配ZooKeeper master服务角色部署节点,zk需部3台或5台。

Zk没有worker与client服务角色,直接点击【下一步】跳过。
根据实际情况修改Zk服务配置。

点击【下一步】,进行zk服务安装

安装成功后即可查看Zookeeper服务总览页面。

添加HDFS
部署HDFS,其中JournalNode需部署三台,NameNode部署两台,ZKFC和NameNode部署在相同机器上。如下图

点击【下一步】,选择DataNode部署节点。

根据实际情况修改配置,例如修改DataNode数据存储目录。

点击【下一步】,开始安装Hdfs。

安装成功后即可查看HDFS服务总览页面。

HDFS-WEB页面

添加Yarn服务
部署YARN,其中ResourceManager需部署两台作高可用。如下图:

点击【下一步】,选择NodeManager部署节点。

根据实际情况修改配置。

等待安装完成

安装成功后,即可查看YARN服务总览页面

添加Hbase
点击【添加服务】,选择Hbase。

选择RegionServer。

可根据需要修改服务配置。


安装成功后可查看Hbase总览页面。

添加Hive
在数据库中创建Hive数据库。
sql
CREATE DATABASE IF NOT EXISTS hive DEFAULT CHARACTER SET utf8;以下可选:
MySQL5.X
sql
grant all privileges on *.* to hive@"%" identified by 'hive' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';
FLUSH PRIVILEGES;
exitMySQL8.X
sql
create user 'hive'@'%' identified by 'hive';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit选择需要安装hiveserver2和metastore角色的节点

选择需要安装hiveclient角色的节点

根据实际情况修改配置

等待安装完成,安装成功后即可查看Hive服务总览页面

安装成功后可查看Hive总览页面。

添加Spark
选择SPARK3。

Spark没有Master角色,直接点击【下一步】。

根据实际情况配置


安装完成

添加Flink
点击【添加服务】,选择Flink。

Flink没有Master角色,直接点击【下一步】。

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


安装成功后即可查看Flink服务总览页面。

添加kafka
点击【添加服务】,选择kafka。

选择安装kafka服务broker角色的节点

根据实际情况调整Kafka参数。

Kafka安装成功后,即可在Kakfa服务总览页查看Kafka详情。

安装成功后可查看Kafka总览页面。

添加Trino
点击【添加服务】,选择Trino。

选择TrinoCoordinator。

选择TrinoWorker。注意:TrinoCoordinator和TrinoWorker不要部署在同一台机器上。

注意"Trino最大堆内存","每个查询在单个节点可使用最大内存"这两个配置,其中"每个查询在单个节点可使用最大内存"不可超过"Trino最大堆内存"的80%,“总共可使用最大内存"为"每个查询在单个节点可使用最大内存”* TrinoWorker数。Trino最大堆内存调整为 6后 正常启动

点击【下一步】,开始安装Trino。

等待安装完成,可以看到Trino总览页面

选择trino的webui,可以访问trino的连接,http://192.168.3.116:8086/ui/

添加Doris服务
点击【添加服务】,选择Doris。

分配FE服务角色部署节点,奇数

分配DorisBE和DorisFEObserver服务角色部署节点。
警告
DorisFE与DorisFEObserver不能部署在同一台机器上,不然会出现端口冲突。

根据需要修改Doris配置,其中FE优先网段和BE优先网段需要配置,如配置成172.31.86.0/24。

安装成功后即可查看Doris服务总览页面。

Doris-web页面。

be可能启动报错,我们需要执行如下命令添加配置
shell
sysctl -w vm.max_map_count=2000000
echo "* soft nofile 204800" >> /etc/security/limits.conf
echo "* hard nofile 204800" >> /etc/security/limits.conf
echo "* soft nproc 204800" >> /etc/security/limits.conf
echo "* hard nproc 204800 " >> /etc/security/limits.conf文件句柄不生效,我们可以直接添加到启动脚本中

如上的doris版本我使用了doris1.1.5,使用 MySQL Client 连接 FE
shell
# 使用 MySQL Client 连接 FE
mysql -h ddp04 -P 9030 -uroot默认 root 无密码,通过以下命令修改 root 密码。
shell
SET PASSWORD FOR 'root' = PASSWORD('yixiao666');添加 BE
shell
ALTER SYSTEM drop BACKEND "ddp01:9060";
ALTER SYSTEM drop BACKEND "ddp02:9060";
ALTER SYSTEM drop BACKEND "ddp03:9060";查看 BE 状态
SHOW PROC ‘/backends’;

Alive 为true表示添加成功,如下图创建测试库进行表查询成功。

问题:可能存在FE启动失败和BE添加不成功,可以尝试手动添加BE。参考文章:【Doris的安装和使用】_doris avx2-CSDN博客
添加ranger
创建ranger数据库
shell
CREATE DATABASE IF NOT EXISTS ranger DEFAULT CHARACTER SET utf8;
grant all privileges on *.* to ranger@"%" identified by 'ranger' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'winner001' WITH GRANT OPTION;
flush privileges;
# rangerAdmin 所在节点授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.2.120' IDENTIFIED BY 'Winner001' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ddp03' IDENTIFIED BY 'Winner001' WITH GRANT OPTION;
flush privileges;以下可选:
MySQL5.X
sql
grant all privileges on *.* to ranger@"%" identified by 'ranger' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%';
FLUSH PRIVILEGES;
exitMySQL8.X
sql
create user 'ranger'@'%' identified by 'ranger';
GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit执行
点击【添加服务】,选择Ranger。

选择RangerAdmin部署节点。

输入数据库root用户密码,数据库地址,Ranger数据用户密码等配置信息。

安装成功后即可查看Ranger服务总览页面。

http://192.168.3.116:6080/ admin/admin123

**问题:**mysql中解决:Error Code: 1044. Access denied for user ‘root’@‘%’ to database
如何遇到自动安装有问题我们可以尝试进入ranger目录,执行setup.sh脚本尝试报错并寻求解决方式 。
添加DolphinScheduler
初始化DolphinScheduler数据库。
sql
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;以下可选:
MySQL5.X
sql
grant all privileges on *.* to datasophon@"%" identified by 'datasophon' with grant option;
grant all privileges on *.* to datasophon@"localhost" identified by 'datasophon' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'localhost';
FLUSH PRIVILEGES;
exitMySQL8.X
sql
create user 'datasophon'@'%' identified by 'datasophon';
create user 'datasophon'@'localhost' identified by 'datasophon';
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit执行/opt/datasophon/DDP/packages目录下dolphinscheduler_mysql.sql创建dolphinscheduler数据库表。
sql
use dolphinscheduler;
source /opt/datasophon/DDP/packages/dolphinscheduler_mysql.sql;添加DolphinScheduler。

分配api-server/alert-server/master-server/worker-server角色

分配Work与Client 角色

根据实际情况,修改DolphinScheduler配置。

安装成功后即可查看DolphinScheduler服务总览页面。

DolphinScheduler配置页面

添加StreamPark
初始化StreamPark数据库。
sql
CREATE DATABASE streampark DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;以下可选:
MySQL5.X
sql
grant all privileges on *.* to streampark@"%" identified by 'streampark' with grant option;
grant all privileges on *.* to streampark@"localhost" identified by 'streampark' with grant option;
GRANT ALL PRIVILEGES ON *.* TO 'streampark'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'streampark'@'localhost';
FLUSH PRIVILEGES;
exitMySQL8.X
sql
create user 'streampark'@'%' identified by 'streampark';
create user 'streampark'@'localhost' identified by 'streampark';
GRANT ALL PRIVILEGES ON *.* TO 'streampark'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'streampark'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit执行/opt/datasophon/DDP/packages目录下streampark.sql创建streampark数据库表。
sql
use streampark;
source /opt/datasophon/DDP/packages/streampark.sql
source /opt/datasophon/DDP/packages/streampark_mysql-schema.sql
source /opt/datasophon/DDP/packages/streampark_mysql-data.sql添加StreamPark。

分配streampark角色

根据实际情况修改配置。

根据实际情况,修改streampark配置。

添加ElasticSearch
点击【添加服务】,选择ES。

分配服务Master角色

根据实际情况修改配置。

根据实际情况,修改ElasticSearch配置。

添加Iceberg
点击【添加服务】,选择Iceberg。选择IcebergClient

根据实际情况修改配置。

安装完成

总览
