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

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:

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

A:

有问题大家放评论区一起探讨相互学习!

相关推荐

  1. 海豚调度 Dolphinscheduler-3.2.0 线部署 模式

    2023-12-29 14:46:05       67 阅读
  2. dolphinscheduler独立部署文档(海豚调度

    2023-12-29 14:46:05       9 阅读
  3. DolphinScheduler3.2.1 部署[二]

    2023-12-29 14:46:05       15 阅读
  4. 海豚调度系列之:部署(Cluster)

    2023-12-29 14:46:05       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-29 14:46:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-29 14:46:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-29 14:46:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-29 14:46:05       18 阅读

热门阅读

  1. Vue指令详解

    2023-12-29 14:46:05       35 阅读
  2. 深入了解Spring中的TaskScheduler

    2023-12-29 14:46:05       29 阅读
  3. Unity3D 如何提升游戏运行效率详解

    2023-12-29 14:46:05       35 阅读
  4. leetcode递增子序列、排列

    2023-12-29 14:46:05       29 阅读
  5. React函数组件使用Effect Hook(副作用钩子)

    2023-12-29 14:46:05       32 阅读
  6. react父组件props变化的时候子组件怎么监听?

    2023-12-29 14:46:05       38 阅读
  7. 【linux系统安装部署私有化的GitLab】

    2023-12-29 14:46:05       32 阅读
  8. 解除mobaxterm会话14个限制

    2023-12-29 14:46:05       36 阅读
  9. 【Qt】Qt中通过QProcess::execute()调用echo命令不生效

    2023-12-29 14:46:05       31 阅读
  10. 通配符和正则表达式

    2023-12-29 14:46:05       41 阅读
  11. Vue3 教程

    2023-12-29 14:46:05       36 阅读