DataSophon部署记录
DataSophon部署记录
参考教程
本文档环境
CentOS-7 x86
安装DataSophon
配置hosts
-
配置主机名: hostnamectl set-hostname 主机名
- 建议如下配置
- 主机1:hostnamectl set-hostname ddp1
- 主机2:hostnamectl set-hostname ddp2
- 主机3:hostnamectl set-hostname ddp3
- 配置/etc/hosts文件
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.11.132(你自己的主机1) ddp1
192.168.11.133(你自己的主机2) ddp2
192.168.11.131(你自己的主机3) ddp3
配置免密登录
- 生成密钥
ssh-keygen -m PEM -t rsa
- 一直回车到底
- 执行 ssh-copy-id 目标主机,三台都要这样操作,自己和自己也要配置免密登录
ssh-copy-id -i ~/.ssh/id_rsa_for252.pub ddp1
ssh-copy-id -i ~/.ssh/id_rsa_for252.pub ddp2
ssh-copy-id -i ~/.ssh/id_rsa_for252.pub ddp3
关闭mysql的ssl
- 建议mysql版本为5.7.X,并关闭ssl。
vim /etc/my.cnf
- 添加 skip-ssl 表示跳过ssl
- 然后重启mysql,在查看是否关闭了ssl
- 关闭成功
关闭防火墙
- 三台机器用下面的命令永久关闭防火墙
systemctl disable firewalld
创建DataSophon数据库
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;
如果碰到Your password does not satisfy the current policy requirements报错,可以在mysql里面执行
set global validate_password_policy=0;
这条命令降低密码强度等级
在/opt/datasophon目录下创建目录
mkdir -p /opt/datasophon/DDP/packages
后面在部署的时候可能会遇到这个报错
you must have a tty to run sudo
当然可能因环境而异,如果遇到这个问题,可以修改sudoers文件
vim /etc/sudoers

把requiretty注释掉
下载DDP部署包
- 这个部署包是DataSophon对应版本的组件包,与DataSophon自己的配置文件是耦合的,DataSophon没有对组件本身进行更改,只是修改了启动脚本和添加了普罗米修斯监控
- DDP部署包下载地址:
- 链接:https://pan.baidu.com/s/1AA8uUpiV8ejyYavjg2uTAw?pwd=hnn0 提取码:hnn0
- 在/opt/datasophon目录下创建目录
mkdir -p /opt/datasophon/DDP/packages
将下载的部署包上传到/opt/datasophon/DDP/packages目录下,作为项目部署包仓库地址。
补充:也就是说当你执行
ls /opt/datasophon/DDP/packages
命令后,输出是下面这样的
部署DataSophon
1 部署目录介绍
注意:manager是datasophon本体,DDP是部署包
下载路径:https://github.com/datasophon/datasophon/releases
在安装目录下解压datasophon-manager-{version}.tar.gz,解压后可以看到如下安装目录:

