DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目
前置依赖组件安装
找一台服务器,或者本地的虚拟机,然后在服务器上安装好jdk,zookeeper,mysql。
1.源码调试环境搭建
源码环境搭建可以参考DolphinScheduler官方网站的开发者指南。
---------------------引用自官方网站的开发者指南---------------------
准备工作
首先从远端仓库fork dolphinscheduler 一份代码到自己的仓库中
在开发环境中安装好MySQL/PostgreSQL、JDK、MAVEN
把自己仓库clone到本地
git clone https://github.com/apache/incubator-dolphinscheduler.git
git clone项目后,进入项目目录,执行以下命令。
1. git branch -a #查看分支
2. git checkout dev #切换到dev分支
3. git pull #同步分支
4. mvn -U clean package -Prelease -Dmaven.test.skip=true #由于项目使用了gRPC,所以需要先编译项目生成需要的类。
安装node
- 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash - 刷新环境变量
source ~/.bash_profile - 安装node
nvm install v12.12.0
备注:mac用户还可以通过brew安装npm:brew install npm - 验证node安装成功
node --version
安装zookeeper
- 下载zookeeper
http://apache.mirrors.hoobly.com/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz - 复制配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg - 修改配置
vi conf/zoo.cfg
dataDir=./tmp/zookeeper - 启动/停止zookeeper
./bin/zkServer.sh start ./bin/zkServer.sh stop
创建数据库
- 创建用户名为ds_user,密码为dolphinscheduler的用户
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'ds_user'@'%' IDENTIFIED BY 'dolphinscheduler';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'ds_user'@'localhost' IDENTIFIED BY 'dolphinscheduler';
mysql> flush privileges;
搭建前端
- 进入dolphinscheduler-ui的目录
cd dolphinscheduler-ui - 执行npm install
搭建后端
将项目导入到idea中
file-->open修改dao模块resource目录下datasource.properties文件中的数据库配置信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dolphinscheduler
spring.datasource.username=ds_user
spring.datasource.password=dolphinscheduler
修改根项目中pom.xml,将mysql-connector-java依赖的scope修改为compile
刷新dao模块,运行org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler的main方法,自动插入项目所需的表和数据
修改service模块resources文件夹下的zookeeper.properties中链接信息(zookeeper.quorum)
zookeeper.quorum=localhost:2181修改dolphinscheduler-ui模块的.env文件
API_BASE = http://localhost:12345
DEV_HOST = localhost
启动项目
启动zookeeper
./bin/zkServer.sh start启动MasterServer,执行org.apache.dolphinscheduler.server.master.MasterServer的main方法,需要设置VM Options:
-Dlogging.config=classpath:logback-master.xml -Ddruid.mysql.usePingMethod=false
启动WorkerServer,执行org.apache.dolphinscheduler.server.worker.WorkerServer的main方法,需要设置VM Options:
-Dlogging.config=classpath:logback-worker.xml -Ddruid.mysql.usePingMethod=false
启动ApiApplicationServer,执行org.apache.dolphinscheduler.api.ApiApplicationServer的main方法,需要设置VM Options:
-Dlogging.config=classpath:logback-api.xml -Dspring.profiles.active=api
,这里暂时不启动其它模块,如果启动其它模块,那么去查询script/dolphinscheduler-daemon.sh文件,设置相应的VM Options
if [ "$command" = "api-server" ]; then
LOG_FILE="-Dlogging.config=classpath:logback-api.xml -Dspring.profiles.active=api"
class="org".apache.dolphinscheduler.api.ApiApplicationServer
elif [ "$command" = "master-server" ]; then
LOG_FILE="-Dlogging.config=classpath:logback-master.xml -Ddruid.mysql.usePingMethod=false"
class="org".apache.dolphinscheduler.server.master.MasterServer
elif [ "$command" = "worker-server" ]; then
LOG_FILE="-Dlogging.config=classpath:logback-worker.xml -Ddruid.mysql.usePingMethod=false"
class="org".apache.dolphinscheduler.server.worker.WorkerServer
elif [ "$command" = "alert-server" ]; then
LOG_FILE="-Dlogback.configurationFile=conf/logback-alert.xml"
class="org".apache.dolphinscheduler.alert.AlertServer
elif [ "$command" = "logger-server" ]; then
class="org".apache.dolphinscheduler.server.log.LoggerServer
else
echo "Error: No command named \`$command' was found."
exit 1
fi
启动前端ui模块
cd dolphinscheduler-ui目录,执行npm run start
访问项目
- 访问http://localhost:8888
输入管理员账户admin,密码dolphinscheduler123进行登陆
---------------------结束官方文档引用-----------------------------
一般照着这个官方文档来做就可以,重点关注3个配置文件需要修改
一般需要启动3个地方,分别是
dolphinscheduler-api模块下的ApiApplicationServer.java中的main方法
dolphinscheduler-server模块下的MasterServer.java中的main方法
dolphinscheduler-worker模块下的WorkerServer.java中的main方法
第一次启动,如果没有修改vm参数可能会报错或者启动到8080端口上去,这时候需要修改一下启动参数后再启动。如下图
2.启动后端进程
至此,我们可以开始启动ApiApplicationServer、WorkerServer、MasterMasterServer了,这三个是后端的进程。
还是直接放图吧,直观一些
关注一下启动的日志,看看是否有报错信息,如果没有报错就代表三个后台进程启动成功了。
3.启动前端
启动成功的话,应该能用浏览器直接打开 localhost:8888
看到如下的页面代表成功启动啦~~~
初始用户名:admin
初始密码:dolphinscheduler123
环境搭建就到这里结束啦,然后接下来我们会对DolphinScheduler进行探秘,
谢谢看到最后,给自己点个赞吧,加油!!!
DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目的更多相关文章
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...
- 框架-springmvc源码分析(二)
框架-springmvc源码分析(二) 参考: http://www.cnblogs.com/leftthen/p/5207787.html http://www.cnblogs.com/leftth ...
- Tomcat源码分析二:先看看Tomcat的整体架构
Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server.Service.Conn ...
- 十、Spring之BeanFactory源码分析(二)
Spring之BeanFactory源码分析(二) 前言 在前面我们简单的分析了BeanFactory的结构,ListableBeanFactory,HierarchicalBeanFactory,A ...
- Vue源码分析(二) : Vue实例挂载
Vue源码分析(二) : Vue实例挂载 author: @TiffanysBear 实例挂载主要是 $mount 方法的实现,在 src/platforms/web/entry-runtime-wi ...
- 多线程之美8一 AbstractQueuedSynchronizer源码分析<二>
目录 AQS的源码分析 该篇主要分析AQS的ConditionObject,是AQS的内部类,实现等待通知机制. 1.条件队列 条件队列与AQS中的同步队列有所不同,结构图如下: 两者区别: 1.链表 ...
- Android笔记--View绘制流程源码分析(二)
Android笔记--View绘制流程源码分析二 通过上一篇View绘制流程源码分析一可以知晓整个绘制流程之前,在activity启动过程中: Window的建立(activit.attach生成), ...
- NIO 源码分析(05) Channel 源码分析
目录 一.Channel 类图 二.begin 和 close 是什么 2.1 AbstractInterruptibleChannel 中的 begin 和 close 2.2 Selector 中 ...
- NIO 源码分析(02-2) BIO 源码分析 Socket
目录 一.BIO 最简使用姿势 二.connect 方法 2.1 Socket.connect 方法 2.2 AbstractPlainSocketImpl.connect 方法 2.3 DualSt ...
- NIO 源码分析(02-1) BIO 源码分析
目录 一.BIO 最简使用姿势 二.ServerSocket 源码分析 2.1 相关类图 2.2 主要属性 2.3 构造函数 2.4 bind 方法 2.5 accept 方法 2.6 总结 NIO ...
随机推荐
- Hbase性能调优(一)
转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...
- TCP三次握手(通俗易懂)
一--导读 前不久中国和外国RPEC协议的签订,标志着东亚自贸区的建立成功.现在韩国和日本要做贸易.日本一直监听着韩国总统的一举一动,但他又不会主动.(服务器的监听状态)只是被动的等着韩国总统先开口. ...
- Golang字符串是否存在于切片或数组中的小工具(基本等同于python in语法)
// golang中是没有判断字符串是否存在数组或切片里的内置方法, 所以我们可以自己搞一个快速小组件 func Find(slice []string, val string) (int, bool ...
- C语言指针的大小
C语言指针的大小 今天看到一道题目是这样的,写出以下变量在32位设备上的大小(占多少个字节) 然后其中就有一些指针类型的数据,那么我们知道在C语言中指针的大小都是一样的,不管是有数据类型的还是void ...
- 关于vuex的数据不直接给data而要通过computed
# 为什么vuex的数据不直接给data而要通过computed计算 ## 疑惑 其实一直以来使用vue的状态管理vuex都有一个疑惑,文档中介绍,vue的状态数据`$store.state.xx`的 ...
- Linux学习笔记 | 将默认镜像源修改为国内镜像源
前言: 在使用Linux操作系统的时候,难免会下载各种安装包,而Linux使用的下载源服务器属于国外,下载速度相对国内会慢很多,像日常使用的阿里云和腾讯云等国内服务器厂商,镜像源都默认为自己相关的镜像 ...
- 【EXPDP】expdp/impdp数据泵远程导入导出
Oracle在10g的时候有一个很好用的导出工具expdp(数据泵) 但是这个工具好用的同时,有一个局限,就是必须用本地的用户才可以导出数据,也就是说数据泵只能导出本地数据库的数据 但是如果业务需求是 ...
- LSM(Log Structured Merge Trees ) 笔记
目录 一.大幅度制约存储介质吞吐量的原因 二.传统数据库的实现机制 三.LSM Tree的历史由来 四.提高写吞吐量的思路 4.1 一种方式是数据来后,直接顺序落盘 4.2 另一种方式,是保证落盘的数 ...
- 微信小程序 发送模板消息的功能实现
背景 - 小程序开发的过程中,绝大多数会满足微信支付 - 那么,作为友好交互的体现,自然就会考虑到支付后的消息通知咯 - 所以,我的小程序项目也要求完成这个效果,so.分享一下自己的实现步骤,以方便道 ...
- 初次使用Open Live Writer
关于下载和配置 建议大家不要在官网下载,会出不来.华军软件园(或其他下载站)也提供Open Live Writer最新版的下载. 创建账户时千万不要写错地址,错一个就失败. 体验 体验还是很好的,美中 ...