当前位置:网站首页>Dolphinscheduler stand-alone transformation
Dolphinscheduler stand-alone transformation
2022-07-30 12:52:00 【God】
dolphinscheduler
单机化改造
转载请注明出处: https://www.cnblogs.com/funnyzpc/p/16466920.html
前面
其实如果单机的话直接走standalone-server
就可以了,简单又快捷,如果更改的话 后期要升级可能又需要维护个版本才可,所以简单用standalone-server
是最合适的. 好了,就说说我碰到的standalone-server
模式下的一些不便的地方以及解决思路,还有种种折腾
standalone-server
下没有日志
这是个很坑的问题,非常不利于调试,以下这是官方 dolphinscheduler-daemon.sh
的代码片段
elif [ "$command" = "standalone-server" ]; then
CLASS=org.apache.dolphinscheduler.server.StandaloneServer
export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},standalone,${DATABASE_TYPE}"
所以你大概需要改成这样:
elif [ "$command" = "standalone-server" ]; then
LOG_FILE="-Dlogging.config=classpath:logback-master.xml"
CLASS=org.apache.dolphinscheduler.server.StandaloneServer
export SPRING_PROFILES_ACTIVE="${SPRING_PROFILES_ACTIVE},standalone,${DATABASE_TYPE}"
对于ide
调试需要添加此参数:
任务执行用户与系统用户强绑定问题
你是不是系统搭建起来了,也创建worker
账户了 而且也正确创建任务了 发现任务总执行失败呢,这个时候就该注意是不是linux
没有创建对应worker
同名的账户呢/(ㄒoㄒ)/~~ ,我也碰到了,也是看源码才知道的,所以在单机模式下有必要将这个限制去掉哈 (TaskExecuteThread)
这样下来,以后不管什么账户都是可以执行任务了,注意这功能不要在集群模式
下去掉,至少为了安全吧~
standalone-server
下用的是h2
数据库
这是个坑,h2
你可以理解为应用级别的内存表,很显然当你重启应用了数据就全丢失啦,刺不刺激意不意外 对于这个问题,很显然需要将数据库改为mysql
或者postgresql
(主要是目前官方只支持这两款数据库作为项目数据库),需要改的地方大致有两处:
- 一个地方是配置文件,在部署服务器
config
目录下
- 还一个地方是启动类
StandaloneServer
对于配置文件肯定是要改的,至于这个配置文件也可以在启动命令行中指定此配置文件,以上只是个投机取巧的做法,也避免了修改启动脚本
去掉zookeeper
client
及依赖
因为集群环境的复杂性,所以需要任务有zookeeper
,但对于单机也就冗余复杂了,所以就索性去掉之
这里是从MasterServer
开始移除zk
支持,所以代码也是大改,所有关联的全部被我去掉了,太麻烦了...具体你们可以试试
日志可以不用rpc
本来到这一步应该也结束了,跑了几个任务发现没得日志,检查了下才发现代码告诉我他们是用 netty
实现了个rpc
,使用前需要启动日志模块(standalone-server
下默认不会启动此模块),日志用rpc
调用logger
模块来查询日志...,咋办,继续改...
主要也就以上两个地方需要修改,具体的可以参见我的源码(开头有提~)
简化不必要的启动模块
这其实是顺带做的,启动类 StandaloneServer
我去掉了TestingServer
、AlertServer
、PythonGatewayServer
,去掉后启动速度及资源占用有提升 下面是具体代码:
@EnableAutoConfiguration
@ComponentScan
public class StandaloneServer {
public static void main(String[] args) throws Exception {
// final TestingServer server = new TestingServer(true);
// System.setProperty("registry.servers", server.getConnectString());
new SpringApplicationBuilder(
ApiApplicationServer.class,
MasterServer.class,
WorkerServer.class
// AlertServer.class
// PythonGatewayServer.class
).profiles("master", "worker", "api",/* "alert", "python-gateway", "h2",*/ "standalone","postgresql").run(args);
}
}
修改worker
执行主机host
获取方式
这也是个坑,主要是源码基于集群考虑这个问题,单机还是得修改才可:
以上两处只是关键部分,对于此问题修改的地方不止以上两处,具体可以参见我源码哈
边栏推荐
- 概率论的学习和整理--番外4: 关于各种平均数:算术平均数,几何平均数,调和平均数,以及加权平均数和平方平均数 (未完成)
- nodeJs--fs模块
- WinForm枚举容器中的控件,实现控件统一事件处理机制
- 概率论的学习整理3: 概率的相关概念
- 力扣——11.盛最多水的容器
- New:WebKitX ActiveX :::Crack
- 【MySQL系列】-B+树索引和HASH索引有什么区别
- CMake库搜索函数居然不搜索LD_LIBRARY_PATH
- Execution order of select, from, join, on where groupby, etc. in MySQL
- 关于香港高防IP需要关注的几个问题
猜你喜欢
什么是私有云?您应该知道的 6 个优势
IO/multiplexing (select/poll/epoll)
OneNote如何修改已有的笔记本为默认的快速笔记?
和数集团:让智慧城市更智慧,让现实生活更美好
JD.com was brutally killed by middleware on two sides. After 30 days of learning this middleware booklet, it advanced to Ali.
LinkedList与链表
【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测
概率论的学习整理2:如何对随机实验的对象:“事件” 进行计数呢? 四种计数方法,不只是排列组合
忆联:激活数据要素价值潜能,释放SAS SSD创新红利
Decoding Redis' most overlooked high CPU and memory usage issues
随机推荐
常见的云计算安全问题以及如何解决
Mysql索引结构
多表联查的学习
[BJDCTF2020]Cookie is so stable-1|SSTI注入
Vivado安装后添加器件库
IO/multiplexing (select/poll/epoll)
MySQL查询性能优化
打破原则引入SQL,MongoDB到底想要干啥???
MySQL【排序与分页】
[SCTF2019]Flag Shop
爱可可AI前沿推介(7.30)
【MySQL系列】-B+树索引和HASH索引有什么区别
关于香港高防IP需要关注的几个问题
句柄与指针的简单理解
数据湖(十八):Flink与Iceberg整合SQL API操作
EasyNVR更新版本至(V5.3.0)后页面不显示通道配置该如何解决?
int a=8,a=a++,a? int b=8,b=b+1,b?
【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测
Js - 内置对象
int a=8,a=a++,a? int b=8,b=b+1,b?