bin:启动脚本git
conf :配置文件
lib :项目依赖的jar包
logs:项目日志存放目录
jmx:jmx插件
2 修改配置
修改 conf 目录下的application.yml 配置文件中数据库链接配置:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql:ddp1:3306/datasophon?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: ddp1
driver-class-name: com.mysql.jdbc.Driver
提示
如果使用MySQL8.x,请替换
datasophon-manager-{version}/lib/mysql-connector-java-5.1.34.jar, 同时url连接串种必须有时区参数&serverTimezone=Asia/Shanghai3 启动服务
启动:sh bin/datasophon-api.sh start api
停止:sh bin/datasophon-api.sh stop api
重启:sh bin/datasophon-api.sh restart api
部署成功后,可以进行日志查看,日志统一存放于logs文件夹内:
logs/
├── ddh-api.log
├── ddh-api-error.log
|—— api-{hostname}.out
访问页面
访问前端页面地址,接口ip(自行修改) [http://192.168.xx.xx:8081/ddh,默认用户名和密码为admin/admin123
集成dolphinscheduler(升级到3.1.8)
如果你要集成3.1.1版本,直接一键集成就可以了,不用配置3.1.8安装包
前置准备
开始集成
DataSophon修改datasophopn-manager中conf/meat/DDP-1.2.0/DS/service_ddl.json,修改以下参数
"version": "3.1.8",
"packageName": "dolphinscheduler-3.1.8.tar.gz",
"decompressPackageName": "dolphinscheduler-3.1.8",
下载apache-dolphinscheduler-3.1.8-bin.tar.gz包,在服务器中解压缩
tar -xvf ./apache-dolphinscheduler-3.1.8-bin.tar.gz
修改文件名称,主要是要与上面decompressPackageName一致
mv apache-dolphinscheduler-3.1.8-bin dolphinscheduler-3.1.8
增加jmx文件夹
- 把源码里的这个文件夹放到dolphinscheduler里面
修改以下脚本的启动命令使jmx生效
jmx的端口号需要和service_ddl.json中的jmx端口号一致
- api-server:12356
- master-server:12357
- worker-server:12358
- alert-server:12359
./dolphinscheduler-3.1.8/alert-server/bin/start.sh 注意,这里面是12359
JAVA_OPTS=${JAVA_OPTS:-"-server -javaagent:$BIN_DIR/../../jmx/jmx_prometheus_javaagent-0.16.1.jar=12359:$BIN_DIR/../../jmx/prometheus_config.yml -Duser.timezone=${SPRING_JACKSON_TIME_ZONE} -Xms1g -Xmx1g -Xmn512m -XX:+PrintGCDetails -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof"}
./dolphinscheduler-3.1.8/api-server/bin/start.sh 注意,这里面是12356
JAVA_OPTS=${JAVA_OPTS:-"-server -javaagent:$BIN_DIR/../../jmx/jmx_prometheus_javaagent-0.16.1.jar=12356:$BIN_DIR/../../jmx/prometheus_config.yml -Duser.timezone=${SPRING_JACKSON_TIME_ZONE} -Xms1g -Xmx1g -Xmn512m -XX:+PrintGCDetails -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof"}
./dolphinscheduler-3.1.8/master-server/bin/start.sh 注意,这里面是12357
JAVA_OPTS=${JAVA_OPTS:-"-server -javaagent:$BIN_DIR/../../jmx/jmx_prometheus_javaagent-0.16.1.jar=12357:$BIN_DIR/../../jmx/prometheus_config.yml -Duser.timezone=${SPRING_JACKSON_TIME_ZONE} -Xms1g -Xmx1g -Xmn512m -XX:+PrintGCDetails -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof"}
./dolphinscheduler-3.1.8/worker-server/bin/start.sh 注意,这里面是12358
JAVA_OPTS=${JAVA_OPTS:-"-server -javaagent:$BIN_DIR/../../jmx/jmx_prometheus_javaagent-0.16.1.jar=12358:$BIN_DIR/../../jmx/prometheus_config.yml -Duser.timezone=${SPRING_JACKSON_TIME_ZONE} -Xms1g -Xmx1g -Xmn512m -XX:+PrintGCDetails -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof"}
修改dolphinscheduler-3.1.8/bin/dolphinscheduler-daemon.sh脚本,在几乎使最下方的地方$state == "STOP"的地方增加一行exit 1
(status)
get_server_running_status
if [[ $state == "STOP" ]]; then# font color - red
state="[ \033[1;31m $state \033[0m ]"#增加一行,使得DataSophon执行脚本时可以有返回值判断状态exit 1
else# font color - green
state="[ \033[1;32m $state \033[0m ]"fiecho -e "$command $state";;
(*)
echo $usageexit 1
;;
增加mysql依赖包,将mysql8依赖包放入到每个组件的lib中
我记得是下tar版本,然后把mysql-connector-java-8.0.16.jar放到对应目录就好了
打压缩包
tar -zcvf dolphinscheduler-3.1.8.tar.gz dolphinscheduler-3.1.8
生成md5文件
md5sum dolphinscheduler-3.1.8.tar.gz > dolphinscheduler-3.1.8.tar.gz.md5
将dolphinscheduler-3.1.8.tar.gz和dolphinscheduler-3.1.8.tar.gz.md5上传到DataSophon的安装包中
cp ./dolphinscheduler-3.1.8.tar.gz /opt/datasophon/DDP/packages/
cp ./dolphinscheduler-3.1.8.tar.gz.md5 /opt/datasophon/DDP/packages/
- 现在DataSophon会找到dolphinscheduler-3.1.8的安装包进行分发和安装
- 剩下的部分参考官网教程,按照3.1.1的方式集成dolphinscheduler即可
如果最后成功了你应该会看到这样的界面

其他
排查错误技巧
- 结合datasophon-manager和宕机服务的log进行排查
- 如果datasophon的命令卡死不动,可以重启datasophon服务,就会从新的任务开始执行了
需要三台机器都安装jdk吗
- 第一台机器装jdk就可以,datasophon会分发自己package里面的jdk
HDFS集群启动不成功
- 可以在每台机器上使用jps查看对应节点有没有启动成功
- 进入hadoop的bin目录可以
#启动ZK节点
hdfs zkfc -formatZK
#启动datanode节点
hdfs --daemon start datanode
#启动namenode节点
hdfs --daemon start namenode
两个namenode节点都是standby状态
可以关掉一台的zkfc节点和namenode节点,再重启,这样就会选举出一个active节点了
浙公网安备 33010602011771号