DolphinScheduler-3.1.9 资源中心实践

前言

目前DolphinScheduler最新的稳定版本是 3.1.9 ,基于此做些探索,逐渐深化学习路径,以便于加深理解。

3.2.1 是最新的版本。目前的稳定版本是 3.1.9


基础环境:Hadoop3.3, Java 8, Python3, MacOS14.2.1

一、本地伪分布式安装

为什么要搞伪分布式?因为可以更方便的了解各个组件的作用和生效的细节,初学建议用这种。

伪分布式集群的安装参考:
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9/guide/installation/pseudo-cluster

重点说下几个步骤:
1、MySQL 做为数据源需要新建库,然后初始化表信息
主要是修改bin/env/dolphinscheduler_env.sh这里:

# for mysql
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphin319?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
export SPRING_DATASOURCE_USERNAME=root
export SPRING_DATASOURCE_PASSWORD=root

2、将 MySQL 驱动放到 master/worker/api/alert 这些服务的 libs目录下

# 创建库
mysql> CREATE DATABASE dolphin319 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.02 sec)#初始化数据库:
➜  bin sh upgrade-schema.sh

3、本地先启动 zookeeper
-> zkServer.sh start
4、启动伪分布式集群使用 start-all.sh 可能会遇到启动不了的情况,一种情况有可能类似我这种:

/Users/mac/server/dolphin/master-server/bin/start.sh: line 30: /opt/java/openjdk/bin/java: No such file or directory

这种情况说明我的 Java Home环境未配置,或者未生效使用了默认的设置。
在dolphinscheduler_env.sh 中发现的确如此,曾以为本地已经有了 JAVA_HOME就不需要配置了,但事实上还是需要在配置下。

# JAVA_HOME, will use it to start DolphinScheduler server
export JAVA_HOME=${JAVA_HOME:-/opt/java/openjdk} # 改为本地绝对路径

5、最后看到

