大数据之—dolphinscheduler海豚调度

发布时间 2023-03-23 16:13:02作者: 黄河大道东

前言

本文参考:https://blog.csdn.net/zhengzaifeidelushang/article/details/127841043

参考:https://blog.csdn.net/shuyv/article/details/128847853

参考:https://blog.csdn.net/Keyuchen_01/article/details/128653687

海豚调度官网:https://dolphinscheduler.apache.org/zh-cn

集群部署目的是在多台机器部署 DolphinScheduler 服务,用于运行大量任务情况。

集群部署(Cluster)使用的脚本和配置文件与伪集群部署中的配置一样,所以所需要的步骤也与伪集群部署大致一样。区别就是伪集群部署针对的是一台机器,而集群部署(Cluster)需要针对多台机器,且两者“修改相关配置”步骤区别较大

准备工作

  • JDK:下载JDK (1.8+),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。

  • 二进制包:在下载页面下载 DolphinScheduler 二进制包:https://dlcdn.apache.org/dolphinscheduler/3.1.4/apache-dolphinscheduler-3.1.4-bin.tar.gz

  • 数据库:PostgreSQL (8.2.15+) 或者 MySQL (5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16

  • 注册中心:ZooKeeper (3.4.6+),下载地址

  • 进程树分析

    • macOS安装pstree
    • Fedora/Red/Hat/CentOS/Ubuntu/Debian安装psmisc:yum install psmisc -y

注意: DolphinScheduler 本身不依赖 Hadoop、Hive、Spark,但如果你运行的任务需要依赖他们,就需要有对应的环境支持

准备 DolphinScheduler 启动环境

  • (本机登录本机) 配置用户免密及权限

创建部署用户,并且一定要配置 sudo 免密。以创建 hdp 用户为例

# 创建用户需使用 root 登录
useradd hdp

# 添加密码
echo "hdp" | passwd --stdin hdp

# 配置 sudo 免密
sed -i '$ahdp  ALL=(ALL)  NOPASSWD:ALL' /etc/sudoers
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers
  • 配置机器SSH免密登陆

  • 启动zookeeper

安装 DolphinScheduler

mkdir -p /opt/dolphinScheduler  && cd /opt/dolphinScheduler
# 上传
# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
sudo chown -R hdp:hdp /opt/dolphinScheduler
# 解压
tar zxvf apache-dolphinscheduler-3.1.4-bin.tar.gz

配置环境变量:vim /etc/profile.d/my_env.sh

# HADOOP_CONF_DIR
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

# DolphinScheduler HOME
export D_S_HOME=/opt/dolphinScheduler/apache-dolphinscheduler-3.1.4-bin
export PATH=$PATH:$D_S_HOME/bin

同步配置文件:xsync /etc/profile.d/my_env.sh

刷新环境变量:source /etc/profile

修改配置

  • 修改集群安装配置:vim $D_S_HOME/bin/env/install_env.sh
# ---------------------------------------------------------
# INSTALL MACHINE
# ---------------------------------------------------------
# 需要配置master、worker、API server,所在服务器的IP均为机器IP或者localhost
# 如果是配置hostname的话,需要保证机器间可以通过hostname相互链接
# 如下图所示,部署 DolphinScheduler 机器的 hostname 为 ds1,ds2,ds3,ds4,ds5,其中 ds1,ds2 安装 master 服务,ds3,ds4,ds5安装 worker 服务,alert server安装在ds4中,api server 安装在ds5中
ips="node1,node2,node3"
sshPort="22"
masters="node1"
workers="node2:default,node3:default"
alertServer="node2"
apiServers="node1"
installPath=$D_S_HOME
deployUser="hdp"
  • 修改 DolphinScheduler 使用的环境变量:vim $D_S_HOME/bin/env/dolphinscheduler_env.sh
# JAVA_HOME, will use it to start DolphinScheduler server
export JAVA_HOME=${JAVA_HOME:-/opt/java/openjdk}

# Database related configuration, set database type, username and password
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://node1:3306/dolphinscheduler"
export SPRING_DATASOURCE_USERNAME="root"
export SPRING_DATASOURCE_PASSWORD="root"

# DolphinScheduler server related configuration
export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}
export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}

