Skip to content

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个节点的大数据集群部署
  • 兼容复杂环境,极少的依赖使其很容易适配各种复杂环境
  • 监控指标全面丰富,基于生产实践展示用户最关心的监控指标
  • 灵活便捷的告警服务,可实现用户自定义告警组和告警指标
  • 可扩展性强,用户可通过配置的方式集成或升级大数据组件

img

架构概览

img

设计思想

为设计出轻量级,高性能,高可扩的,可满足国产化环境要求的大数据集群管理平台。需满足以下设计要求:

(1)一次编译,处处运行,项目部署仅依赖java环境,无其他系统环境依赖。

(2)DataSophon工作端占用资源少,不占用大数据计算节点资源。

(3)可扩展性高,可通过配置的方式集成托管第三方组件。

集成组件

各集成组件均进行过兼容性测试,并稳定运行于300+个节点规模的大数据集群,日处理数据量约4000亿条。在海量数据下,各大数据组件调优成本低,平台默认展示用户关心和需要调优的配置。

序号名称版本描述
1HDFS3.3.3分布式大数据存储
2YARN3.3.3分布式资源调度与管理平台
3ZooKeeper3.5.10分布式协调系统
4FLINK1.15.2实时计算引擎
5DolphoinScheduler3.1.1分布式易扩展的可视化工作流任务调度平台
6StreamPark1.2.3流处理极速开发框架,流批一体&湖仓一体的云原生平台
7Spark3.1.3分布式计算系统
8Hive3.1.0离线数据仓库
9Kafka2.4.1高吞吐量分布式发布订阅消息系统
10Trino367分布式Sql交互式查询引擎
11Doris1.1.5新一代极速全场景MPP数据库
12Hbase2.4.16分布式列式存储数据库
13Ranger2.1.0权限控制框架
14ElasticSearch7.16.2高性能搜索引擎
15Prometheus2.17.2高性能监控指标采集与告警系统
16Grafana9.1.6监控分析与数据可视化套件
17AlertManager0.23.0告警通知管理系统

环境准备

测试服务器

IP主机名
192.168.3.115ddp01
192.168.3.116ddp02
192.168.3.117ddp03
192.168.3.118ddp04

主机名映射

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目录下,作为项目部署包仓库地址

img

部署

解压

在安装目录下解压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插件

img

部署mysql

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

sql
SHOW VARIABLES LIKE '%ssl%';

img

修改配置文件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

img

执行初始化脚本

执行如下数据库脚本:

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;
exit

MySQL8.X

sql
create user 'datasophon'@'%' identified by 'datasophon';
GRANT ALL PRIVILEGES ON *.* TO 'datasophon'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

执行

img

元数据库会自动初始化。

修改配置


修改 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

img

配置系统服务

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
EOF
bash
systemctl daemon-reload
systemctl status datasophon.service
systemctl start datasophon.service
systemctl stop datasophon.service
systemctl restart datasophon.service

创建集群

登录进入系统页面后在集群管理页面创建集群,DataSophon支持多集群管理和授予用户集群管理员权限

img

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

img

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

img

进入 配置集群

img

配置完成后,点击【下一步】,系统开始链接主机并进行主机环境校验。

img

主机环境校验成功后点击【下一步】,主机agent分发步骤将自动分发datasophon-worker组件,并启动WorkerApplicationServer。

img

主机管理Agent分发完成后,点击【下一步】,开始部署服务。 初始化配置集群先选择部署AlertManager,Grafana和Prometheus三个组件。

img

点击【下一步】,分配AlertManager,Grafana和Prometheus服务的master服务角色部署节点,此三个组件需部署在同一台机器上。

img

点击【下一步】,分配AlertManager,Grafana和Prometheus服务的worker与client服务角色部署节点,没有worker和client服务角色的可以跳过之间点击【下一步】。

img

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

img

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

img

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

img

总览

img

添加服务

添加ZooKeeper

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

img

选择 ZK服务

img

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

img

Zk没有worker与client服务角色,直接点击【下一步】跳过。

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

img

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

img

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

img

添加HDFS

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

img

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

img

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

img

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

img

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

img

HDFS-WEB页面

img

添加Yarn服务


部署YARN,其中ResourceManager需部署两台作高可用。如下图:

img

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

img

根据实际情况修改配置。

img

等待安装完成

img

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

img

添加Hbase


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

img

选择RegionServer。

img

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

img

img

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

img

添加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;
exit

MySQL8.X

sql
create user 'hive'@'%' identified by 'hive';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

选择需要安装hiveserver2和metastore角色的节点

img

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

img

根据实际情况修改配置

img

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

img

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

img

添加Spark


选择SPARK3。

img

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

img

根据实际情况配置

img

img

安装完成

img


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

img

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

img

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

img

img

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

image-20240909130533217

添加kafka


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

img

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

img

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

img

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

img

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

img

添加Trino


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

img

选择TrinoCoordinator。

img

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

img

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

img

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

img

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

img

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

img

添加Doris服务


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

img

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

img

分配DorisBE和DorisFEObserver服务角色部署节点。

警告

DorisFE与DorisFEObserver不能部署在同一台机器上,不然会出现端口冲突。

img

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

img

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

img

Doris-web页面。

img

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

文件句柄不生效,我们可以直接添加到启动脚本中

img

如上的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’;

img

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

img

问题:可能存在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;
exit

MySQL8.X

sql
create user 'ranger'@'%' identified by 'ranger';
GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

执行

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

img

选择RangerAdmin部署节点。

img

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

img

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

img

http://192.168.3.116:6080/ admin/admin123

img

**问题:**mysql中解决:Error Code: 1044. Access denied for user ‘root’@‘%’ to database

如何遇到自动安装有问题我们可以尝试进入ranger目录,执行setup.sh脚本尝试报错并寻求解决方式 。

mysql中解决:Error Code: 1044. Access denied for user ‘root’@‘%’ to database_error 1044 (42000): access denied for user ‘root’@-CSDN博客

添加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;
exit

MySQL8.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。

img

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

img

分配Work与Client 角色

img

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

img

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

img

DolphinScheduler配置页面

img

添加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;
exit

MySQL8.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。

img

分配streampark角色

img

根据实际情况修改配置。

img

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

img

添加ElasticSearch


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

img

分配服务Master角色

img

根据实际情况修改配置。

img

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

img

添加Iceberg


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

img

根据实际情况修改配置。

img

安装完成

img

总览

img