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/Shanghai

3 启动服务

启动: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文件夹

修改以下脚本的启动命令使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节点了
 
posted @ 2023-11-08 02:04  冰浅  阅读(1789)  评论(0)    收藏  举报