在 M1 下搭建 DolphinScheduler 开发调试环境
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用
M1 因为架构的原因,目前还存在比较多的问题,但是开发者都在积极适配。目前全网还没有搜索到任何在 M1 下搭建 DolphinScheduler 开发调试环境的资料,所以就有了这篇博客,希望能给大家提供思路,这篇博客之前是发布在我的 CSDN 上
环境情况
- macOS Big Sur 11.3
- OpenJDK 64-Bit Server VM (Zulu 8.52.0.23-CA-macos-aarch64)
- IntelliJ IDEA Version: 2021.1
- Docker version 20.10.6
- Node v14.17.0
M1 部署时遇到的问题
1. 数据库及其驱动
使用 Docker 安装 mysql-server,简化安装流程,需要配套使用 8.0 的驱动连接
2. Zookeeper
使用 Docker 部署,简化安装流程
3. Node
推荐使用 Node v14.17.0
v16.2.0 安装依赖时会提示:“node-sass: Command failed ” 的错误
按照官网指导,使用下面的命令单独安装 node-sass 依赖还是会有问题
npm install node-sass --unsafe-perm # 单独安装node-sass依赖
4. ARM 架构导致的问题
启动 MasterServer 和 WorkerServer 后会提示错误:
2021-06-04 10:03:13.410 ERROR 2097 --- [tBeatExecutor_1] o.a.d.server.registry.HeartBeatTask : error write heartbeat info
java.lang.NoClassDefFoundError: Could not initialize class oshi.jna.platform.mac.SystemB$XswUsage
at oshi.hardware.platform.mac.MacGlobalMemory.<init>(MacGlobalMemory.java:46) ~[oshi-core-3.9.1.jar:3.9.1]
at oshi.hardware.platform.mac.MacHardwareAbstractionLayer.getMemory(MacHardwareAbstractionLayer.java:65) ~[oshi-core-3.9.1.jar:3.9.1]
at org.apache.dolphinscheduler.common.utils.OSUtils.availablePhysicalMemorySize(OSUtils.java:100) ~[classes/:na]
at org.apache.dolphinscheduler.server.registry.HeartBeatTask.run(HeartBeatTask.java:93) ~[classes/:na]
原因就是 DolphinScheduler 使用了 OSHI,OSHI 是一个基于 JNA 的获取操作系统和硬件信息的 Java 库,而 JNA 是从 5.7.0 开始支持 AArch64
所以 DolphinScheduler 目前依赖的 OSHI 版本还不支持 M1 硬件,相关的 Issue:
Apple M1 hardware incompatibility for JNA Native class #1462
解决方法就是 将 OSHI 依赖换成 5.7.4,并指定 JNA 版本为 5.8.0
<properties>
<oshi.core.version>5.7.4</oshi.core.version>
<jna.version>5.8.0</jna.version>
<!-- 省略其他 properties -->
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>${jna.version}</version>
</dependency>
<!-- 省略其他 dependency -->
</dependencies>
</dependencyManagement>
新版的 OSHI 对比旧版本,API 有变动,所以需要修改 OSUtils 和 OshiTest,这里给出我的代码,仅供参考,同时需要注意时效性
M1 部署 DolphinScheduler 完整流程
参考官方的 环境搭建文档操作,简化了部分步骤
1. 克隆仓库
git clone https://github.com/apache/dolphinscheduler.git
2. 切换到 dev 分支
git checkout dev #切换到dev分支
git pull #同步分支
3. 安装 Node
安装 Node v14.17.0
4. 安装 Zookeeper
使用 Docker 简单部署一下
docker run -d --name zookeeper -p 2181:2181 zookeeper
5. 安装数据库
使用 Docker 安装 mysql-server
# 启动 MySQL 容器,设置默认密码为:1234
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -d mysql/mysql-server
这时使用宿主机连接没有授权访问,需要进入mysql修改mysql访问权限
# 进入容器
docker exec -it mysql bash
# 登录 MySQL
mysql -u root -p
# 输入 MySQL 密码
# 授权
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL ON *.* TO 'root'@'%';
# 刷新权限
flush privileges;
# 更改默认的身份认证插件,“1234” 为默认密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
# 刷新权限
flush privileges;
创建 DolphinScheduler 数据库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
6. 前端依赖
# 进入项目 UI 目录
cd dolphinscheduler-ui
# 下载依赖
npm install
7. 搭建后端
将项目导入IDEA,更新相关的依赖
dolphinscheduler-dao 的 resource 目录下 datasource.properties 数据库相关的配置
注释掉 PostgreSQL 相关的配置,并根据实际配置修改 MySQL 相关配置
# datasource configuration
# spring.datasource.driver-class-name=org.postgresql.Driver
# spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/dolphinscheduler
# spring.datasource.username=root
# spring.datasource.password=root # mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=1234
修改根 pom.xml
修改 MySQL Connector 版本号,并修改 OSHI 版本号
<properties>
<mysql.connector.version>8.0.11</mysql.connector.version>
<oshi.core.version>5.7.4</oshi.core.version>
<!-- 省略其他 properties -->
</properties>
添加 JNA 依赖,并将 mysql-connector-java 依赖的 scope 修改为 compile
<dependencyManagement>
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>${jna.version}</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
<scope>compile</scope>
</dependency> <!-- 省略其他 dependency --> </dependencies>
</dependencyManagement>刷新 Maven 依赖
运行 org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler 的 main 方法,自动插入项目所需的表和数据
8. 修改
由于使用了新版的 OSHI,所以需要修改 OSUtils 和 OshiTest:
9. 启动项目
- 保证依赖的 MySQL、Zookeeper 处于启动状态
- 依此配置 VM Options 并启动:MasterServer、WorkerServer、ApiApplicationServer,其他模块这里暂不启动
// MasterServer main 位置:org.apache.dolphinscheduler.server.master.MasterServer
// MasterServer VM Options
-Dlogging.config=classpath:logback-master.xml -Ddruid.mysql.usePingMethod=false
// WorkerServer main 位置:org.apache.dolphinscheduler.server.worker.WorkerServer
// WorkerServer VM Options
-Dlogging.config=classpath:logback-worker.xml -Ddruid.mysql.usePingMethod=false
// ApiApplicationServer main 位置:org.apache.dolphinscheduler.api.ApiApplicationServer
// ApiApplicati onServer VM Options
-Dlogging.config=classpath:logback-api.xml -Dspring.profiles.active=api
10. 启动前端 UI 模块
cd dolphinscheduler-ui
npm run start
访问 http://localhost:8888
登录 DolphinScheduler
管理员默认账号: admin
管理员默认密码: dolphinscheduler123
参考资料:
在 M1 下搭建 DolphinScheduler 开发调试环境的更多相关文章
- Windows下搭建FFmpeg开发调试环境
背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可. 但是如果你想调试FFmpeg内部相关的逻辑,或 ...
- Linux下搭建FFmpeg开发调试环境
背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可.但是如果你想调试FFmpeg内部相关的逻辑,或者 ...
- golang在Windows下Sublime Text开发调试环境的配置
一.前言 近期本人有工作调动,进入了一个全新的领域[golang]服务端开发.在此写下本文,希望给那些没接触过golang开发调试环境及还在犹豫选择那家golang IDE而纠结的朋友们一点点帮助,如 ...
- 基于Visual Studio Code搭建Golang开发调试环境【非转载】
由于对Docker+kubernetes的使用及持续关注,要理解这个平台的原理,势必需要对golang有一定的理解,基于此开始利用业余时间学习go,基础语法看完之后,搭建开发环境肯定是第一步,虽然能g ...
- Win7 32位下cocos2dx android开发调试环境
1.使用环境 win7 32位 + vs2010 2.软件准备(下方绿色文字带链接) cocos2dx-v2.2.2 jdk7 android sdk android ndk adt bundle a ...
- WIN10下搭建react-native开发Android环境
最近公司要求使用react-native进行移动端开发,据说macOS上开发坑会少的多,但我们是windows,莫法,直接抗吧!周末配置环境遇到很多问题,谨以此文做个记录... 准备 安装Chocol ...
- PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
1 软件准 WampServer 下载地址:http://www.wampserver.com/en/#download-wrapper 我下的是 里面包含了搭建PHP必须的4个软件: 1. ...
- PHP开发调试环境配置
——基于wamp和Eclipse for PHP Developers 引言 为了搭建PHP开发调试环境,我曾经在网上查阅了无数的资料,但没有一种真正能够行的通的.因为PHP开发环境需要很多种软件相互 ...
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境
windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境 http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...
- mac os 下搭建android开发环境
mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...
随机推荐
- NC23051 华华和月月种树
题目链接 题目 题目描述 华华看书了解到,一起玩养成类的游戏有助于两人培养感情.所以他决定和月月一起种一棵树.因为华华现在也是信息学高手了,所以他们种的树是信息学意义下的. 华华和月月一起维护了一棵动 ...
- NC16466 [NOIP2015]信息传递
题目链接 题目 题目描述 有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为Ti的同学. 游戏开始时, ...
- linux 测试网络速率
1. ethtool ethtool是很强大的查询网卡(嵌入式称为phy芯片)配置的工具,几乎phy芯片芯片手册寄存器能配置的选项,ethtool都能查询到:嵌入式调试phy芯片的时候经常用到该命令: ...
- C语言,结构体成员的地址
先回顾一个基础的知识,不同类型的数据在16位,32位,64位的机器分别占用多少字节. 类型 16位机器(字节) 32位机器(字节) 64位机器(字节) char 1 1 1 short 2 2 2 i ...
- VuePress + Github Pages 搭建文档博客
说明 最近想把常用的一些干货知识点都集中起来,方便发布和查找.相当于创建一个自己的知识库,我就叫它Java技术文档.虽然博客写文档也挺方便,但是在于文档的集中阅读和管理方面还是不够简洁和快速.此处就以 ...
- Java异常处理的20个最佳实践:告别系统崩溃
引言 在Java编程中,异常处理是一个至关重要的环节,它不仅涉及到程序的稳定性和安全性,还关系到用户体验和系统资源的合理利用.合理的异常处理能够使得程序在面对不可预知错误时,能够优雅地恢复或者给出明确 ...
- SpringBoot使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流
令牌桶 在高并发的情况下,限流是后端常用的手段之一,可以对系统限流.接口限流.用户限流等,本文就使用令牌桶算法+拦截器+自定义注解+自定义异常实现限流的demo. 令牌桶思想 大小固定的令牌桶可自行以 ...
- file.deleteOnExit()与file.delete()的区别
之前踩过一个坑,下载过的文件在我第二次打开app的时候奇迹的找不到了.难道是没有下载成功?为此我特地查看了我的本地文件路径的目录.事实证明文件的确是下载到了本地路径下,但是第二次进入app的时候,路径 ...
- NSIS制作安装包笔记(二):NSIS使用NSIS+Qt界面制作安装包流程
前言 Nsis可以使用duilib也可以使用qt界面,笔者主要qt,本文章梳理nsis+qt制作安装包的基本流程. 下载Nsis-Ui-Plugin插件 Github地址:https:// ...
- Linux开端---Centos
Linux-Centos 虚拟化所需工具:https://pan.baidu.com/s/1643-kYcx9oPGnGEZM1pLOw?pwd=g0v5 提取码:g0v5 问题解决 正常注册网络适配 ...