海豚调度 Dolphinscheduler-3.2.0/DolphinScheduler-3.1.9 离线部署 伪集群模式

2024-01-03 13:36

本文主要是介绍海豚调度 Dolphinscheduler-3.2.0/DolphinScheduler-3.1.9 离线部署 伪集群模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Dolphinscheduler-3.2.0(离线)伪集群模式

一、依赖(前置准备工作)

1.JDK:版本要求 JDK(1.8+),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到PATH 环境变量中;
2.数据库:PostgreSQL(8.2.15+) 或者MySQL(5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16;
3.注册中心:ZooKeeper(3.8.0+);
4.进程树分析:
(1).macOS 安装 pstree;
(2).Fedora/Red/Hat/CentOS/Ubuntu 安装psmisc;
注意:Dolphinscheduler 本身并不依赖 Hadoop、Hive、Spark 等,但若运行的任务需要依赖,就需要有对应的环境支持.
5.下载需要安装的二进制包(对应版本)

二、准备 DolphinScheduler 启动环境(官网教程解读)

1.配置用户免密及权限

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

# 创建用户需使用 root 登录
useradd dolphinscheduler
# 添加密码
echo "dolphinscheduler" | passwd --stdin dolphinscheduler
# 配置 sudo 免密
sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers
# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
chmod -R 755 apache-dolphinscheduler-*-bin

注意:
(1).因为任务执行服务是以 sudo -u {linux-user} 切换不同 linux 用户的方式来实现多用户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学者弱不理解,可暂时忽略这一点;
(2).若发现 /etc/sudoers 文件中有 “Defaults requirett” 这行,也请注释掉(##)

2.配置机器 SSH 免密登录

由于安装的时候需要向不同机器发送资源,so 要求各台机器间能实现 SSH 免密登录;配置步骤:

# 先切到 dolphinscheduler 用户
su dolphinscheduler
# 执行下面命令行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

注意:
配置完成后,可以通过运行命令 ‘ssh localhost’ 判断是否成功,若不需要输入密码就能 ssh 登录则证明成功;

3.启动 zookeeper

进入 zookeeper 的安装目录,将 zoo_sample.cfg 配置文件复制到 conf/zoo.cfg,并将 conf/zoo.cfg 中 dataDir 中的值改成 dataDir=./tmp/zookeeper

# 启动 zookeeper (root启)
./bin/zkServer.sh start

4.修改相关配置

完成基础环境的准备后,需要根据你的机器环境修改配置文件。配置文件可在目录 bin/env/ 中找到,他们分别是 install_env.sh 和 dolphinscheduler_dnv.sh。

(1).修改 install_env.sh 文件

文件 install_env.sh 描述了那些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。您可以在文件 bin/env/install_env.sh 中找到对应参数。使用 ‘vi bin/env/install_env.sh’ 或者 ‘vim bin/env/install_env.sh’即可打开编辑此文件。

# ---------------------------------------------------------
# INSTALL MACHINE
# ---------------------------------------------------------
# Due to the master, worker, and API server being deployed on a single node, the IP of the server is the machine IP or localhost
ips="localhost"
sshPort="22"
masters="localhost"
workers="localhost:default"
alertServer="localhost"
apiServers="localhost"
# DolphinScheduler installation path, it will auto-create if not exists
installPath=~/dolphinscheduler
# Deploy user, use the user you create in section **Configure machine SSH password-free login**
deployUser="dolphinscheduler"

(2).修改 dolphinscheduler_env.sh 文件

文件 ./bin/env/dolphinscheduler_env.sh 描述了下列配置:
– DolphinScheduler 的数据库配置,详情见[初始化数据库]
– 一些任务类型外部依赖路径或库文件,如 JAVA_HOME 和 SPARK_HOME 都是在这里定义的
若您不适用某些任务类型,可忽略任务外部依赖项,但您必须根据您的环境更改 JAVA_HOME、注册中心和数据库相关等等配置。

# JAVA_HOME, will use it to start DolphinScheduler server
export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
# Database related configuration, set database type, username and password
export DATABASE=${DATABASE:-postgresql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
export SPRING_DATASOURCE_USERNAME={user}
export SPRING_DATASOURCE_PASSWORD={password}
# 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:-localhost: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/soft/hadoop/etc/hadoop}
export SPARK_HOME=${SPARK_HOME:-/opt/soft/spark}
export PYTHON_LAUNCHER=${PYTHON_LAUNCHER:-/opt/soft/python}
export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive}
export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}
export DATAX_LAUNCHER=${DATAX_LAUNCHER:-/opt/soft/datax/bin/python3}
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_LAUNCHER:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_LAUNCHER:$PATH

5.初始化数据库

请参考[数据源配置]伪分布式/分布式安装初始化数据库 创建并初始化数据库

提示:

初始化数据库简单来说于此处就是在 mysql 数据库的 dolphinscheduler 数据库中建一些存放元数据的表(tools中mysql下后缀为ddl.sql的那个sql脚本),其次就是插入一下基础数据比如登录验证用的 admin用户的数据等等(tools中mysql下后缀为dml.sql的那个sql脚本)
这里可以自己在mysql中创建 dolphinscheduler 用户,建 dolphinscheduler 库,然后调用对应的两个脚本(初始化后有88个表,记得检查下别缺失了)

6.启动 DolphinScheduler

使用上面创建的部署用户(dolphinscheduler)运行以下命令完成部署,部署后的运行日志将存放在 logs 文件夹内(各个server 服务节点下都有 logs 文件夹,大家可以到其中找到对应的 server 报错日志文件,例如实时查看 alert-server的 logs 文件命令行:’tail -400f dolphinscheduler/alert-server/logs/alert-server-pt23amlupz5x.out’)

bash ./bin/install.sh

注意:
第一次部署的话,可能出现 5 次 sh: bin/dolphinscheduler-daemon.sh: No such file or directory 相关信息,此为非重要信息直接忽略即可

6.启停服务

# 一键停止集群所有服务
bash ./bin/stop-all.sh
# 一键开启集群所有服务
bash ./bin/start-all.sh
# 启停 Master
bash ./bin/dolphinscheduler-daemon.sh stop master-server
bash ./bin/dolphinscheduler-daemon.sh start master-server
# 启停 Worker
bash ./bin/dolphinscheduler-daemon.sh start worker-server
bash ./bin/dolphinscheduler-daemon.sh stop worker-server
# 启停 Api
bash ./bin/dolphinscheduler-daemon.sh start api-server
bash ./bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Alert
bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server

7.登录 DolphinScheduler

浏览器访问地址 ‘http://localhost:12345/dolphinscheduler/ui’ 即可登录系统 UI。默认的用户名和密码是 ’admin/dolphinscheduler123’

注意:

这是本地部署伪集群模式,若远程在服务器上部署则此处地址中的 ’localhost’ 需要换成服务器的 ip,需保证连接的畅通,例如服务器 ip 是12.34.56.78 ,本地 cmd 命令行到服务器 12345 端口号连通检查命令行:’telnet 12.34.56.78 12345’(执行此命令前提: 12345 端口号处于被监听状态)

8.快速配置文件&启动

(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 然后启动服务,目的是为了减少用户修改配置的成本.
(2).服务用途请具体参见 <<系统架构>> 小节。Python gateway service 默认与 api-server 一起启动,若您不想启动 Python gateway service 请通过更改 api-server 配置文件 api-server/conf/application.yaml 中的 python-gateway.enabled : false 来禁用它。

三、配置参数

1.外部依赖路径(./bin/env/dolphinscheduler_env.sh)

略(由于网上有不少,就不做赘述了,有疑问可以放评论区大家一起讨论)

2.(bin/env/install_env.sh)

略(由于网上有不少,就不做赘述了,有疑问可以放评论区大家一起讨论)

四、问题点及解决方案:

1.Q:初始化数据库失败!?

A:

复制对应的sql 脚本路径,直接登录 mysql 调用脚本建表,和插入admin的相关数据(文件路径一般在:tools/sql 下面,我们用的mysql数据库,所以就直接找mysql的数据库就好)

2.Q:初始化成功后一直启动失败!?

A:

经过找日志看日志分析日志上网查等等一系列动作搞下来发现:版本兼容有要求!!即:
安装最新版的dolphinscheduler-3.2.0 需要配套最新版本的zookeeper-3.8.0
所以重装 zookeeper !

3.Q:路径、IP 和端口等参数怎么确保不出错?

A:

最简单管用的方式就是打开对应的依赖配置文件(如果怕记错的话),对照着填,其实也不多,就几个端口:zookeeper:2181、mysql:3306…(具体看配置)

4.Q:网络遇到过什么比较典型的问题吗?

A:

请确保网络通畅!!!
若是非本地部署,远程部署,可能需要开网策,确保源 IP 到 ’服务器:端口’畅通
检查端口号(telnet命令&'ss -lnt’命令)

5.Q:一个是工作流上线运行后没有实例的问题?

A:

经过看官网视频教程,加上询问大拿,才得知 3.2.0 版本并不成熟且不建议投产,目前最成熟的是 3.1.9 版本,故而需要重装 3.1.9 版本.

6.Q:没有找到日志信息,并且在bin中也没看见log相关的server,请问是版本变动吗?

A:

因为 3.2.0 版本此时尚不成熟,所以只能重装 3.1.9 版本.
提示:3.1.9 中将log分拆到了不同的服务中

7.Q:关于打印出来的日志时间不对的问题怎么解决?

A:

更改配置文件’./bin/env/dolphinscheduler_env.sh’中的参数’SPRING_JACKSON_TIME_ZONE’为:‘GMV+8’即可(可由文件’./tools/bin/upgrade-schema.sh’定位到此变量)

8.Q:重装 DolphinScheduler-3.1.9 有什么需要注意的吗?

A:

简单来说还是那几个点:
1.数据库的初始化大概率需要创建 mysql 的 dolphinscheduler 用户 和 dolphinscheduler 库后登录 mysql 数据库,直接用 source + path/to/sql.sql 命令执行 sql 脚本进行数据库初始化;
2.在执行 bin/install.sh 后,还需到安装路径中分别更改各个 server 中的配置文件(例如: alert-server/conf/application.yaml),比较暴力的方式是将所有数据库驱动和数据库 ip & 端口 都改成自己对应的参数.(比如我是mysql,就把mysql和postgretsql的驱动,ip&端口之类的参数全部换成mysql的参数)
3.mysql的jar包需要复制到各个服务下的 libs 文件夹中
4.待续…

这篇关于海豚调度 Dolphinscheduler-3.2.0/DolphinScheduler-3.1.9 离线部署 伪集群模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565860

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序