➜  bin ./start-all.sh
localhost  Begin status master-server......
master-server  [  RUNNING  ]
End status master-server.
localhost  Begin status worker-server......
worker-server  [  RUNNING  ]
End status worker-server.
localhost  Begin status alert-server......
alert-server  [  RUNNING  ]
End status alert-server.
localhost  Begin status api-server......
api-server  [  RUNNING  ]
End status api-server.# 查看 zk注册的节点信息 (多节点的情况下就靠它进行 HA 了)
[zk: localhost:2181(CONNECTED) 0] ls /
[dolphinscheduler, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /dolphinscheduler
[lock, nodes]
[zk: localhost:2181(CONNECTED) 2] ls /dolphinscheduler/nodes
[master, worker]
[zk: localhost:2181(CONNECTED) 3] ls /dolphinscheduler/nodes/worker
[192.168.31.219:1234]
[zk: localhost:2181(CONNECTED) 4] ls /dolphinscheduler/nodes/master
[192.168.31.219:5678]

访问地址:http://localhost:12345/dolphinscheduler/ui/home
账密:admin/dolphinscheduler123

二、开启资源中心

参考:
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9/%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D_menu/%E8%B5%84%E6%BA%90%E4%B8%AD%E5%BF%83_menu

2.1 开启 HDFS 存储

参照官网介绍,伪分布式下若想使用本地文件系统只需要修改三点,如下:

# resource storage type: HDFS, S3, NONE
resource.storage.type=HDFS
data.basedir.path=/Users/mac/server/dolphin/resource
resource.storage.upload.base.path=/dolphinscheduler
resource.hdfs.fs.defaultFS=file:///

但不幸的是,它还是会按照 HDFS 的路径去寻找,未能生效,如下:

[ERROR] 2024-07-06 09:29:37.846 +0000 org.apache.dolphinscheduler.api.exceptions.ApiExceptionHandler:[41] - ServiceException:
org.apache.dolphinscheduler.api.exceptions.ServiceException: 服务端异常: copy /Users/mac/server/dolphin/resource/mac/resources/d6f3a291-6b78-452d-a2bf-821c690453a4 to hdfs /dolphinscheduler/mac/resources/hi.sh fail

采用 HDFS 存储路径如下:

data.basedir.path=/Users/mac/server/dolphin/resource
resource.hdfs.root.user=hdfs
resource.storage.upload.base.path=/dolphinscheduler
resource.hdfs.fs.defaultFS=hdfs://localhost:9000

重新启动集群:
创建一个 shell 测试脚本: hi.sh
在这里插入图片描述
未启动之前,我们点击上传之后便会报错连接被拒绝,这符合预期,毕竟回家没有启动 hadoop, 启动之后在次点击保存之后就正常了,如上面所示。也可以看下文件系统:
在这里插入图片描述

2.2 测试资源中心文件使用Shell节点任务

资源中心中直接创建所需文件:
在这里插入图片描述

创建 shell节点类型任务:
在这里插入图片描述
上线-》运行 -》查看任务实例
在这里插入图片描述

查看日志:
在这里插入图片描述
结果符合预期。

2.3 测试资源中心文件使用Python节点任务

  1. 在资源文件中定义 python文件
    在这里插入图片描述

  2. 使用 python 节点引入对于的模块

# 导入资源中心的 Python 文件
from date_utils import get_curr_date# 调用方法并打印结果
print(get_curr_date())

在这里我们知道本地执行的 Python 文件和资源定义的文件不在一起,因此无法直接引入,那这里就会出现导入模块的报错,如下:

[INFO] 2024-07-06 10:38:02.102 +0000 -  -> Traceback (most recent call last):File "/Users/mac/server/dolphin/resource/exec/process/mac/14182270597920/14186479827104_1/4/4/py_4_4.py", line 5, in <module>from date_utils import get_curr_dateModuleNotFoundError: No module named 'date_utils'

搜索相关资料说可以通过如下方式解决:

import sys
import os# 获取当前脚本所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))# 将资源中心的路径添加到 Python 模块搜索路径
resource_center_dir = os.path.join(current_dir, '../resources')
sys.path.append(resource_center_dir)# 调用模块,执行逻辑...

我在尝试过后发现并未成功,不过既然知道了文件存储在了 HDFS 上面那么每次执行的时候先下载到本地然后在使用这种方式执行也未尝不可,只不过这种方式貌似失去了资源中心的作用。

是否有人知道如何解决这个问题呢?欢迎和我讨论~


总结

本文主要讲本地基础环境伪分布式简单搭建以及遇到的问题,并且以开启资源中心为例列举了 shell 脚本和 Python 脚本的示例,其中 shell 脚本没有问题,主要问题点在 Python,目前来看使用 python任务引入资源中心的 Python 无法成功,后续持续跟进研究,如果你有好的方案烦请和我交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记——动态路由——IS-IS中间系统到中间系统(开销)

四、IS-IS开销 1、IS-IS 开销简介 在IS-IS协议刚面世时&#xff0c;互联网网络结构还非常简单&#xff0c;因此IS-IS早期的版本中只使用了6bit来描述链路开销&#xff0c;链路开销的取值范围是1-63。一条路由的开销范围只有10bit&#xff0c;取值范围是0-1023。 随着计…

前端实现无缝自动滚动动画

1. 前言: 前端使用HTMLCSS实现一个无缝滚动的列表效果 示例图: 2. 源码 html部分源码: <!--* Author: wangZhiyu <w3209605851163.com>* Date: 2024-07-05 23:33:20* LastEditTime: 2024-07-05 23:49:09* LastEditors: wangZhiyu <w3209605851163.com>* File…

【ubuntu】安装(升级)显卡驱动,黑屏|双屏无法使用问题解决方法

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 ubuntu 安装(升级)显卡驱动&#xff0c;黑屏|双屏无法使用问题解决方法 由于项目需要&#xff0c;对显卡驱动进行升级。升级完就黑屏。。。。&#xff0…

Fast R-CNN(论文阅读)

论文名&#xff1a;Fast R-CNN 论文作者&#xff1a;Ross Girshick 期刊/会议名&#xff1a;ICCV 2015 发表时间&#xff1a;2015-9 ​论文地址&#xff1a;https://arxiv.org/pdf/1504.08083 源码&#xff1a;https://github.com/rbgirshick/fast-rcnn 摘要 这篇论文提出了一…

BAT-致敬精简

什么是bat bat是windows的批处理程序&#xff0c;可以批量完成一些操作&#xff0c;方便快速。 往往我们可以出通过 winR键来打开指令窗口&#xff0c;这里输入的就是bat指令 这里就是bat界面 节约时间就是珍爱生命--你能想象以下2分钟的操作&#xff0c;bat只需要1秒钟 我…

考虑数据库粒度的设计-提升效率

目录 概要 场景 设计思路 小结 概要 公开的资料显示&#xff0c;数据库粒度是&#xff1a;“在数据库领域&#xff0c;特别是数据仓库的设计中&#xff0c;粒度是一个核心概念&#xff0c;它直接影响到数据分析的准确性和存储效率。粒度的设定涉及到数据的详细程度和精度&…

【JVM基础篇】Java的四种垃圾回收算法介绍

文章目录 垃圾回收算法垃圾回收算法的历史和分类垃圾回收算法的评价标准标记清除算法优缺点 复制算法优缺点 标记整理算法&#xff08;标记压缩算法&#xff09;优缺点 分代垃圾回收算法&#xff08;常用&#xff09;JVM参数设置使用Arthas查看内存分区垃圾回收执行流程分代GC算…

【SpringBoot】IDEA查看spring bean的依赖关系

前因&#xff1a;在研究springcloud config组件时&#xff0c;我发现config-server包下的EnvironmentController可以响应客户端的请求&#xff0c;但EnvironmentController并不在启动类所在的包路径下&#xff0c;所以我推测它是作为某个Bean方法在生效&#xff0c;寻找bean的依…

DAY1: 实习前期准备

文章目录 VS Code安装的插件C/CCMakeGitHub CopilotRemote-SSH收获 VS Code 下载链接&#xff1a;https://code.visualstudio.com 安装的插件 C/C 是什么&#xff1a;C/C IntelliSense, debugging, and code browsing. 为什么&#xff1a;初步了解如何在VS Code里使用C输出…

关于小爱同学自定义指令执行

1.前言 之前买了小爱同学音响&#xff0c;一直想让其让我的生活变得更智能&#xff0c;编写一些程序来完成一些自动化任务&#xff0c;但是经过搜索发现&#xff0c;官方开发者平台不能用了&#xff0c;寻找api阶段浪费了我很长时间。最后在github 开源项目发现了俩个比较关键…

13.SQL注入-宽字节

SQL注入-宽字节 含义&#xff1a; MySQL是用的PHP语言&#xff0c;然后PHP有addslashes()等函数&#xff0c;这类函数会自动过滤 ’ ‘’ null 等这些敏感字符&#xff0c;将它们转义成’ ‘’ \null&#xff1b;然后宽字节字符集比如GBK它会自动把两个字节的字符识别为一个汉…

内容营销专家刘鑫炜:网站排名需考虑哪些SEO优化技巧?

网站排名的SEO优化技巧包括&#xff1a; 1. 关键词研究&#xff1a;了解目标受众的搜索关键词&#xff0c;将这些关键词合理地应用在网站的标题、描述、正文和标签中&#xff0c;有助于提高网站排名。 2. 内容优化&#xff1a;创建高质量、有价值的内容&#xff0c;可以吸引搜…

Qt源码解析之QObject

省去大部分virtual和public方法后&#xff0c;Qobject主要剩下以下成员&#xff1a; //qobject.h class Q_CORE_EXPORT Qobject{Q_OBJECTQ_PROPERTY(QString objectName READ objectName WRITE setObjectName NOTIFY objectNameChanged)Q_DECLARE_PRIVATE(QObject) public:Q_I…

STM32-OC输出比较和PWM

本内容基于江协科技STM32视频内容&#xff0c;整理而得。 文章目录 1. OC输出比较和PWM1.1 OC输出比较1.2 PWM&#xff08;脉冲宽度调制&#xff09;1.3 输出比较通道&#xff08;高级&#xff09;1.4 输出比较通道&#xff08;通用&#xff09;1.5 输出比较模式1.6 PWM基本结…

MATLAB常用语句总结7

MATLAB总结7&#xff1a;常见错误归纳 本篇专门用于记录一些应试技巧 文章目录 MATLAB总结7&#xff1a;常见错误归纳前言一、一些小定义和小技巧二、蒙塔卡罗求解方法1.函数的定义2.函数引用3.代码量较少的蒙塔卡罗 三、函数引用与多变量四、矩阵引用五、非线性函数&#xff…

14-39 剑和诗人13 - 顶级大模型测试分析和建议

​​​​​ 随着对高级语言功能的需求不断飙升&#xff0c;市场上涌现出大量语言模型&#xff0c;每种模型都拥有独特的优势和功能。然而&#xff0c;驾驭这个错综复杂的生态系统可能是一项艰巨的任务&#xff0c;开发人员和研究人员经常面临选择最适合其特定需求的模型的挑战。…

哈弗架构和冯诺伊曼架构

文章目录 1. 计算机体系结构 2. 哈弗架构&#xff08;Harvard Architecture&#xff09; 3. 改进的哈弗架构 4. 冯诺伊曼架构&#xff08;Von Neumann Architecture&#xff09; 5. 结构对比 1. 计算机体系结构 计算机体系结构是指计算机系统的组织和实现方式&#xff0c…

Python | Leetcode Python题解之第220题存在重复元素III

题目&#xff1a; 题解&#xff1a; class Solution(object):def containsNearbyAlmostDuplicate(self, nums, k, t):from sortedcontainers import SortedSetst SortedSet()left, right 0, 0res 0while right < len(nums):if right - left > k:st.remove(nums[left]…

68.WEB渗透测试-信息收集- WAF、框架组件识别(8)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;67.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;7&#xff09; 右边这些是waf的…

Mean teacher are better role models-论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/pdf/1703.01780 3.数据集地址 CIFAR-10 https://www.cs.utoronto.ca/~kriz/cifar.html 论文摘要的翻译 最近提出的Temporal Ensembling方法在几个半监督学习基准中取得了最先进的结果。它维护每个训练样本的标签…