DolphinScheduler-3.1.9 资源中心实践

news2025/2/26 0:37:03

前言

目前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_date
	ModuleNotFoundError: 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.coloradmin.cn/o/1901843.html

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

相关文章

当需要对多个表进行联合更新操作时,怎样确保数据的一致性?

文章目录 一、问题分析二、解决方案三、示例代码&#xff08;以 MySQL 为例&#xff09;四、加锁机制示例五、测试和验证六、总结 在数据库管理中&#xff0c;经常会遇到需要对多个表进行联合更新的情况。这种操作带来了一定的复杂性&#xff0c;因为要确保在整个更新过程中数据…

Linux多进程和多线程(六)进程间通信-共享内存

多进程(六) 共享内存共享内存的创建 示例: 共享内存删除 共享内存映射 共享内存映射的创建解除共享内存映射示例:写入和读取共享内存中的数据 写入: ### 读取: 大致操作流程: 多进程(六) 共享内存 共享内存是将分配的物理空间直接映射到进程的⽤户虚拟地址空间中, 减少数据在…

C++笔试强训2

文章目录 一、选择题二、编程题 一、选择题 和笔试强训1的知识点考的一样&#xff0c;因为输出的是double类型所以后缀为f,m.n对其30个字符所以m是30&#xff0c;精度是4所以n是4&#xff0c;不加符号默认是右对齐&#xff0c;左对齐的话前面加-号&#xff0c;所以答案是-30.4f…

人工智能开发中的数据隐私

人工智能开发中的数据隐私对于建立用户信任和遵守严格法规至关重要。保护敏感信息可确保合乎道德的人工智能使用并防止有害的数据泄露。 为什么在人工智能开发中优先考虑数据隐私至关重要 人工智能的迅猛发展开启了一个前所未有的技术进步时代&#xff0c;彻底改变了各行各业&…

价格预言机的使用总结(一):Chainlink篇

文章首发于公众号&#xff1a;Keegan小钢 前言 价格预言机已经成为了 DeFi 中不可获取的基础设施&#xff0c;很多 DeFi 应用都需要从价格预言机来获取稳定可信的价格数据&#xff0c;包括借贷协议 Compound、AAVE、Liquity &#xff0c;也包括衍生品交易所 dYdX、PERP 等等。…

STL—容器—string类【对其结构和使用的了解】【对oj相关练习的训练】

STL—容器—string类 其实string类准确来说并不是容器&#xff0c;因为他出现的时间比STL要早&#xff0c;但是也可以说是容器吧。 1.为什么要学习string类&#xff1f; 1.1C语言当中的字符串 C语言中&#xff0c;字符串是以’\0’结尾的一些字符的集合&#xff0c;为了操作…

ROS——坐标系管理、监听与广播、常用可视化工具

坐标系管理 TF功能包 小海龟追踪实验 ros版本(20.04)的tf安装命令: sudo apt-get install ros-noetic-turtle-tf 解决因python版本出现的无法生成跟随海龟&#xff1a; sudo ln -s /usr/bin/python3 /usr/bin/python ( -s 软链接,符号链接) ln命令&#xff08;英文全拼&#…

【C++】B树及其实现

写目录 一、B树的基本概念1.引入2.B树的概念 二、B树的实现1.B树的定义2.B树的查找3.B树的插入操作4.B树的删除5.B树的遍历6.B树的高度7.整体代码 三、B树和B*树1.B树2.B*树3.总结 一、B树的基本概念 1.引入 我们已经学习过二叉排序树、AVL树和红黑树三种树形查找结构&#x…

数据库7.4

第二次作业 1.登陆数据库 2.创建数据库zoo 3.修改数据库zoo字符集为gbk 4.选择当前数据库为zoo 5.查看创建数据库zoo信息 6.删除数据库zoo C:\Windows\System32>mysql -uroot -p20040830Nmx mysql> create database zoo; alter database zoo character set gbk; mys…

InspireFace-商用级的跨平台开源人脸分析SDK