# Registry center configuration, determines the type and link of the registry center
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-node3:2181}

# Tasks related configurations, need to change the configuration if you use the related tasks.
export HADOOP_HOME=${HADOOP_HOME:-/opt/soft/hadoop}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/hadoop/module/hadoop-3.1.3/etc/hadoop}
export SPARK_HOME1=${SPARK_HOME1:-/opt/soft/spark1}
export SPARK_HOME2=${SPARK_HOME2:-/opt/soft/spark2}
export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}
export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive}
export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}
export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
export SEATUNNEL_HOME=${SEATUNNEL_HOME:-/opt/soft/seatunnel}
export CHUNJUN_HOME=${CHUNJUN_HOME:-/opt/soft/chunjun}

export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$SEATUNNEL_HOME/bin:$CHUNJUN_HOME/bin:$PATH
  • 在主节点配置好后执行)执行安装脚本
# 根据./bin/env/install_env.sh中的集群描述,使用scp在其它节点安装各个服务
$D_S_HOME/bin/install.sh

注意1:: 每个服务在路径 /conf/dolphinscheduler_env.sh 中都有 dolphinscheduler_env.sh 文件,这是可以为微 服务需求提供便利。意味着您可以基于不同的环境变量来启动各个服务,只需要在对应服务中配置 /conf/dolphinscheduler_env.sh 然后通过 /bin/start.sh 命令启动即可。但是如果您使用命令 /bin/dolphinscheduler-daemon.sh start 启动服务器,它将会用文件 bin/env/dolphinscheduler_env.sh 覆盖 /conf/dolphinscheduler_env.sh 然后启动服务,目的是为了减少用户修改配置的成本.

  • 初始化数据库脚本

在mysql数据库dolphinscheduler中执行脚本文件$D_S_HOME/tools/sql/sql/dolphinscheduler_mysql.sql

  • 使用mysql需要手动添加jdbc的库

问题处理:Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver

cp mysql-connector-java-8.0.15.jar $D_S_HOME/api-server/libs/mysql-connector-java-8.0.15.jar
cp mysql-connector-java-8.0.15.jar $D_S_HOME/alert-server/libs/mysql-connector-java-8.0.15.jar
cp mysql-connector-java-8.0.15.jar $D_S_HOME/master-server/libs/mysql-connector-java-8.0.15.jar
cp mysql-connector-java-8.0.15.jar $D_S_HOME/worker-server/libs/mysql-connector-java-8.0.15.jar

集群启停

# 启动集群所有服务
$D_S_HOME/bin/start-all.sh

# 停止集群所有服务
$D_S_HOME/bin/stop-all.sh

# 查看集群运行状态
$D_S_HOME/bin/status-all.sh

# 启停 Master
$D_S_HOME/bin/dolphinscheduler-daemon.sh stop master-server
$D_S_HOME/bin/dolphinscheduler-daemon.sh start master-server

# 启停 Worker
$D_S_HOME/bin/dolphinscheduler-daemon.sh start worker-server
$D_S_HOME/bin/dolphinscheduler-daemon.sh stop worker-server

# 启停 Api
$D_S_HOME/bin/dolphinscheduler-daemon.sh start api-server
$D_S_HOME/bin/dolphinscheduler-daemon.sh stop api-server

# 启停 Alert
$D_S_HOME/bin/dolphinscheduler-daemon.sh start alert-server
$D_S_HOME/bin/dolphinscheduler-daemon.sh stop alert-server

测试访问

http://node1:12345/dolphinscheduler/ui/login

admin/dolphinscheduler123