InspireFace-商用级的跨平台开源人脸分析SDK InspireFaceSDK是由insightface开发的⼀款⼈脸识别软件开发⼯具包&#xff08;SDK&#xff09;。它提供了⼀系列功能&#xff0c;可以满⾜各种应⽤场景下的⼈脸识别需求&#xff0c;包括但不限于闸机、⼈脸⻔禁、⼈脸验证等。 该S…

【C++/STL】优先级队列的介绍与模拟实现仿函数

✨ 万物与我皆是自由诗 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1…

非对称加密算法原理与应用2——RSA私钥加密文件

作者:私语茶馆 1.相关章节 (1)非对称加密算法原理与应用1——秘钥的生成-CSDN博客 第一章节讲述的是创建秘钥对,并将公钥和私钥导出为文件格式存储。 本章节继续讲如何利用私钥加密内容,包括从密钥库或文件中读取私钥,并用RSA算法加密文件和String。 2.私钥加密的概述…

VSCode设置好看清晰的字体!中文用鸿蒙,英文用Jetbrains Mono

一、中文字体——HarmonyOS Sans SC 1、下载字体 官网地址&#xff1a;https://developer.huawei.com/consumer/cn/design/resource/ 直接下载&#xff1a;https://communityfile-drcn.op.dbankcloud.cn/FileServer/getFile/cmtyPub/011/111/111/0000000000011111111.20230517…

[学习笔记]SQL学习笔记(连载中。。。)

学习视频&#xff1a;【数据库】SQL 3小时快速入门 #数据库教程 #SQL教程 #MySQL教程 #database#Python连接数据库 目录 1.SQL的基础知识1.1.表(table)和键(key)1.2.外键、联合主键 2.MySQL安装&#xff08;略&#xff0c;请自行参考视频&#xff09;3.基本的MySQL语法3.1.规…

深度学习模型加密python版本

支持加密的模型: # torch、torch script、onnx、tensorrt 、torch2trt、tensorflow、tensorflow2tensorrt、paddlepaddle、paddle2tensorrt 深度学习推理模型通常以文件的形式进行保存&#xff0c;相应的推理引擎通过读取模型文件并反序列化即可进行推理过程. 这样一来&#…

JDK都出到20多了,你还不会使用JDK8的Stream流写代码吗?

目录 前言 Stream流 是什么&#xff1f; 为什么要用Steam流 常见stream流使用案例 映射 map() & 集合 collect() 单字段映射 多字段映射 映射为其他的对象 映射为 Map 去重 distinct() 过滤 filter() Stream流的其他方法 使用Stream流的弊端 前言 当你某天看…

Windows ipconfig命令详解,Windows查看IP地址信息

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 ipconfig 1、基…

【刷题汇总--大数加法、 链表相加(二)、大数乘法】

C日常刷题积累 今日刷题汇总 - day0061、大数加法1.1、题目1.2、思路1.3、程序实现 2、 链表相加(二)2.1、题目2.2、思路2.3、程序实现 3、大数乘法3.1、题目3.2、思路3.3、程序实现 4、题目链接 今日刷题汇总 - day006 1、大数加法 1.1、题目 1.2、思路 读完题,明白大数相加…

react 项目中预防xss攻击的插件 dompurify

一、安装 $ yarn add dompurify $ yarn add --dev types/dompurify 二、使用 import DOMPurify from dompurify;// 1、处理&#xff1a; DOMPurify.sanitize(htmlContent)// 2、之后放进 dangerouslySetInnerHTML dangerouslySetInnerHTML{{ __html: cleanHTML }} 如&#…

【IT领域新生必看】 Java编程中的重载(Overloading):初学者轻松掌握的全方位指南

文章目录 引言什么是方法重载&#xff08;Overloading&#xff09;&#xff1f;方法重载的基本示例 方法重载的规则1. 参数列表必须不同示例&#xff1a; 2. 返回类型可以相同也可以不同示例&#xff1a; 3. 访问修饰符可以相同也可以不同示例&#xff1a; 4. 可以抛出不同的异…