[Fix] Replaced dead links in the docs. (#13170)

* [Fix] Replaced dead links.

* [Improvement] Format markdowns.
This commit is contained in:
Amy0104 2022-12-13 14:36:53 +08:00 committed by GitHub
parent ab96a3d0c0
commit dcf02eab45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 422 additions and 418 deletions

View File

@ -12,25 +12,26 @@ Dolphin Scheduler Official Website
[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md)
## Features
Apache DolphinScheduler is the modern data workflow orchestration platform with powerful user interface, dedicated to solving complex task dependencies in the data pipeline and providing various types of jobs available `out of the box`
The key features for DolphinScheduler are as follows:
- Easy to deploy, we provide 4 ways to deploy, such as Standalone deployment,Cluster deployment,Docker / Kubernetes deployment and Rainbond deployment
- Easy to use, there are four ways to create workflows:
- Visually, create tasks by dragging and dropping tasks
- [PyDolphinScheduler](https://dolphinscheduler.apache.org/python/main/index.html), Creating workflows via Python API, aka workflow-as-code
- Yaml definition, mapping yaml into workflow(have to install PyDolphinScheduler currently)
- Open API, Creating workflows
- Highly Reliable,
DolphinScheduler uses a decentralized multi-master and multi-worker architecture, which naturally supports horizontal scaling and high availability
DolphinScheduler uses a decentralized multi-master and multi-worker architecture, which naturally supports horizontal scaling and high availability
- High performance, its performance is N times faster than other orchestration platform and it can support tens of millions of tasks per day
- Supports multi-tenancy
- Supports various task types: Shell, MR, Spark, SQL (MySQL, PostgreSQL, Hive, Spark SQL), Python, Procedure, Sub_Workflow,
Http, K8s, Jupyter, MLflow, SageMaker, DVC, Pytorch, Amazon EMR, etc
Http, K8s, Jupyter, MLflow, SageMaker, DVC, Pytorch, Amazon EMR, etc
- Orchestrating workflows and dependencies, you can pause/stop/recover task any time, failed tasks can be set to automatically retry
- Visualizing the running state of the task in real-time and seeing the task runtime log
- What you see is what you get when you edit the task on the UI
@ -38,12 +39,12 @@ Http, K8s, Jupyter, MLflow, SageMaker, DVC, Pytorch, Amazon EMR, etc
- Perfect project, resource, data source-level permission control
- Displaying workflow history in tree/Gantt chart, as well as statistical analysis on the task status & process status in each workflow
- Supports internationalization
- Cloud Native, DolphinScheduler supports orchestrating multi-cloud/data center workflow, and
supports custom task type
- Cloud Native, DolphinScheduler supports orchestrating multi-cloud/data center workflow, and
supports custom task type
- More features waiting for partners to explore
## User Interface Screenshots
![dag](./images/en_US/dag.png)
<img width="1100" src="https://user-images.githubusercontent.com/15833811/197348110-1653ea32-ce07-436c-a0b8-6ac1af80aea5.png">
![data-source](./images/en_US/data-source.png)
@ -53,11 +54,11 @@ supports custom task type
## QuickStart in Docker
Please refer the official website document: [QuickStart in Docker](https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/start/docker.html)
Please refer the official website document: [QuickStart in Docker](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/guide/start/docker)
## QuickStart in Kubernetes
Please refer to the official website document: [QuickStart in Kubernetes](https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/installation/kubernetes.html)
Please refer to the official website document: [QuickStart in Kubernetes](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/guide/installation/kubernetes)
## How to Build
@ -81,6 +82,7 @@ dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-s
## Community
You are very welcome to communicate with the developers and users of Dolphin Scheduler. There are two ways to find them:
1. Join the Slack channel [Slack](https://asf-dolphinscheduler.slack.com/)
2. Follow the [Twitter account of DolphinScheduler](https://twitter.com/dolphinschedule) and get the latest news on time
@ -88,7 +90,6 @@ You are very welcome to communicate with the developers and users of Dolphin Sch
The community welcomes everyone to contribute, please refer to this page to find out more: [How to contribute](docs/docs/en/contribute/join/contribute.md).
## Thanks
DolphinScheduler is based on a lot of excellent open-source projects, such as Google guava, grpc, netty, quartz, and many open-source projects of Apache and so on.

View File

@ -13,19 +13,19 @@ Dolphin Scheduler Official Website
## 设计特点
一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系使调度系统在数据处理流程中`开箱即用`。
一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。
其主要目标如下:
- 以DAG图的方式将Task按照任务的依赖关系关联起来可实时可视化监控任务的运行状态
- 支持丰富的任务类型Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql)、Python、Sub_Process、Procedure等
- 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
- 以 DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
- 支持丰富的任务类型Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql)、Python、Sub_Process、Procedure
- 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作
- 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
- 支持工作流全局参数及节点自定义参数设置
- 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
- 支持任务日志在线查看及滚动、在线下载日志等
- 实现集群HA通过Zookeeper实现Master集群和Worker集群去中心化
- 支持对`Master/Worker` cpu loadmemorycpu在线查看
- 实现集群 HA通过 Zookeeper 实现 Master 集群和 Worker 集群去中心化
- 支持对`Master/Worker` cpu loadmemorycpu 在线查看
- 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
- 支持补数
- 支持多租户
@ -42,7 +42,7 @@ Dolphin Scheduler Official Website
## 近期研发计划
DolphinScheduler的工作计划<a href="https://github.com/apache/dolphinscheduler/projects/1" target="_blank">研发计划</a> ,其中 In Develop卡片下是正在研发的功能TODO卡片是待做事项(包括 feature ideas)
DolphinScheduler 的工作计划:<a href="https://github.com/apache/dolphinscheduler/projects/1" target="_blank">研发计划</a> ,其中 In Develop 卡片下是正在研发的功能TODO 卡片是待做事项(包括 feature ideas)
## 参与贡献
@ -51,11 +51,11 @@ DolphinScheduler的工作计划<a href="https://github.com/apache/dolphinsche
## 快速试用 Docker
请参考官方文档: [快速试用 Docker 部署](https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/start/docker.html)
请参考官方文档: [快速试用 Docker 部署](https://dolphinscheduler.apache.org/#/zh-cn/docs/3.1.2/guide/start/docker)
## 快速试用 Kubernetes
请参考官方文档: [快速试用 Kubernetes 部署](http://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/installation/kubernetes.html)
请参考官方文档: [快速试用 Kubernetes 部署](http://dolphinscheduler.apache.org/#/zh-cn/docs/3.1.2/guide/installation/kubernetes)
## 如何构建
@ -72,18 +72,18 @@ dolphinscheduler-dist/target/apache-dolphinscheduler-${latest.release.version}-s
## 感谢
Dolphin Scheduler使用了很多优秀的开源项目比如google的guava、grpcnettyquartz以及apache的众多开源项目等等
正是由于站在这些开源项目的肩膀上才有Dolphin Scheduler的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢我们也希望自己不仅是开源的受益者也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!
Dolphin Scheduler 使用了很多优秀的开源项目,比如 google guava、grpcnettyquartz以及 apache 的众多开源项目等等,
正是由于站在这些开源项目的肩膀上,才有 Dolphin Scheduler 的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的贡献者,也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!
## 获得帮助
1. 提交 [issue](https://github.com/apache/dolphinscheduler/issues/new/choose)
2. [加入slack群](https://s.apache.org/dolphinscheduler-slack) 并在频道 `#troubleshooting` 中提问
2. [加入 slack 群](https://s.apache.org/dolphinscheduler-slack) 并在频道 `#troubleshooting` 中提问
## 社区
1. 通过[该申请链接](https://s.apache.org/dolphinscheduler-slack)加入slack channel
2. 关注[Apache Dolphin Scheduler的Twitter账号](https://twitter.com/dolphinschedule)获取实时动态
1. 通过[该申请链接](https://s.apache.org/dolphinscheduler-slack)加入 slack channel
2. 关注[Apache Dolphin Scheduler Twitter 账号](https://twitter.com/dolphinschedule)获取实时动态
## 版权

View File

@ -1,5 +1,4 @@
# DolphinScheduler for Docker and Kubernetes
* [Start Up DolphinScheduler with Docker](https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/start/docker.html)
* [Start Up DolphinScheduler with Kubernetes](https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/installation/kubernetes.html)
- [Start Up DolphinScheduler with Docker](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/guide/start/docker)
- [Start Up DolphinScheduler with Kubernetes](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/guide/installation/kubernetes)

View File

@ -15,13 +15,13 @@ Before explaining the architecture of the schedule system, let us first understa
**Process definition**: Visualization **DAG** by dragging task nodes and establishing associations of task nodes
**Process instance**: A process instance is an instantiation of a process definition, which can be generated by manual startup or scheduling. The process definition runs once, a new process instance is generated
**Process instance**: A process instance is an instantiation of a process definition, which can be generated by manual startup or scheduling. The process definition runs once, a new process instance is generated
**Task instance**: A task instance is the instantiation of a specific task node when a process instance runs, which indicates the specific task execution status
**Task type**: Currently supports SHELL, SQL, SUB_PROCESS (sub-process), PROCEDURE, MR, SPARK, PYTHON, DEPENDENT (dependency), and plans to support dynamic plug-in extension, note: the sub-**SUB_PROCESS** is also A separate process definition that can be launched separately
**Schedule mode** : The system supports timing schedule and manual schedule based on cron expressions. Command type support: start workflow, start execution from current node, resume fault-tolerant workflow, resume pause process, start execution from failed node, complement, timer, rerun, pause, stop, resume waiting thread. Where **recovers the fault-tolerant workflow** and **restores the waiting thread** The two command types are used by the scheduling internal control and cannot be called externally
**Schedule mode** : The system supports timing schedule and manual schedule based on cron expressions. Command type support: start workflow, start execution from current node, resume fault-tolerant workflow, resume pause process, start execution from failed node, complement, timer, rerun, pause, stop, resume waiting thread. Where **recovers the fault-tolerant workflow** and **restores the waiting thread** The two command types are used by the scheduling internal control and cannot be called externally
**Timed schedule**: The system uses **quartz** distributed scheduler and supports the generation of cron expression visualization
@ -48,7 +48,7 @@ Before explaining the architecture of the schedule system, let us first understa
#### 2.2 Architectural description
* **MasterServer**
- **MasterServer**
MasterServer adopts the distributed non-central design concept. MasterServer is mainly responsible for DAG task split, task submission monitoring, and monitoring the health status of other MasterServer and WorkerServer.
When the MasterServer service starts, it registers a temporary node with Zookeeper, and listens to the Zookeeper temporary node state change for fault tolerance processing.
@ -63,7 +63,7 @@ Before explaining the architecture of the schedule system, let us first understa
- **MasterTaskExecThread** is mainly responsible for task persistence
* **WorkerServer**
- **WorkerServer**
- WorkerServer also adopts a distributed, non-central design concept. WorkerServer is mainly responsible for task execution and providing log services. When the WorkerServer service starts, it registers the temporary node with Zookeeper and maintains the heartbeat.
@ -90,7 +90,7 @@ Before explaining the architecture of the schedule system, let us first understa
- **UI**
The front-end page of the system provides various visual operation interfaces of the system. For details, see the [quick start](https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/about/introduction.html) section.
The front-end page of the system provides various visual operation interfaces of the system. For details, see the [quick start](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/about/introduction) section.
#### 2.3 Architectural Design Ideas
@ -246,7 +246,7 @@ In the early scheduling design, if there is no priority design and fair scheduli
* task log appender
*/
Public class TaskLogAppender extends FileAppender<ILoggingEvent> {
...
@Override

View File

@ -4,11 +4,11 @@
Before setting up the DolphinScheduler development environment, please make sure you have installed the software as below:
* [Git](https://git-scm.com/downloads)
* [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html): v1.8.x (Currently does not support jdk 11)
* [Maven](http://maven.apache.org/download.cgi): v3.5+
* [Node](https://nodejs.org/en/download): v16.13+ (dolphinScheduler version is lower than 3.0, please install node v12.20+)
* [Pnpm](https://pnpm.io/installation): v6.x
- [Git](https://git-scm.com/downloads)
- [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html): v1.8.x (Currently does not support jdk 11)
- [Maven](http://maven.apache.org/download.cgi): v3.5+
- [Node](https://nodejs.org/en/download): v16.13+ (dolphinScheduler version is lower than 3.0, please install node v12.20+)
- [Pnpm](https://pnpm.io/installation): v6.x
### Clone Git Repository
@ -23,8 +23,9 @@ git clone git@github.com:apache/dolphinscheduler.git
### Compile Source Code
Supporting system:
* MacOS
* Liunx
- MacOS
- Liunx
Run `mvn clean install -Prelease -Dmaven.test.skip=true`
@ -57,7 +58,7 @@ Now, every time you commit your code, `pre-commit` will automatically run `Spotl
DolphinScheduler will release new Docker images after it released, you could find them in [Docker Hub](https://hub.docker.com/search?q=DolphinScheduler).
* If you want to modify DolphinScheduler source code, and build Docker images locally, you can run when finished the modification
- If you want to modify DolphinScheduler source code, and build Docker images locally, you can run when finished the modification
```shell
cd dolphinscheduler
@ -71,7 +72,7 @@ cd dolphinscheduler
When the command is finished you could find them by command `docker imaegs`.
* If you want to modify DolphinScheduler source code, build and push Docker images to your registry <HUB_URL>you can run when finished the modification
- If you want to modify DolphinScheduler source code, build and push Docker images to your registry <HUB_URL>you can run when finished the modification
```shell
cd dolphinscheduler
@ -85,7 +86,7 @@ cd dolphinscheduler
-Pdocker,release
```
* If you want to modify DolphinScheduler source code, and also want to add customize dependencies of Docker image, you can modify the definition of Dockerfile after modifying the source code. You can run the following command to find all Dockerfile files.
- If you want to modify DolphinScheduler source code, and also want to add customize dependencies of Docker image, you can modify the definition of Dockerfile after modifying the source code. You can run the following command to find all Dockerfile files.
```shell
cd dolphinscheduler
@ -94,7 +95,7 @@ find . -iname 'Dockerfile'
Then run the Docker build command above
* You could create custom Docker images base on those images if you want to change image like add some dependencies or upgrade package.
- You could create custom Docker images base on those images if you want to change image like add some dependencies or upgrade package.
```Dockerfile
FROM dolphinscheduler-standalone-server
@ -110,8 +111,8 @@ RUN apt update ; \
There are two ways to configure the DolphinScheduler development environment, standalone mode and normal mode
* [Standalone mode](#dolphinscheduler-standalone-quick-start): **Recommended**more convenient to build development environment, it can cover most scenes.
* [Normal mode](#dolphinscheduler-normal-mode): Separate server master, worker, api, which can cover more test environments than standalone, and it is more like production environment in real life.
- [Standalone mode](#dolphinscheduler-standalone-quick-start): **Recommended**more convenient to build development environment, it can cover most scenes.
- [Normal mode](#dolphinscheduler-normal-mode): Separate server master, worker, api, which can cover more test environments than standalone, and it is more like production environment in real life.
## DolphinScheduler Standalone Quick Start
@ -119,14 +120,14 @@ There are two ways to configure the DolphinScheduler development environment, st
>
> Standalone is only supported in DolphinScheduler 1.3.9 and later versions.
>
> Standalone server is able to connect to external databases like mysql and postgresql, see [Standalone Deployment](https://dolphinscheduler.apache.org/en-us/docs/dev/user_doc/guide/installation/standalone.html) for instructions.
> Standalone server is able to connect to external databases like mysql and postgresql, see [Standalone Deployment](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/guide/installation/standalone) for instructions.
### Git Branch Choose
Use different Git branch to develop different codes
* If you want to develop based on a binary package, switch git branch to specific release branch, for example, if you want to develop base on 1.3.9, you should choose branch `1.3.9-release`.
* If you want to develop the latest code, choose branch branch `dev`.
- If you want to develop based on a binary package, switch git branch to specific release branch, for example, if you want to develop base on 1.3.9, you should choose branch `1.3.9-release`.
- If you want to develop the latest code, choose branch branch `dev`.
### Start backend server
@ -154,15 +155,15 @@ The browser access address [http://localhost:5173](http://localhost:5173) can lo
Download [ZooKeeper](https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.3), and extract it.
* Create directory `zkData` and `zkLog`
* Go to the zookeeper installation directory, copy configure file `zoo_sample.cfg` to `conf/zoo.cfg`, and change value of dataDir in conf/zoo.cfg to dataDir=./tmp/zookeeper
- Create directory `zkData` and `zkLog`
- Go to the zookeeper installation directory, copy configure file `zoo_sample.cfg` to `conf/zoo.cfg`, and change value of dataDir in conf/zoo.cfg to dataDir=./tmp/zookeeper
```shell
# We use path /data/zookeeper/data and /data/zookeeper/datalog here as example
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/datalog
```
* Run `./bin/zkServer.sh` in terminal by command `./bin/zkServer.sh start`.
- Run `./bin/zkServer.sh` in terminal by command `./bin/zkServer.sh start`.
#### Database
@ -176,14 +177,14 @@ Following steps will guide how to start the DolphinScheduler backend service
##### Backend Start Prepare
* Open project: Use IDE open the project, here we use Intellij IDEA as an example, after opening it will take a while for Intellij IDEA to complete the dependent download
- Open project: Use IDE open the project, here we use Intellij IDEA as an example, after opening it will take a while for Intellij IDEA to complete the dependent download
* File change
- File change
* If you use MySQL as your metadata database, you need to modify `dolphinscheduler/pom.xml` and change the `scope` of the `mysql-connector-java` dependency to `compile`. This step is not necessary to use PostgreSQL
* Modify database configuration, modify the database configuration in the `dolphinscheduler-master/src/main/resources/application.yaml`
* Modify database configuration, modify the database configuration in the `dolphinscheduler-worker/src/main/resources/application.yaml`
* Modify database configuration, modify the database configuration in the `dolphinscheduler-api/src/main/resources/application.yaml`
- If you use MySQL as your metadata database, you need to modify `dolphinscheduler/pom.xml` and change the `scope` of the `mysql-connector-java` dependency to `compile`. This step is not necessary to use PostgreSQL
- Modify database configuration, modify the database configuration in the `dolphinscheduler-master/src/main/resources/application.yaml`
- Modify database configuration, modify the database configuration in the `dolphinscheduler-worker/src/main/resources/application.yaml`
- Modify database configuration, modify the database configuration in the `dolphinscheduler-api/src/main/resources/application.yaml`
We here use MySQL with database, username, password named dolphinscheduler as an example
@ -196,7 +197,7 @@ spring:
password: dolphinscheduler
```
* Log level: add a line `<appender-ref ref="STDOUT"/>` to the following configuration to enable the log to be displayed on the command line
- Log level: add a line `<appender-ref ref="STDOUT"/>` to the following configuration to enable the log to be displayed on the command line
`dolphinscheduler-master/src/main/resources/logback-spring.xml`
`dolphinscheduler-worker/src/main/resources/logback-spring.xml`
@ -218,9 +219,9 @@ spring:
There are three services that need to be started, including MasterServer, WorkerServer, ApiApplicationServer.
* MasterServerExecute function `main` in the class `org.apache.dolphinscheduler.server.master.MasterServer` by Intellij IDEA, with the configuration *VM Options* `-Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql`
* WorkerServerExecute function `main` in the class `org.apache.dolphinscheduler.server.worker.WorkerServer` by Intellij IDEA, with the configuration *VM Options* `-Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql`
* ApiApplicationServerExecute function `main` in the class `org.apache.dolphinscheduler.api.ApiApplicationServer` by Intellij IDEA, with the configuration *VM Options* `-Dlogging.config=classpath:logback-spring.xml -Dspring.profiles.active=api,mysql`. After it started, you could find Open API documentation in http://localhost:12345/dolphinscheduler/swagger-ui/index.html
- MasterServerExecute function `main` in the class `org.apache.dolphinscheduler.server.master.MasterServer` by Intellij IDEA, with the configuration _VM Options_ `-Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql`
- WorkerServerExecute function `main` in the class `org.apache.dolphinscheduler.server.worker.WorkerServer` by Intellij IDEA, with the configuration _VM Options_ `-Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql`
- ApiApplicationServerExecute function `main` in the class `org.apache.dolphinscheduler.api.ApiApplicationServer` by Intellij IDEA, with the configuration _VM Options_ `-Dlogging.config=classpath:logback-spring.xml -Dspring.profiles.active=api,mysql`. After it started, you could find Open API documentation in http://localhost:12345/dolphinscheduler/swagger-ui/index.html
> The `mysql` in the VM Options `-Dspring.profiles.active=mysql` means specified configuration file

View File

@ -1,6 +1,6 @@
# Community Review
Beside submit Issues and pull requests to the GitHub repository mentioned in [team](/us-en/community/community.html), another important way to
Beside submit Issues and pull requests to the GitHub repository mentioned in [team](https://dolphinscheduler.apache.org/#/en-us/community), another important way to
contribute to DolphinScheduler is reviewing GitHub Issues or Pull Requests. You can not only know the latest new and
direction of the community, but also understand the good design in others during you reviewing. At the same time, you can
increase your exposure in the community and accumulate your honor.
@ -12,7 +12,7 @@ in [GitHub Discussion][discussion-result-review-wanted].
> Note: It is only users mentioned in the [GitHub Discussion][discussion-result-review-wanted] can review Issues or Pull
> Requests, Community advocates **Anyone is encouraged to review Issues and Pull Requests**. Users in
> [GitHub Discussion][discussion-result-review-wanted] show their willing to review when we collect in the mail thread.
> The advantage of this list is when the community has discussion, in addition to the mention Members in [team](/us-en/community/community.html),
> The advantage of this list is when the community has discussion, in addition to the mention Members in [team](https://dolphinscheduler.apache.org/#/en-us/community),
> you can also find some help in [GitHub Discussion][discussion-result-review-wanted] people. If you want to join the
> [GitHub Discussion][discussion-result-review-wanted], please comment in that discussion and leave a module you are interested
> in, and the maintainer will add you to the list.
@ -38,11 +38,11 @@ better, which convenient for further processing. An issue can with more than one
| Label | Meaning |
|------------------------------------------|--------------------------------|
| [UI][label-UI] | UI and front-end related |
| [UI][label-ui] | UI and front-end related |
| [security][label-security] | Security Issue |
| [user experience][label-user-experience] | User experience Issue |
| [development][label-development] | Development Issue |
| [Python][label-Python] | Python Issue |
| [Python][label-python] | Python Issue |
| [plug-in][label-plug-in] | Plug-in Issue |
| [document][label-document] | Document Issue |
| [docker][label-docker] | Docker Issue |
@ -64,10 +64,10 @@ All the labels above in common label. For all labels in this project you could s
Before reading following content, please make sure you have labeled the Issue.
* Remove label [Waiting for reply][label-waiting-for-reply] after replying: Label [Waiting for reply][label-waiting-for-reply]
- Remove label [Waiting for reply][label-waiting-for-reply] after replying: Label [Waiting for reply][label-waiting-for-reply]
added when [creating an Issue][issue-choose]. It makes positioning un reply issue more convenient, and you should remove
this label after you reviewed it. If you do not remove it, will cause others to waste time looking on the same issue.
* Mark [Waiting for review][label-waiting-for-review] when not sure whether issue is resolved or not: There are two situations
- Mark [Waiting for review][label-waiting-for-review] when not sure whether issue is resolved or not: There are two situations
when you review issue. One is the problem has been located or resolved, maybe have to [Create PR](./submit-code.md)
when necessary. Secondly, you are not sure about this issue, you can labeled [Waiting for review][label-waiting-for-review]
and mention others to make a second confirmation.
@ -76,24 +76,26 @@ When an Issue need to create Pull Requests, you could also labeled it from below
| Label | Mean |
|--------------------------------------------|---------------------------------------------|
| [Chore][label-Chore] | Chore for project |
| [Chore][label-chore] | Chore for project |
| [Good first issue][label-good-first-issue] | Good first issue for new contributor |
| [easy to fix][label-easy-to-fix] | Easy to fix, harder than `Good first issue` |
| [help wanted][label-help-wanted] | Help wanted |
> Note: Only members have permission to add or delete label. When you need to add or remove lebals but are not member,
> you can `@` members to do that. But as long as you have a GitHub account, you can comment on issues and give suggestions.
> you can `@` members to do that. But as long as you have a GitHub account, you can comment on issues and give suggestions.
> We encourage everyone in the community to comment and answer issues
### Pull Requests
<!-- markdown-link-check-disable -->
Review Pull mean discussing in [Pull Requests][all-PRs] in GitHub and giving suggestions to it. DolphinScheduler's
Review Pull mean discussing in [Pull Requests][all-prs] in GitHub and giving suggestions to it. DolphinScheduler's
Pull Requests reviewing are the same as [GitHub's reviewing changes in pull requests][gh-review-pr]. You can give your
suggestions in Pull Reque-->
* When you think the Pull Request is OK to be merged, you can agree to the Pull Request according to the "Approve" process
- When you think the Pull Request is OK to be merged, you can agree to the Pull Request according to the "Approve" process
in [GitHub's reviewing changes in pull requests][gh-review-pr].
* When you think Pull Request needs to be changed, you can comment it according to the "Comment" process in
- When you think Pull Request needs to be changed, you can comment it according to the "Comment" process in
[GitHub's reviewing changes in pull requests][gh-review-pr]. And when you think issues that must be fixed before they
merged, please follow "Request changes" in [GitHub's reviewing changes in pull requests][gh-review-pr] to ask contributors
modify it.
@ -114,7 +116,7 @@ Pull Requests have some unique labels of it own
| [don't merge][label-do-not-merge] | Pull Requests have some problem and should not be merged |
> Note: Only members have permission to add or delete label. When you need to add or remove lebals but are not member,
> you can `@` members to do that. But as long as you have a GitHub account, you can comment on Pull Requests and give suggestions.
> you can `@` members to do that. But as long as you have a GitHub account, you can comment on Pull Requests and give suggestions.
> We encourage everyone in the community to review Pull Requests
[mail-review-wanted]: https://lists.apache.org/thread/9flwlzrp69xjn6v8tdkbytq8glqp2k51
@ -127,15 +129,15 @@ Pull Requests have some unique labels of it own
[label-waiting-for-review]: https://github.com/apache/dolphinscheduler/labels/Waiting%20for%20review
[label-user-experience]: https://github.com/apache/dolphinscheduler/labels/user%20experience
[label-development]: https://github.com/apache/dolphinscheduler/labels/development
[label-UI]: https://github.com/apache/dolphinscheduler/labels/UI
[label-ui]: https://github.com/apache/dolphinscheduler/labels/UI
[label-suggestion]: https://github.com/apache/dolphinscheduler/labels/suggestion
[label-security]: https://github.com/apache/dolphinscheduler/labels/security
[label-Python]: https://github.com/apache/dolphinscheduler/labels/Python
[label-python]: https://github.com/apache/dolphinscheduler/labels/Python
[label-plug-in]: https://github.com/apache/dolphinscheduler/labels/plug-in
[label-document]: https://github.com/apache/dolphinscheduler/labels/document
[label-docker]: https://github.com/apache/dolphinscheduler/labels/docker
[label-all-list]: https://github.com/apache/dolphinscheduler/labels
[label-Chore]: https://github.com/apache/dolphinscheduler/labels/Chore
[label-chore]: https://github.com/apache/dolphinscheduler/labels/Chore
[label-good-first-issue]: https://github.com/apache/dolphinscheduler/labels/good%20first%20issue
[label-help-wanted]: https://github.com/apache/dolphinscheduler/labels/help%20wanted
[label-easy-to-fix]: https://github.com/apache/dolphinscheduler/labels/easy%20to%20fix
@ -149,6 +151,6 @@ Pull Requests have some unique labels of it own
[label-need-verify]: https://github.com/apache/dolphinscheduler/labels/need%20to%20verify
[issue-choose]: https://github.com/apache/dolphinscheduler/issues/new/choose
[all-issues]: https://github.com/apache/dolphinscheduler/issues
[all-PRs]: https://github.com/apache/dolphinscheduler/pulls
[all-prs]: https://github.com/apache/dolphinscheduler/pulls
[gh-review-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews

View File

@ -154,10 +154,10 @@ it to bash variable for easier use.
```shell
VERSION=<THE-VERSION-YOU-RELEASE>
SOURCE_CODE_DIR=<YOUR-SOURCE-CODE-ROOT-DIR> # the directory of your source code hold, the location of parent pom.xml instead of binary package
SOURCE_CODE_DIR=<YOUR-SOURCE-CODE-ROOT-DIR> # the directory of your source code hold, the location of parent pom.xml instead of binary package
GH_USERNAME=<YOUR-GITHUB-USERNAME>
GH_REMOTE=<GITHUB-REMOTE> # we use `upstream` or `origin` mostly base on your release environment
GH_REMOTE=<GITHUB-REMOTE> # we use `upstream` or `origin` mostly base on your release environment
A_USERNAME=<YOUR-APACHE-USERNAME>
SVN_DIR=<PATH-TO-SVN-ROOT> # to keep binary package checkout from SVN, the sub path end with `/dolphinscheduler/dev` and `/dolphinscheduler/release` will be create
@ -185,7 +185,7 @@ We need to update some documentation before the Maven release. For example, to r
- `Chart.yaml`: `appVersion` and `version` needs to be updated to x.y.z
- `values.yaml`: `image.tag` needs to be updated to x.y.z
- Version in the docs:
- Change the placeholder `<version>`(except `pom`) to the `x.y.z` in directory `docs`
- Change the placeholder `<version>`(except `pom`) to the `x.y.z` in directory `docs`
- Add new history version
- `docs/docs/en/history-versions.md` and `docs/docs/zh/history-versions.md`: Add the new version and link for `x.y.z`
- `docs/configs/docsdev.js`: change `/dev/` to `/x.y.z/`, **DO NOT** change this filename, is will be auto change by website tools.
@ -211,9 +211,9 @@ git push "${GH_REMOTE}" "${VERSION}"-release
mvn release:prepare -Prelease -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true -Dspotless.check.skip=true" -DautoVersionSubmodules=true -DdryRun=true -Dusername="${GH_USERNAME}"
```
* `-Prelease`: choose release profile, which will pack all the source codes, jar files and executable binary packages.
* `-DautoVersionSubmodules=true`: it can make the version number is inputted only once and not for each sub-module.
* `-DdryRun=true`: dry run which means not to generate or submit new version number and new tag.
- `-Prelease`: choose release profile, which will pack all the source codes, jar files and executable binary packages.
- `-DautoVersionSubmodules=true`: it can make the version number is inputted only once and not for each sub-module.
- `-DdryRun=true`: dry run which means not to generate or submit new version number and new tag.
#### Maven Release Check Prepare
@ -231,7 +231,7 @@ mvn release:prepare -Prelease -Darguments="-Dmaven.test.skip=true -Dcheckstyle.s
It is basically the same as the previous rehearsal command, but deleting `-DdryRun=true` parameter.
* `-DpushChanges=false`: do not submit the edited version number and tag to GitHub automatically.
- `-DpushChanges=false`: do not submit the edited version number and tag to GitHub automatically.
> Note: You have to config your git `user.name` and `user.password` by command `git config --global user.email "you@example.com"`
> and `git config --global user.name "Your Name"` if you meet some mistake like **Please tell me who you are.**
@ -305,7 +305,7 @@ svn --username="${A_USERNAME}" commit -m "new key <YOUR-GPG-KEY-ID> add"
#### Add Release Content to SVN
Create folder by version number, and move the source code packages, binary packages and executable binary packages to SVN working directory.
Create folder by version number, and move the source code packages, binary packages and executable binary packages to SVN working directory.
```shell
mkdir -p "${SVN_DIR_DEV}/${VERSION}"
@ -341,14 +341,14 @@ svn --username="${A_USERNAME}" commit -m "release ${VERSION}"
Decompress `apache-dolphinscheduler-<VERSION>-src.tar.gz` then check the following items:
* Check whether source tarball is oversized for including nonessential files
* `LICENSE` and `NOTICE` files exist
* Correct year in `NOTICE` file
* There is only text files but no binary files
* All source files have ASF headers
* Codes can be compiled and pass the unit tests (mvn install)
* The contents of the release match with what's tagged in version control (diff -r a verify_dir tag_dir)
* Check if there is any extra files or folders, empty folders for example
- Check whether source tarball is oversized for including nonessential files
- `LICENSE` and `NOTICE` files exist
- Correct year in `NOTICE` file
- There is only text files but no binary files
- All source files have ASF headers
- Codes can be compiled and pass the unit tests (mvn install)
- The contents of the release match with what's tagged in version control (diff -r a verify_dir tag_dir)
- Check if there is any extra files or folders, empty folders for example
#### Check binary packages
@ -375,7 +375,7 @@ It should be done before vote mail because we need the release note in the mail.
### Vote procedure
DolphinScheduler community vote: send the vote e-mail to `dev@dolphinscheduler.apache.org`. PMC needs to check the
DolphinScheduler community vote: send the vote e-mail to `dev@dolphinscheduler.apache.org`. PMC needs to check the
rightness of the version according to the document before they vote. After at least 72 hours and with at least 3
`+1 and no -1 PMC member` votes, it can come to the next stage of the vote.
@ -410,7 +410,7 @@ Release Commit ID: https://github.com/apache/dolphinscheduler/commit/<SHA-VALUE>
Keys to verify the Release Candidate: https://downloads.apache.org/dolphinscheduler/KEYS
Look at here for how to verify this release candidate: https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/contribute/release/release.html
Look at here for how to verify this release candidate: https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/en/contribute/release.md
The vote will be open for at least 72 hours or until necessary number of votes are reached.
@ -467,7 +467,7 @@ svn mv -m "release ${VERSION}" https://dist.apache.org/repos/dist/dev/dolphinsch
# remove old release directory
svn delete -m "remove old release" https://dist.apache.org/repos/dist/release/dolphinscheduler/<PREVIOUS-RELEASE-VERSION>
# Remove prepare branch
# Remove prepare branch
cd "${SOURCE_CODE_DIR}"
git push --delete "${GH_REMOTE}" "${VERSION}-prepare"
```
@ -497,7 +497,7 @@ the release version is `<VERSION>`, the following updates are required(note it w
we already have the exists CI to publish the latest Docker image to GitHub container register with [config](https://github.com/apache/dolphinscheduler/blob/d80cf21456265c9d84e642bdb4db4067c7577fc6/.github/workflows/publish-docker.yaml#L55-L63).
We could reuse the main command the CI run and publish our Docker images to Docker Hub by single command.
It is highly recommended to build and test docker images locally first before push to docker hub
It is highly recommended to build and test docker images locally first before push to docker hub
```shell
# Checkout and create to target tag
@ -564,7 +564,7 @@ Dolphin Scheduler is a distributed and easy-to-extend visual workflow scheduler
dedicated to solving the complex task dependencies in data processing, making the scheduler system out of the box for data processing.
Download Links: https://dolphinscheduler.apache.org/en-us/download/download.html
Download Links: https://dolphinscheduler.apache.org/#/en-us/download
Release Notes: https://github.com/apache/dolphinscheduler/releases/tag/<VERSION>
@ -573,17 +573,17 @@ Website: https://dolphinscheduler.apache.org/
DolphinScheduler Resources:
- Issue: https://github.com/apache/dolphinscheduler/issues/
- Mailing list: dev@dolphinscheduler.apache.org
- Documents: https://dolphinscheduler.apache.org/zh-cn/docs/<VERSION>/user_doc/about/introduction.html
- Documents: https://dolphinscheduler.apache.org/#/zh-cn/docs/<VERSION>/about/introduction
```
## News
After all set, an article should be written and publish it to the community, it should include:
* What is the major purpose of the version, feature add, bugfix, or both
* Major new features and how to use it, better with picture or gif
* Major bugfix and make what different from previous version, better with picture or gif
* All contributors since previous release
- What is the major purpose of the version, feature add, bugfix, or both
- Major new features and how to use it, better with picture or gif
- Major bugfix and make what different from previous version, better with picture or gif
- All contributors since previous release
### Get All Contributors

View File

@ -75,35 +75,35 @@ A: Install **npm install node-sass --unsafe-perm** separately, then **npm instal
## Q: UI cannot log in normally.
A: 1, if it is node startup, check whether the .env API_BASE configuration under dolphinscheduler-ui is the Api Server service address.
A: 1, if it is node startup, check whether the .env API_BASE configuration under dolphinscheduler-ui is the Api Server service address.
2, If it is nginx booted and installed via **install-dolphinscheduler-ui.sh**, check if the proxy_pass configuration in **/etc/nginx/conf.d/dolphinscheduler.conf** is the Api Server service address
2, If it is nginx booted and installed via **install-dolphinscheduler-ui.sh**, check if the proxy_pass configuration in **/etc/nginx/conf.d/dolphinscheduler.conf** is the Api Server service address
3, if the above configuration is correct, then please check if the Api Server service is normal,
3, if the above configuration is correct, then please check if the Api Server service is normal,
curl http://localhost:12345/dolphinscheduler/users/get-user-info, check the Api Server log,
curl http://localhost:12345/dolphinscheduler/users/get-user-info, check the Api Server log,
if Prompt cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session info is null, which proves that the Api Server service is normal.
if Prompt cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session info is null, which proves that the Api Server service is normal.
4, if there is no problem above, you need to check if **server.context-path and server.port configuration** in **application.properties** is correct
4, if there is no problem above, you need to check if **server.context-path and server.port configuration** in **application.properties** is correct
---
## Q: After the process definition is manually started or scheduled, no process instance is generated.
A: 1, first **check whether the MasterServer service exists through jps**, or directly check whether there is a master service in zk from the service monitoring.
A: 1, first **check whether the MasterServer service exists through jps**, or directly check whether there is a master service in zk from the service monitoring.
2,If there is a master service, check **the command status statistics** or whether new records are added in **t_ds_error_command**. If it is added, **please check the message field.**
2,If there is a master service, check **the command status statistics** or whether new records are added in **t_ds_error_command**. If it is added, **please check the message field.**
---
## Q : The task status is always in the successful submission status.
A: 1, **first check whether the WorkerServer service exists through jps**, or directly check whether there is a worker service in zk from the service monitoring.
A: 1, **first check whether the WorkerServer service exists through jps**, or directly check whether there is a worker service in zk from the service monitoring.
2,If the **WorkerServer** service is normal, you need to **check whether the MasterServer puts the task in the zk queue. You need to check whether the task is blocked in the MasterServer log and the zk queue.**
2,If the **WorkerServer** service is normal, you need to **check whether the MasterServer puts the task in the zk queue. You need to check whether the task is blocked in the MasterServer log and the zk queue.**
3, if there is no problem above, you need to locate whether the Worker group is specified, but **the machine grouped by the worker is not online**.
3, if there is no problem above, you need to locate whether the Worker group is specified, but **the machine grouped by the worker is not online**.
---
@ -119,17 +119,17 @@ Dockerfile address: https://github.com/qiaozhanwei/escheduler_dockerfile/tree/ma
## Q : Need to pay attention to the problem in install.sh
A: 1, if the replacement variable contains special characters, **use the \ transfer character to transfer**
A: 1, if the replacement variable contains special characters, **use the \ transfer character to transfer**
2, installPath="/data1_1T/dolphinscheduler", **this directory can not be the same as the install.sh directory currently installed with one click.**
2, installPath="/data1_1T/dolphinscheduler", **this directory can not be the same as the install.sh directory currently installed with one click.**
3, deployUser = "dolphinscheduler", **the deployment user must have sudo privileges**, because the worker is executed by sudo -u tenant sh xxx.command
3, deployUser = "dolphinscheduler", **the deployment user must have sudo privileges**, because the worker is executed by sudo -u tenant sh xxx.command
4, monitorServerState = "false", whether the service monitoring script is started, the default is not to start the service monitoring script. **If the service monitoring script is started, the master and worker services are monitored every 5 minutes, and if the machine is down, it will automatically restart.**
4, monitorServerState = "false", whether the service monitoring script is started, the default is not to start the service monitoring script. **If the service monitoring script is started, the master and worker services are monitored every 5 minutes, and if the machine is down, it will automatically restart.**
5, hdfsStartupSate="false", whether to enable HDFS resource upload function. The default is not enabled. **If it is not enabled, the resource center cannot be used.** If enabled, you need to configure the configuration of resource.hdfs.fs.defaultFS and yarn in conf/common/hadoop/hadoop.properties. If you use namenode HA, you need to copy core-site.xml and hdfs-site.xml to the conf root directory.
5, hdfsStartupSate="false", whether to enable HDFS resource upload function. The default is not enabled. **If it is not enabled, the resource center cannot be used.** If enabled, you need to configure the configuration of resource.hdfs.fs.defaultFS and yarn in conf/common/hadoop/hadoop.properties. If you use namenode HA, you need to copy core-site.xml and hdfs-site.xml to the conf root directory.
Note: **The 1.0.x version does not automatically create the hdfs root directory, you need to create it yourself, and you need to deploy the user with hdfs operation permission.**
Note: **The 1.0.x version does not automatically create the hdfs root directory, you need to create it yourself, and you need to deploy the user with hdfs operation permission.**
---
@ -170,9 +170,9 @@ A: No. Because the tenant created by HDFS is not started, the tenant directory w
A: **Note:** **Master monitors Master and Worker services.**
1If the Master service is lost, other Masters will take over the process of the hanged Master and continue to monitor the Worker task status.
1If the Master service is lost, other Masters will take over the process of the hanged Master and continue to monitor the Worker task status.
2If the Worker service is lost, the Master will monitor that the Worker service is gone. If there is a Yarn task, the Kill Yarn task will be retried.
2If the Worker service is lost, the Master will monitor that the Worker service is gone. If there is a Yarn task, the Kill Yarn task will be retried.
Please see the fault-tolerant design in the architecture for details.
@ -186,7 +186,7 @@ A: The 1.0.3 version only implements the fault tolerance of the Master startup p
## Q : Timing is easy to set to execute every second
A : Note when setting the timing. If the first digit (* * * * * ? *) is set to *, it means execution every second. **We will add a list of recently scheduled times in version 1.1.0.** You can see the last 5 running times online at http://cron.qqe2.com/
A : Note when setting the timing. If the first digit (\* \* \* \* _ ? _) is set to \*, it means execution every second. **We will add a list of recently scheduled times in version 1.1.0.** You can see the last 5 running times online at http://cron.qqe2.com/
---
@ -198,29 +198,29 @@ A: Yes, **if the timing start and end time is the same time, then this timing wi
## Q : There are several implementations of task dependencies
A: 1, the task dependency between **DAG**, is **from the zero degree** of the DAG segmentation
A: 1, the task dependency between **DAG**, is **from the zero degree** of the DAG segmentation
2, there are **task dependent nodes**, you can achieve cross-process tasks or process dependencies, please refer to the (DEPENDENT) node design in the system-manual.
2, there are **task dependent nodes**, you can achieve cross-process tasks or process dependencies, please refer to the (DEPENDENT) node design in the system-manual.
Note: **Cross-project processes or task dependencies are not supported**
Note: **Cross-project processes or task dependencies are not supported**
---
## Q: There are several ways to start the process definition.
A: 1, in **the process definition list**, click the **Start** button.
A: 1, in **the process definition list**, click the **Start** button.
2, **the process definition list adds a timer**, scheduling start process definition.
2, **the process definition list adds a timer**, scheduling start process definition.
3, process definition **view or edit** the DAG page, any **task node right click** Start process definition.
3, process definition **view or edit** the DAG page, any **task node right click** Start process definition.
4, you can define DAG editing for the process, set the running flag of some tasks to **prohibit running**, when the process definition is started, the connection of the node will be removed from the DAG.
4, you can define DAG editing for the process, set the running flag of some tasks to **prohibit running**, when the process definition is started, the connection of the node will be removed from the DAG.
---
## Q : Python task setting Python version
A: 1**for the version after 1.0.3** only need to modify PYTHON_HOME in `bin/env/dolphinscheduler_env.sh`
A: 1**for the version after 1.0.3** only need to modify PYTHON_HOME in `bin/env/dolphinscheduler_env.sh`
```
export PYTHON_HOME=/bin/python
@ -232,13 +232,13 @@ Note: This is **PYTHON_HOME** , which is the absolute path of the python command
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
```
2For versions prior to 1.0.3, the Python task only supports the Python version of the system. It does not support specifying the Python version.
2For versions prior to 1.0.3, the Python task only supports the Python version of the system. It does not support specifying the Python version.
---
## QWorker Task will generate a child process through sudo -u tenant sh xxx.command, will kill when kill
A We will add the kill task in 1.0.4 and kill all the various child processes generated by the task.
A We will add the kill task in 1.0.4 and kill all the various child processes generated by the task.
---
@ -298,13 +298,13 @@ change into
## Q : how to add a worker server
A: 1, Create deployment user and hosts mapping, please refer 1.3 part of [cluster deployment](https://dolphinscheduler.apache.org/en-us/docs/laster/user_doc/installation/cluster.html)
A: 1, Create deployment user and hosts mapping, please refer 1.3 part of [cluster deployment](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/user_doc/installation/cluster)
2, Configure hosts mapping and ssh access and modify directory permissions. please refer 1.4 part of [cluster deployment](https://dolphinscheduler.apache.org/en-us/docs/laster/user_doc/installation/cluster.html)
2, Configure hosts mapping and ssh access and modify directory permissions. please refer 1.4 part of [cluster deployment](https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/user_doc/installation/cluster)
3, Copy the deployment directory from worker server that has already deployed
3, Copy the deployment directory from worker server that has already deployed
4, Go to bin dir, then start worker server
4, Go to bin dir, then start worker server
```
./dolphinscheduler-daemon.sh start worker-server
@ -459,14 +459,14 @@ A: 1, cd dolphinscheduler-ui and delete node_modules directory
sudo rm -rf node_modules
```
2, install node-sass through npm.taobao.org
2, install node-sass through npm.taobao.org
```
sudo npm uninstall node-sass
sudo npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
```
3, if the 2nd step failure, please, [referer url](https://dolphinscheduler.apache.org/en-us/development/frontend-development.html)
3, if the 2nd step failure, please, [referer url](https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/en/contribute/frontend-development.md)
```
sudo npm rebuild node-sass
@ -489,7 +489,7 @@ A: 1, Edit project root dir maven config file, remove scope test property so tha
</dependency>
```
2, Edit application-dao.properties and quzrtz.properties config file to use mysql driver.
2, Edit application-dao.properties and quzrtz.properties config file to use mysql driver.
Default is postgresql driver because of license problem.
---
@ -498,7 +498,7 @@ Default is postgresql driver because of license problem.
A: 1, Where is the executed server? Specify one worker to run the task, you can create worker group in Security Center, then the task can be send to the particular worker. If a worker group have multiple servers, which server actually execute is determined by scheduling and has randomness.
2, If it is a shell file of a path on the server, how to point to the path? The server shell file, involving permissions issues, it is not recommended to do so. It is recommended that you use the storage function of the resource center, and then use the resource reference in the shell editor. The system will help you download the script to the execution directory. If the task dependent on resource center files, worker use "hdfs dfs -get" to get the resource files in HDFS, then run the task in /tmp/escheduler/exec/process, this path can be customized when installing dolphinscheduler.
2, If it is a shell file of a path on the server, how to point to the path? The server shell file, involving permissions issues, it is not recommended to do so. It is recommended that you use the storage function of the resource center, and then use the resource reference in the shell editor. The system will help you download the script to the execution directory. If the task dependent on resource center files, worker use "hdfs dfs -get" to get the resource files in HDFS, then run the task in /tmp/escheduler/exec/process, this path can be customized when installing dolphinscheduler.
3, Which user execute the task? Task is run by the tenant through "sudo -u ${tenant}", tenant is a linux user.
@ -559,7 +559,7 @@ A: 1, User changed the config api server config file and item
</p>
A: 1, Edit ngnix config file, edit upload max size client_max_body_size 1024m.
2, the version of Google Chrome is old, and the latest version of the browser has been updated.
2, the version of Google Chrome is old, and the latest version of the browser has been updated.
---
@ -597,9 +597,9 @@ If the ip address is obtained incorrectly, please check the network information.
You can use the three strategies provided by dolphinscheduler to get the available ip:
* default: First using internal network card to obtain the IP address, and then using external network card. If all above fail, use the address of the first available network card
* inner: Use the internal network card to obtain the ip address, if fails thrown an exception.
* outer: Use the external network card to obtain the ip address, if fails thrown an exception.
- default: First using internal network card to obtain the IP address, and then using external network card. If all above fail, use the address of the first available network card
- inner: Use the internal network card to obtain the ip address, if fails thrown an exception.
- outer: Use the external network card to obtain the ip address, if fails thrown an exception.
Modify the configuration in `common.properties`:

View File

@ -8,7 +8,7 @@ To prevent data loss by some miss-operation, it is recommended to back up data b
### Download the Latest Version Installation Package
Download the latest binary distribute package from [download](/en-us/download/download.html) and then put it in the different
Download the latest binary distribute package from [download](https://dolphinscheduler.apache.org/#/en-us/download) and then put it in the different
directory where current service running. And all below command is running in this directory.
## Start

View File

@ -12,7 +12,7 @@ If you are a new hand and want to experience DolphinScheduler functions, we reco
## Install DolphinScheduler
Please download the source code package `apache-dolphinscheduler-<version>-src.tar.gz`, download address: [download address](/en-us/download/download.html)
Please download the source code package `apache-dolphinscheduler-<version>-src.tar.gz`, download address: [download address](https://dolphinscheduler.apache.org/#/en-us/download)
To publish the release name `dolphinscheduler` version, please execute the following commands:
@ -410,7 +410,7 @@ common:
enabled: false
mountPath: "/opt/soft"
accessModes:
- "ReadWriteMany"
- "ReadWriteMany"
storageClassName: "-"
storage: "20Gi"
```
@ -436,7 +436,7 @@ common:
fsFileResourcePersistence:
enabled: true
accessModes:
- "ReadWriteMany"
- "ReadWriteMany"
storageClassName: "-"
storage: "20Gi"
```
@ -460,7 +460,7 @@ common:
FS_S3A_SECRET_KEY: "MINIO_SECRET_KEY"
```
Modify `BUCKET_NAME`, `MINIO_IP`, `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY` to actual environment values.
Modify `BUCKET_NAME`, `MINIO_IP`, `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY` to actual environment values.
> **Note**: `MINIO_IP` can only use IP instead of the domain name, because DolphinScheduler currently doesn't support S3 path style access.

View File

@ -8,13 +8,13 @@ If you are a new hand and want to experience DolphinScheduler functions, we reco
Pseudo-cluster deployment of DolphinScheduler requires external software support:
* JDKdownload [JDK][jdk] (1.8+), install and configure environment variable `JAVA_HOME` and append `bin` dir (included in `JAVA_HOME`) to `PATH` variable. You can skip this step if it already exists in your environment.
* Binary package: Download the DolphinScheduler binary package at [download page](https://dolphinscheduler.apache.org/en-us/download/download.html)
* Database: [PostgreSQL](https://www.postgresql.org/download/) (8.2.15+) or [MySQL](https://dev.mysql.com/downloads/mysql/) (5.7+), you can choose one of the two, such as MySQL requires JDBC Driver 8.0.16
* Registry Center: [ZooKeeper](https://zookeeper.apache.org/releases.html) (3.8.0+)[download link][zookeeper]
* Process tree analysis
* `pstree` for macOS
* `psmisc` for Fedora/Red/Hat/CentOS/Ubuntu/Debian
- JDKdownload [JDK][jdk] (1.8+), install and configure environment variable `JAVA_HOME` and append `bin` dir (included in `JAVA_HOME`) to `PATH` variable. You can skip this step if it already exists in your environment.
- Binary package: Download the DolphinScheduler binary package at [download page](https://dolphinscheduler.apache.org/#/en-us/download)
- Database: [PostgreSQL](https://www.postgresql.org/download/) (8.2.15+) or [MySQL](https://dev.mysql.com/downloads/mysql/) (5.7+), you can choose one of the two, such as MySQL requires JDBC Driver 8.0.16
- Registry Center: [ZooKeeper](https://zookeeper.apache.org/releases.html) (3.8.0+)[download link][zookeeper]
- Process tree analysis
- `pstree` for macOS
- `psmisc` for Fedora/Red/Hat/CentOS/Ubuntu/Debian
> **_Note:_** DolphinScheduler itself does not depend on Hadoop, Hive, Spark, but if you need to run tasks that depend on them, you need to have the corresponding environment support.
@ -42,8 +42,8 @@ chmod -R 755 apache-dolphinscheduler-*-bin
> **_NOTICE:_**
>
> * Due to DolphinScheduler's multi-tenant task switch user using command `sudo -u {linux-user}`, the deployment user needs to have `sudo` privileges and be password-free. If novice learners dont understand, you can ignore this point for now.
> * If you find the line "Defaults requirett" in the `/etc/sudoers` file, please comment the content.
> - Due to DolphinScheduler's multi-tenant task switch user using command `sudo -u {linux-user}`, the deployment user needs to have `sudo` privileges and be password-free. If novice learners dont understand, you can ignore this point for now.
> - If you find the line "Defaults requirett" in the `/etc/sudoers` file, please comment the content.
### Configure Machine SSH Password-Free Login
@ -99,12 +99,12 @@ deployUser="dolphinscheduler"
### Modify `dolphinscheduler_env.sh`
File `./bin/env/dolphinscheduler_env.sh` describes the following configurations:
File `./bin/env/dolphinscheduler_env.sh` describes the following configurations:
* Database configuration of DolphinScheduler, see [Initialize the Database](#initialize-the-database) for detailed instructions.
* Some tasks which need external dependencies or libraries such as `JAVA_HOME` and `SPARK_HOME`.
* Registry center `zookeeper`.
* Server related configuration, such as cache type, timezone, etc.
- Database configuration of DolphinScheduler, see [Initialize the Database](#initialize-the-database) for detailed instructions.
- Some tasks which need external dependencies or libraries such as `JAVA_HOME` and `SPARK_HOME`.
- Registry center `zookeeper`.
- Server related configuration, such as cache type, timezone, etc.
You could ignore the task external dependencies if you do not use those tasks, but you have to change `JAVA_HOME`, registry center and database
related configurations based on your environment.

View File

@ -11,8 +11,8 @@ If you want to deploy DolphinScheduler in production, we recommend you follow [c
## Preparation
* JDKdownload [JDK][jdk] (1.8+), install and configure environment variable `JAVA_HOME` and append `bin` dir (included in `JAVA_HOME`) to `PATH` variable. You can skip this step if it already exists in your environment.
* Binary package: download the DolphinScheduler binary package at [download page](https://dolphinscheduler.apache.org/en-us/download/download.html).
- JDKdownload [JDK][jdk] (1.8+), install and configure environment variable `JAVA_HOME` and append `bin` dir (included in `JAVA_HOME`) to `PATH` variable. You can skip this step if it already exists in your environment.
- Binary package: download the DolphinScheduler binary package at [download page](https://dolphinscheduler.apache.org/#/en-us/download).
## Start DolphinScheduler Standalone Server

View File

@ -45,14 +45,14 @@ modify docker-compose's free memory up to 4 GB.
- Hyper-V mode: Click `Docker Desktop -> Settings -> Resources -> Memory` modified it
- WSL 2 mode: see [WSL 2 utility VM](https://docs.microsoft.com/zh-cn/windows/wsl/wsl-config#configure-global-options-with-wslconfig) for more detail.
After complete the configuration, we can get the `docker-compose.yaml` file from [download page](/en-us/download/download.html)
After complete the configuration, we can get the `docker-compose.yaml` file from [download page](https://dolphinscheduler.apache.org/#/en-us/download)
form its source package, and make sure you get the right version. After download the package, you can run the commands as below.
```shell
$ DOLPHINSCHEDULER_VERSION=<version>
$ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.tar.gz
# Going to docker-compose's location
# For Mac or Linux users
# For Mac or Linux users
$ cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src/deploy/docker
# For Windows users, you should run command `cd apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src\deploy\docker`
@ -80,7 +80,7 @@ $ docker run -d --name dolphinscheduler-tools \
-e SPRING_DATASOURCE_USERNAME="<USER>" \
-e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
--net host \
apache/dolphinscheduler-tools:"${DOLPHINSCHEDULER_VERSION}" tools/bin/upgrade-schema.sh
apache/dolphinscheduler-tools:"${DOLPHINSCHEDULER_VERSION}" tools/bin/upgrade-schema.sh
# Starting DolphinScheduler service
$ docker run -d --name dolphinscheduler-master \
-e DATABASE="postgresql" \

View File

@ -12,7 +12,7 @@ To prevent data loss by some miss-operation, it is recommended to back up data b
### Download the Latest Version Installation Package
Download the latest binary distribute package from [download](/en-us/download/download.html) and then put it in the different
Download the latest binary distribute package from [download](https://dolphinscheduler.apache.org/#/en-us/download) and then put it in the different
directory where current service running. And all below command is running in this directory.
## Upgrade
@ -58,14 +58,14 @@ The architecture of worker group is different between version before version 1.3
#### How Can I Do When I Upgrade from 1.3.1 to version before 2.0.0
* Check the backup database, search records in table `t_ds_worker_group` table and mainly focus on three columns: `id, name and IP`.
- Check the backup database, search records in table `t_ds_worker_group` table and mainly focus on three columns: `id, name and IP`.
| id | name | ip_list |
|:---|:--------:|----------------------------:|
| 1 | service1 | 192.168.xx.10 |
| 2 | service2 | 192.168.xx.11,192.168.xx.12 |
* Modify worker related configuration in `bin/env/install_config.conf`.
- Modify worker related configuration in `bin/env/install_config.conf`.
Assume below are the machine worker service to be deployed:

View File

@ -4,7 +4,7 @@
### 1.名词解释
**DAG** 全称Directed Acyclic Graph简称DAG。工作流中的Task任务以有向无环图的形式组装起来从入度为零的节点进行拓扑遍历直到无后继节点为止。举例如下图
**DAG** 全称 Directed Acyclic Graph简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:
<p align="center">
<img src="../../../img/architecture-design/dag_examples.png" alt="dag示例" width="80%" />
@ -19,19 +19,19 @@
**任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态
**任务类型** 目前支持有SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS** 也是一个单独的流程定义,是可以单独启动执行的
**任务类型** 目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS** 也是一个单独的流程定义,是可以单独启动执行的
**调度方式:** 系统支持基于cron表达式的定时调度和手动调度。命令类型支持启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。其中 **恢复被容错的工作流****恢复等待线程** 两种命令类型是由调度内部控制使用,外部无法调用
**调度方式:** 系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。其中 **恢复被容错的工作流****恢复等待线程** 两种命令类型是由调度内部控制使用,外部无法调用
**定时调度**:系统采用 **quartz** 分布式调度器并同时支持cron表达式可视化的生成
**定时调度**:系统采用 **quartz** 分布式调度器,并同时支持 cron 表达式可视化的生成
**依赖**:系统不单单支持 **DAG** 简单的前驱和后继节点之间的依赖,同时还提供**任务依赖**节点,支持**流程间的自定义任务依赖**
**优先级** :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出
**邮件告警**:支持 **SQL任务** 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知
**邮件告警**:支持 **SQL 任务** 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知
**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务则同时Kill掉正在运行的并行任务流程失败结束
**失败策略**:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,**继续**是指不管并行运行任务的状态,直到流程失败结束。**结束**是指一旦发现失败任务,则同时 Kill 掉正在运行的并行任务,流程失败结束
**补数**:补历史数据,支持**区间并行和串行**两种补数方式
@ -48,53 +48,53 @@
#### 2.2 架构说明
* **MasterServer**
- **MasterServer**
MasterServer采用分布式无中心设计理念MasterServer主要负责 DAG 任务切分、任务提交监控并同时监听其它MasterServer和WorkerServer的健康状态。
MasterServer服务启动时向Zookeeper注册临时节点通过监听Zookeeper临时节点变化来进行容错处理。
MasterServer 采用分布式无中心设计理念MasterServer 主要负责 DAG 任务切分、任务提交监控,并同时监听其它 MasterServer WorkerServer 的健康状态。
MasterServer 服务启动时向 Zookeeper 注册临时节点,通过监听 Zookeeper 临时节点变化来进行容错处理。
##### 该服务内主要包含:
- **Distributed Quartz**分布式调度组件主要负责定时任务的启停操作当quartz调起任务后Master内部会有线程池具体负责处理任务的后续操作
- **Distributed Quartz**分布式调度组件,主要负责定时任务的启停操作,当 quartz 调起任务后Master 内部会有线程池具体负责处理任务的后续操作
- **MasterSchedulerThread**是一个扫描线程,定时扫描数据库中的 **command** 表,根据不同的**命令类型**进行不同的业务操作
- **MasterExecThread**主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理
- **MasterExecThread**主要是负责 DAG 任务切分、任务提交监控、各种不同命令类型的逻辑处理
- **MasterTaskExecThread**主要负责任务的持久化
* **WorkerServer**
- **WorkerServer**
WorkerServer也采用分布式无中心设计理念WorkerServer主要负责任务的执行和提供日志服务。WorkerServer服务启动时向Zookeeper注册临时节点并维持心跳。
WorkerServer 也采用分布式无中心设计理念WorkerServer 主要负责任务的执行和提供日志服务。WorkerServer 服务启动时向 Zookeeper 注册临时节点,并维持心跳。
##### 该服务包含:
- **FetchTaskThread**主要负责不断从**Task Queue**中领取任务,并根据不同任务类型调用**TaskScheduleThread**对应执行器。
* **ZooKeeper**
- **ZooKeeper**
ZooKeeper服务系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。另外系统还基于ZooKeeper进行事件监听和分布式锁。
我们也曾经基于Redis实现过队列不过我们希望DolphinScheduler依赖到的组件尽量地少所以最后还是去掉了Redis实现。
ZooKeeper 服务,系统中的 MasterServer WorkerServer 节点都通过 ZooKeeper 来进行集群管理和容错。另外系统还基于 ZooKeeper 进行事件监听和分布式锁。
我们也曾经基于 Redis 实现过队列,不过我们希望 DolphinScheduler 依赖到的组件尽量地少,所以最后还是去掉了 Redis 实现。
* **Task Queue**
- **Task Queue**
提供任务队列的操作目前队列也是基于Zookeeper来实现。由于队列中存的信息较少不必担心队列里数据过多的情况实际上我们压测过百万级数据存队列对系统稳定性和性能没影响。
提供任务队列的操作,目前队列也是基于 Zookeeper 来实现。由于队列中存的信息较少,不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性能没影响。
* **Alert**
- **Alert**
提供告警相关接口,接口主要包括两种类型的告警数据的存储、查询和通知功能。其中通知功能又有**邮件通知**和**SNMP(暂未实现)**两种。
* **API**
- **API**
API接口层主要负责处理前端UI层的请求。该服务统一提供RESTful api向外部提供请求服务。
API 接口层,主要负责处理前端 UI 层的请求。该服务统一提供 RESTful api 向外部提供请求服务。
接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂停、恢复、从该节点开始执行等等。
* **UI**
- **UI**
系统的前端页面,提供系统的各种可视化操作界面,详见 [快速开始](https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/about/introduction.html) 部分。
系统的前端页面,提供系统的各种可视化操作界面,详见 [快速开始](https://dolphinscheduler.apache.org/#/zh-cn/docs/3.1.2/about/introduction) 部分。
#### 2.3 架构设计思想
##### 一、去中心化vs中心化
##### 一、去中心化 vs 中心化
###### 中心化思想
@ -104,13 +104,13 @@
<img src="https://analysys.github.io/easyscheduler_docs_cn/images/master_slave.png" alt="master-slave角色" width="50%" />
</p>
- Master的角色主要负责任务分发并监督Slave的健康状态可以动态的将任务均衡到Slave上以致Slave节点不至于“忙死”或”闲死”的状态。
- Worker的角色主要负责任务的执行工作并维护和Master的心跳以便Master可以分配任务给Slave。
- Master 的角色主要负责任务分发并监督 Slave 的健康状态,可以动态的将任务均衡到 Slave 上,以致 Slave 节点不至于“忙死”或”闲死”的状态。
- Worker 的角色主要负责任务的执行工作并维护和 Master 的心跳,以便 Master 可以分配任务给 Slave。
中心化思想设计存在的问题:
- 一旦Master出现了问题则群龙无首整个集群就会崩溃。为了解决这个问题大多数Master/Slave架构模式都采用了主备Master的设计方案可以是热备或者冷备也可以是自动切换或手动切换而且越来越多的新系统都开始具备自动选举切换Master的能力,以提升系统的可用性。
- 另外一个问题是如果Scheduler在Master上虽然可以支持一个DAG中不同的任务运行在不同的机器上但是会产生Master的过负载。如果Scheduler在Slave上则一个DAG中所有的任务都只能在某一台机器上进行作业提交则并行任务比较多的时候Slave的压力可能会比较大。
- 一旦 Master 出现了问题,则群龙无首,整个集群就会崩溃。为了解决这个问题,大多数 Master/Slave 架构模式都采用了主备 Master 的设计方案,可以是热备或者冷备,也可以是自动切换或手动切换,而且越来越多的新系统都开始具备自动选举切换 Master 的能力,以提升系统的可用性。
- 另外一个问题是如果 Scheduler Master 上,虽然可以支持一个 DAG 中不同的任务运行在不同的机器上,但是会产生 Master 的过负载。如果 Scheduler Slave 上,则一个 DAG 中所有的任务都只能在某一台机器上进行作业提交则并行任务比较多的时候Slave 的压力可能会比较大。
###### 去中心化
@ -118,21 +118,22 @@
<img src="https://analysys.github.io/easyscheduler_docs_cn/images/decentralization.png" alt="去中心化" width="50%" />
</p>
- 在去中心化设计里通常没有Master/Slave的概念所有的角色都是一样的地位是平等的全球互联网就是一个典型的去中心化的分布式系统联网的任意节点设备down机都只会影响很小范围的功能。
- 在去中心化设计里,通常没有 Master/Slave 的概念,所有的角色都是一样的,地位是平等的,全球互联网就是一个典型的去中心化的分布式系统,联网的任意节点设备 down 机,都只会影响很小范围的功能。
- 去中心化设计的核心设计在于整个分布式系统中不存在一个区别于其他节点的”管理者”,因此不存在单点故障问题。但由于不存在” 管理者”节点所以每个节点都需要跟其他节点通信才得到必须要的机器信息,而分布式系统通信的不可靠性,则大大增加了上述功能的实现难度。
- 实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行"会议"来选举新的"管理者"去主持工作。最典型的案例就是ZooKeeper及Go语言实现的Etcd。
- DolphinScheduler的去中心化是Master/Worker注册到Zookeeper中实现Master集群和Worker集群无中心并使用Zookeeper分布式锁来选举其中的一台Master或Worker为“管理者”来执行任务。
- 实际上,真正去中心化的分布式系统并不多见。反而动态中心化分布式系统正在不断涌出。在这种架构下,集群中的管理者是被动态选择出来的,而不是预置的,并且集群在发生故障的时候,集群的节点会自发的举行"会议"来选举新的"管理者"去主持工作。最典型的案例就是 ZooKeeper Go 语言实现的 Etcd。
- DolphinScheduler 的去中心化是 Master/Worker 注册到 Zookeeper 中,实现 Master 集群和 Worker 集群无中心,并使用 Zookeeper 分布式锁来选举其中的一台 Master Worker 为“管理者”来执行任务。
##### 二、分布式锁实践
DolphinScheduler使用ZooKeeper分布式锁来实现同一时刻只有一台Master执行Scheduler或者只有一台Worker执行任务的提交。
DolphinScheduler 使用 ZooKeeper 分布式锁来实现同一时刻只有一台 Master 执行 Scheduler或者只有一台 Worker 执行任务的提交。
1. 获取分布式锁的核心流程算法如下
<p align="center">
<img src="../../../img/architecture-design/distributed_lock.png" alt="获取分布式锁流程" width="70%" />
</p>
2. DolphinScheduler中Scheduler线程分布式锁实现流程图
2. DolphinScheduler Scheduler 线程分布式锁实现流程图:
<p align="center">
<img src="../../../img/architecture-design/distributed_lock_procss.png" alt="获取分布式锁流程" />
@ -140,65 +141,65 @@ DolphinScheduler使用ZooKeeper分布式锁来实现同一时刻只有一台Mast
##### 三、线程不足循环等待问题
- 如果一个DAG中没有子流程则如果Command中的数据条数大于线程池设置的阈值则直接流程等待或失败。
- 如果一个大的DAG中嵌套了很多子流程如下图则会产生“死等”状态
- 如果一个 DAG 中没有子流程,则如果 Command 中的数据条数大于线程池设置的阈值,则直接流程等待或失败。
- 如果一个大的 DAG 中嵌套了很多子流程,如下图则会产生“死等”状态:
<p align="center">
<img src="../../../img/architecture-design/lack_thread.png" alt="线程不足循环等待问题" width="70%" />
</p>
上图中MainFlowThread等待SubFlowThread1结束SubFlowThread1等待SubFlowThread2结束 SubFlowThread2等待SubFlowThread3结束而SubFlowThread3等待线程池有新线程则整个DAG流程不能结束从而其中的线程也不能释放。这样就形成的子父流程循环等待的状态。此时除非启动新的Master来增加线程来打破这样的”僵局”否则调度集群将不能再使用。
对于启动新Master来打破僵局似乎有点差强人意于是我们提出了以下三种方案来降低这种风险
对于启动新 Master 来打破僵局,似乎有点差强人意,于是我们提出了以下三种方案来降低这种风险:
1. 计算所有Master的线程总和然后对每一个DAG需要计算其需要的线程数也就是在DAG流程执行之前做预计算。因为是多Master线程池所以总线程数不太可能实时获取。
2. 对单Master线程池进行判断如果线程池已经满了则让线程直接失败。
3. 增加一种资源不足的Command类型如果线程池不足则将主流程挂起。这样线程池就有了新的线程可以让资源不足挂起的流程重新唤醒执行。
1. 计算所有 Master 的线程总和,然后对每一个 DAG 需要计算其需要的线程数,也就是在 DAG 流程执行之前做预计算。因为是多 Master 线程池,所以总线程数不太可能实时获取。
2. 对单 Master 线程池进行判断,如果线程池已经满了,则让线程直接失败。
3. 增加一种资源不足的 Command 类型,如果线程池不足,则将主流程挂起。这样线程池就有了新的线程,可以让资源不足挂起的流程重新唤醒执行。
注意Master Scheduler线程在获取Command的时候是FIFO的方式执行的。
注意Master Scheduler 线程在获取 Command 的时候是 FIFO 的方式执行的。
于是我们选择了第三种方式来解决线程不足的问题。
##### 四、容错设计
容错分为服务宕机容错和任务重试服务宕机容错又分为Master容错和Worker容错两种情况
容错分为服务宕机容错和任务重试,服务宕机容错又分为 Master 容错和 Worker 容错两种情况
###### 1. 宕机容错
服务容错设计依赖于ZooKeeper的Watcher机制实现原理如图
服务容错设计依赖于 ZooKeeper Watcher 机制,实现原理如图:
<p align="center">
<img src="../../../img/architecture-design/fault-tolerant.png" alt="DolphinScheduler容错设计" width="70%" />
</p>
其中Master监控其他Master和Worker的目录如果监听到remove事件则会根据具体的业务逻辑进行流程实例容错或者任务实例容错。
- Master容错流程图
- Master 容错流程图:
<p align="center">
<img src="../../../img/architecture-design/fault-tolerant_master.png" alt="Master容错流程图" width="70%" />
</p>
ZooKeeper Master容错完成之后则重新由DolphinScheduler中Scheduler线程调度遍历 DAG 找到”正在运行”和“提交成功”的任务对”正在运行”的任务监控其任务实例的状态对”提交成功”的任务需要判断Task Queue中是否已经存在如果存在则同样监控任务实例的状态如果不存在则重新提交任务实例。
- Worker容错流程图
- Worker 容错流程图:
<p align="center">
<img src="../../../img/architecture-design/fault-tolerant_worker.png" alt="Worker容错流程图" width="70%" />
</p>
Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。
Master Scheduler 线程一旦发现任务实例为” 需要容错”状态,则接管任务并进行重新提交。
注意:由于” 网络抖动”可能会使得节点短时间内失去和ZooKeeper的心跳从而发生节点的remove事件。对于这种情况我们使用最简单的方式那就是节点一旦和ZooKeeper发生超时连接则直接将Master或Worker服务停掉。
注意:由于” 网络抖动”可能会使得节点短时间内失去和 ZooKeeper 的心跳,从而发生节点的 remove 事件。对于这种情况,我们使用最简单的方式,那就是节点一旦和 ZooKeeper 发生超时连接,则直接将 Master Worker 服务停掉。
###### 2.任务失败重试
这里首先要区分任务失败重试、流程失败恢复、流程失败重跑的概念:
- 任务失败重试是任务级别的是调度系统自动进行的比如一个Shell任务设置重试次数为3次那么在Shell任务运行失败后会自己再最多尝试运行3次
- 任务失败重试是任务级别的,是调度系统自动进行的,比如一个 Shell 任务设置重试次数为 3 次,那么在 Shell 任务运行失败后会自己再最多尝试运行 3
- 流程失败恢复是流程级别的,是手动进行的,恢复是从只能**从失败的节点开始执行**或**从当前节点开始执行**
- 流程失败重跑也是流程级别的,是手动进行的,重跑是从开始节点进行
接下来说正题,我们将工作流中的任务节点分了两种类型。
- 一种是业务节点这种节点都对应一个实际的脚本或者处理语句比如Shell节点MR节点、Spark节点、依赖节点等。
- 一种是业务节点,这种节点都对应一个实际的脚本或者处理语句,比如 Shell 节点MR 节点、Spark 节点、依赖节点等。
- 还有一种是逻辑节点,这种节点不做实际的脚本或语句处理,只是整个流程流转的逻辑处理,比如子流程节点等。
@ -211,32 +212,32 @@ Master Scheduler线程一旦发现任务实例为” 需要容错”状态,则
在早期调度设计中,如果没有优先级设计,采用公平调度设计的话,会遇到先行提交的任务可能会和后继提交的任务同时完成的情况,而不能做到设置流程或者任务的优先级,因此我们对此进行了重新设计,目前我们设计如下:
- 按照**不同流程实例优先级**优先于**同一个流程实例优先级**优先于**同一流程内任务优先级**优先于**同一流程内任务**提交顺序依次从高到低进行任务处理。
- 具体实现是根据任务实例的json解析优先级然后把**流程实例优先级_流程实例id_任务优先级_任务id**信息保存在ZooKeeper任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务
- 其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理这个可以在流程启动或者定时启动时配置共有5级依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图
- 具体实现是根据任务实例的 json 解析优先级,然后把**流程实例优先级*流程实例 id*任务优先级\_任务 id**信息保存在 ZooKeeper 任务队列中,当从任务队列获取的时候,通过字符串比较即可得出最需要优先执行的任务
- 其中流程定义的优先级是考虑到有些流程需要先于其他流程进行处理,这个可以在流程启动或者定时启动时配置,共有 5 级,依次为 HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图
<p align="center">
<img src="https://analysys.github.io/easyscheduler_docs_cn/images/process_priority.png" alt="流程优先级配置" width="40%" />
</p>
- 任务的优先级也分为5级依次为HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图
- 任务的优先级也分为 5 级,依次为 HIGHEST、HIGH、MEDIUM、LOW、LOWEST。如下图
<p align="center">
<img src="https://analysys.github.io/easyscheduler_docs_cn/images/task_priority.png" alt="任务优先级配置" width="35%" />
</p>
##### 六、Logback和gRPC实现日志访问
##### 六、Logback gRPC 实现日志访问
- 由于Web(UI)和Worker不一定在同一台机器上所以查看日志不能像查询本地文件那样。有两种方案
- 将日志放到ES搜索引擎上
- 通过gRPC通信获取远程日志信息
- 介于考虑到尽可能的DolphinScheduler的轻量级性所以选择了gRPC实现远程访问日志信息。
- 由于 Web(UI)和 Worker 不一定在同一台机器上,所以查看日志不能像查询本地文件那样。有两种方案:
- 将日志放到 ES 搜索引擎上
- 通过 gRPC 通信获取远程日志信息
- 介于考虑到尽可能的 DolphinScheduler 的轻量级性,所以选择了 gRPC 实现远程访问日志信息。
<p align="center">
<img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png" alt="grpc远程访问" width="60%" />
</p>
- 我们使用自定义Logback的FileAppender和Filter功能实现每个任务实例生成一个日志文件。
- FileAppender主要实现如下
- 我们使用自定义 Logback FileAppender Filter 功能,实现每个任务实例生成一个日志文件。
- FileAppender 主要实现如下:
```java
/**
@ -264,11 +265,11 @@ public class TaskLogAppender extends FileAppender<ILoggingEvent> {
}
```
以/流程定义id/流程实例id/任务实例id.log的形式生成日志
以/流程定义 id/流程实例 id/任务实例 id.log 的形式生成日志
- 过滤匹配以TaskLogInfo开始的线程名称
- 过滤匹配以 TaskLogInfo 开始的线程名称:
- TaskLogFilter实现如下
- TaskLogFilter 实现如下:
```java
/**
@ -288,5 +289,4 @@ public class TaskLogFilter extends Filter<ILoggingEvent> {
### 总结
本文从调度出发,初步介绍了大数据分布式工作流调度系统--DolphinScheduler的架构原理及实现思路。未完待续
本文从调度出发,初步介绍了大数据分布式工作流调度系统--DolphinScheduler 的架构原理及实现思路。未完待续

View File

@ -1,15 +1,15 @@
# 参与社区 review
贡献 DolphinScheduler 的方式,除了向 [团队](/us-en/community/community.html) 中提到的 GitHub 仓库提交 Issues 和 pull requests 外,另一非常重要的方式是
贡献 DolphinScheduler 的方式,除了向 [团队](https://dolphinscheduler.apache.org/#/zh-cn/community) 中提到的 GitHub 仓库提交 Issues 和 pull requests 外,另一非常重要的方式是
review 社区的 Issues 或者 Pull Requests。通过别人 Issues 和 Pull Requests你不仅能知道社区的最新进展和发展方向还能了解别人代码的设
计思想,同时可以增加自己在社区的曝光、积累自己在社区的荣誉值。
任何人都被鼓励去 review 社区的 Issues 和 Pull Requests。我们还曾经发起过一个 Help Wanted 的邮件讨论,向社区征求贡献者协助 review Issues
任何人都被鼓励去 review 社区的 Issues 和 Pull Requests。我们还曾经发起过一个 Help Wanted 的邮件讨论,向社区征求贡献者协助 review Issues
以及 Pull Requests详见 [邮件][mail-review-wanted],并将其结果放到了 [GitHub Discussion][discussion-result-review-wanted] 中。
> 注意: 这里并不是说只有 [GitHub Discussion][discussion-result-review-wanted] 中提及的用户才可以协助 review Issue 或者 Pull Requests
> 请记住社区的主张是 **任何人都被鼓励去 review 社区的 Issues 和 Pull Requests**。只是那部分用户在邮件列表意见征集的时候,表达了愿意付
> 出更多的时间,参与社区的 review。另一个好处是当社区有不确定的问题的时除了可以找 [团队](/us-en/community/community.html) 中对应的 Members 外,还可以找
> 请记住社区的主张是 **任何人都被鼓励去 review 社区的 Issues 和 Pull Requests**。只是那部分用户在邮件列表意见征集的时候,表达了愿意付
> 出更多的时间,参与社区的 review。另一个好处是当社区有不确定的问题的时除了可以找 [团队](https://dolphinscheduler.apache.org/#/zh-cn/community) 中对应的 Members 外,还可以找
> [GitHub Discussion][discussion-result-review-wanted] 中提及的人解答对应的问题。如果你要想要加入到 [GitHub Discussion][discussion-result-review-wanted]
> 中,请在该 discussion 中评论并留下你感兴趣的模块,维护者会将你加入到对应的名单中。
@ -33,16 +33,16 @@ Review Issues 是指在 GitHub 中参与 [Issues][all-issues] 的讨论,并在
| 标签 | 标签代表的情况 |
|------------------------------------------|-----------------------|
| [UI][label-UI] | UI以及前端相关的 Issue |
| [UI][label-ui] | UI 以及前端相关的 Issue |
| [security][label-security] | 安全相关的 Issue |
| [user experience][label-user-experience] | 用户体验相关的 Issue |
| [development][label-development] | 开发者相关的 Issue |
| [Python][label-Python] | Python相关的 Issue |
| [Python][label-python] | Python 相关的 Issue |
| [plug-in][label-plug-in] | 插件相关的 Issue |
| [document][label-document] | 文档相关的 Issue |
| [docker][label-docker] | docker相关的 Issue |
| [docker][label-docker] | docker 相关的 Issue |
| [need verify][label-need-verify] | Issue 需要被验证 |
| [e2e][label-e2e] | e2e相关的 Issue |
| [e2e][label-e2e] | e2e 相关的 Issue |
| [win-os][label-win-os] | windows 操作系统相关的 Issue |
| [suggestion][label-suggestion] | Issue 为项目提出了建议 |
@ -58,18 +58,18 @@ Review Issues 是指在 GitHub 中参与 [Issues][all-issues] 的讨论,并在
在阅读以下内容是,请确保你已经为 Issue 打了标签。
* 回复后及时去掉标签[Waiting for reply][label-waiting-for-reply]:在 [创建 Issue 的时候][issue-choose],我们会为 Issue 打上特定的标签
- 回复后及时去掉标签[Waiting for reply][label-waiting-for-reply]:在 [创建 Issue 的时候][issue-choose],我们会为 Issue 打上特定的标签
[Waiting for reply][label-waiting-for-reply],方便定位还没有被回复的 Issue所以当你 review 了 Issue 之后,就需要将标签
[Waiting for reply][label-waiting-for-reply] 及时的从 Issue 中删除。
* 打上 [Waiting for review][label-waiting-for-review] 标当你不确定这个 Issue 是否被解决:当你查阅了 Issue 后,会有两个情况出现。一是
问题已经被定位或解决,如果创建 Pull Requests 的话,则参考 [创建PR](./submit-code.md)。二是你也不确定这个问题是否真的是
- 打上 [Waiting for review][label-waiting-for-review] 标当你不确定这个 Issue 是否被解决:当你查阅了 Issue 后,会有两个情况出现。一是
问题已经被定位或解决,如果创建 Pull Requests 的话,则参考 [创建 PR](./submit-code.md)。二是你也不确定这个问题是否真的是
被解决,这时你可以为 Issue 打上 [Waiting for review][label-waiting-for-review] 标签,并在 Issue 中 `@` 对应的人进行二次确认
当 Issue 需要被创建 Pull Requests 解决,也可以视情况打上部分标签
| 标签 | 标签代表的PR |
| 标签 | 标签代表的 PR |
|--------------------------------------------|------------------|
| [Chore][label-Chore] | 日常维护工作 |
| [Chore][label-chore] | 日常维护工作 |
| [Good first issue][label-good-first-issue] | 适合首次贡献者解决的 Issue |
| [easy to fix][label-easy-to-fix] | 比较容易解决 |
| [help wanted][label-help-wanted] | 向社区寻求帮忙 |
@ -80,11 +80,13 @@ Review Issues 是指在 GitHub 中参与 [Issues][all-issues] 的讨论,并在
### Pull Requests
<!-- markdown-link-check-disable -->
Review Pull 是指在 GitHub 中参与 [Pull Requests][all-PRs] 的讨论,并在对应的 Pull Requests 给出建议。DolphinScheduler review
Review Pull 是指在 GitHub 中参与 [Pull Requests][all-prs] 的讨论,并在对应的 Pull Requests 给出建议。DolphinScheduler review
Pull Requests 与 [GitHub 的 reviewing changes in pull requests][gh-review-pr] 一样。你可以为 Pull Requests 提出自己的-->
* 当你认为这个 Pull Requests 没有问题,可以被合并的时候,可以根据 [GitHub 的 reviewing changes in pull requests][gh-review-pr] 的
- 当你认为这个 Pull Requests 没有问题,可以被合并的时候,可以根据 [GitHub 的 reviewing changes in pull requests][gh-review-pr] 的
approve 流程同意这个 Pull Requests。
* 当你觉得这个 Pull Requests 需要被修改时,可以根据 [GitHub 的 reviewing changes in pull requests][gh-review-pr] 的 comment
- 当你觉得这个 Pull Requests 需要被修改时,可以根据 [GitHub 的 reviewing changes in pull requests][gh-review-pr] 的 comment
流程评论这个 Pull Requests。当你认为存在一定要先修复才能合并的问题请参照 [GitHub 的 reviewing changes in pull requests][gh-review-pr]
的 Request changes 流程要求贡献者修改 Pull Requests 的内容。
@ -115,15 +117,15 @@ Pull Requests 与 [GitHub 的 reviewing changes in pull requests][gh-review-pr]
[label-waiting-for-review]: https://github.com/apache/dolphinscheduler/labels/Waiting%20for%20review
[label-user-experience]: https://github.com/apache/dolphinscheduler/labels/user%20experience
[label-development]: https://github.com/apache/dolphinscheduler/labels/development
[label-UI]: https://github.com/apache/dolphinscheduler/labels/UI
[label-ui]: https://github.com/apache/dolphinscheduler/labels/UI
[label-suggestion]: https://github.com/apache/dolphinscheduler/labels/suggestion
[label-security]: https://github.com/apache/dolphinscheduler/labels/security
[label-Python]: https://github.com/apache/dolphinscheduler/labels/Python
[label-python]: https://github.com/apache/dolphinscheduler/labels/Python
[label-plug-in]: https://github.com/apache/dolphinscheduler/labels/plug-in
[label-document]: https://github.com/apache/dolphinscheduler/labels/document
[label-docker]: https://github.com/apache/dolphinscheduler/labels/docker
[label-all-list]: https://github.com/apache/dolphinscheduler/labels
[label-Chore]: https://github.com/apache/dolphinscheduler/labels/Chore
[label-chore]: https://github.com/apache/dolphinscheduler/labels/Chore
[label-good-first-issue]: https://github.com/apache/dolphinscheduler/labels/good%20first%20issue
[label-help-wanted]: https://github.com/apache/dolphinscheduler/labels/help%20wanted
[label-easy-to-fix]: https://github.com/apache/dolphinscheduler/labels/easy%20to%20fix
@ -137,6 +139,6 @@ Pull Requests 与 [GitHub 的 reviewing changes in pull requests][gh-review-pr]
[label-need-verify]: https://github.com/apache/dolphinscheduler/labels/need%20to%20verify
[issue-choose]: https://github.com/apache/dolphinscheduler/issues/new/choose
[all-issues]: https://github.com/apache/dolphinscheduler/issues
[all-PRs]: https://github.com/apache/dolphinscheduler/pulls
[all-prs]: https://github.com/apache/dolphinscheduler/pulls
[gh-review-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews

View File

@ -11,16 +11,16 @@
```shell
# 需要 JDK 1.8 及以上的版本
java -version
# 需要 Maven
# 需要 Maven
mvn -version
```
### GPG设置
### GPG 设置
#### 安装GPG
#### 安装 GPG
在[GnuPG官网](https://www.gnupg.org/download/index.html)下载安装包。
GnuPG的1.x版本和2.x版本的命令有细微差别下列说明以`GnuPG-2.1.23`版本为例。
在[GnuPG 官网](https://www.gnupg.org/download/index.html)下载安装包。
GnuPG 1.x 版本和 2.x 版本的命令有细微差别,下列说明以`GnuPG-2.1.23`版本为例。
安装完成后,执行以下命令查看版本号。
@ -28,9 +28,9 @@ GnuPG的1.x版本和2.x版本的命令有细微差别下列说明以`GnuPG-2.
gpg --version
```
#### 创建key
#### 创建 key
安装完成后执行以下命令创建key。
安装完成后,执行以下命令创建 key。
`GnuPG-2.x`可使用:
@ -44,7 +44,7 @@ gpg --full-gen-key
gpg --gen-key
```
根据提示完成key**注意请使用Apache mail 和 对应的密码生成GPG的Key。**
根据提示完成 key**注意:请使用 Apache mail 和 对应的密码生成 GPG Key。**
```shell
gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
@ -89,9 +89,9 @@ gpg: cancelled by user
gpg: Key generation canceled.
```
需要使用自己的用户登录服务器而不是root切到自己的账户
需要使用自己的用户登录服务器,而不是 root 切到自己的账户
#### 查看生成的key
#### 查看生成的 key
```shell
gpg --list-keys
@ -105,7 +105,7 @@ uid ${用户名} (${注释}) <{邮件地址}>
sub 4096R/A63BC462 2019-11-15
```
其中85E11560为公钥ID。
其中 85E11560 为公钥 ID。
#### 将公钥同步到服务器
@ -119,7 +119,7 @@ gpg --keyserver hkp://pool.sks-keyservers.net --send-key 85E11560
注意:如果同步到公钥服务器,可以在服务器上查到新建的公钥
http://keyserver.ubuntu.com:11371/pks/lookup?search=${用户名}&fingerprint=on&op=index
备用公钥服务器 gpg --keyserver hkp://keyserver.ubuntu.com --send-key ${公钥ID}
备用公钥服务器 gpg --keyserver hkp://keyserver.ubuntu.com --send-key ${公钥 ID}
### 配置 Apache Maven Central Repository
@ -157,14 +157,14 @@ http://keyserver.ubuntu.com:11371/pks/lookup?search=${用户名}&fingerprint=on&
### 配置环境变量
我们将多次使用发布版本 `VERSION`github名称 `GH_USERNAME`,以及 Apache 用户名 `<YOUR-APACHE-USERNAME>`因此最好将其存储到bash变量中以便于使用。
我们将多次使用发布版本 `VERSION`github 名称 `GH_USERNAME`,以及 Apache 用户名 `<YOUR-APACHE-USERNAME>`,因此最好将其存储到 bash 变量中以便于使用。
```shell
VERSION=<THE-VERSION-YOU-RELEASE>
SOURCE_CODE_DIR=<YOUR-SOURCE-CODE-ROOT-DIR> # the directory of your source code hold, the location of parent pom.xml instead of binary package
SOURCE_CODE_DIR=<YOUR-SOURCE-CODE-ROOT-DIR> # the directory of your source code hold, the location of parent pom.xml instead of binary package
GH_USERNAME=<YOUR-GITHUB-USERNAME>
GH_REMOTE=<GITHUB-REMOTE> # we use `upstream` or `origin` mostly base on your release environment
GH_REMOTE=<GITHUB-REMOTE> # we use `upstream` or `origin` mostly base on your release environment
A_USERNAME=<YOUR-APACHE-USERNAME>
SVN_DIR=<PATH-TO-SVN-ROOT> # to keep binary package checkout from SVN, the sub path end with `/dolphinscheduler/dev` and `/dolphinscheduler/release` will be create
@ -183,13 +183,13 @@ SVN_DIR=<PATH-TO-SVN-ROOT> # to keep binary package checkout from SVN, the sub
- `dolphinscheduler_mysql.sql`: `t_ds_version` 版本更新为 x.y.z
- `dolphinscheduler_postgre.sql`: `t_ds_version` 版本更新为 x.y.z
- `dolphinscheduler_h2.sql`: `t_ds_version` 版本更新为 x.y.z
- `upgrade`: 是否新增 `x.y.z_schema` 文件夹如果有一些升级的DDL或DML如果没有添加任何DDL或DML可以跳过这一步。
- `upgrade`: 是否新增 `x.y.z_schema` 文件夹,如果有一些升级的 DDL DML如果没有添加任何 DDL DML 可以跳过这一步。
- `soft_version`: 版本更新为 x.y.z
- `deploy/docker/.env`: `HUB` 改为 `apache``TAG` 改为 `x.y.z`
- `deploy/kubernetes/dolphinscheduler`:
- `Chart.yaml`: `appVersion``version` 版本更新为 x.y.z
- `values.yaml`: `image.tag` 版本更新为 x.y.z
- 修改文档docs模块中的版本号:
- 修改文档docs 模块)中的版本号:
- 将 `docs` 文件夹下文件的占位符 `<version>` (除了 pom.xml 相关的) 修改成 `x.y.z`
- 新增历史版本
- `docs/docs/en/history-versions.md``docs/docs/zh/history-versions.md`: 增加新的历史版本为 `x.y.z`
@ -218,9 +218,9 @@ git push "${GH_REMOTE}" "${VERSION}"-release
mvn release:prepare -Prelease -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true -Dspotless.check.skip=true" -DautoVersionSubmodules=true -DdryRun=true -Dusername="${GH_USERNAME}"
```
* `-Prelease`: 选择release的profile这个profile会打包所有源码、jar文件以及可执行二进制包。
* `-DautoVersionSubmodules=true`: 作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。
* `-DdryRun=true`: 演练即不产生版本号提交不生成新的tag。
- `-Prelease`: 选择 release 的 profile这个 profile 会打包所有源码、jar 文件以及可执行二进制包。
- `-DautoVersionSubmodules=true`: 作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。
- `-DdryRun=true`: 演练,即不产生版本号提交,不生成新的 tag。
#### 准备发布
@ -238,12 +238,12 @@ mvn release:prepare -Prelease -Darguments="-Dmaven.test.skip=true -Dcheckstyle.s
和上一步演练的命令基本相同,去掉了 `-DdryRun=true` 参数。
* `-DpushChanges=false`:不要将修改后的版本号和tag自动提交至GitHub。
- `-DpushChanges=false`:不要将修改后的版本号和 tag 自动提交至 GitHub。
> 注意:如果你遇到来自 git 的类似 **Please tell me who you are.** 错误信息。您可以通过命令 `git config --global user.email "you@example.com"`
> 和 `git config --global user.name "Your Name"` 来配置你的用户名和邮箱如果你遇到一些错误。
将本地文件检查无误后提交至github。
将本地文件检查无误后,提交至 github。
```shell
git push -u "${GH_REMOTE}" "${VERSION}"-release
@ -252,10 +252,10 @@ git push "${GH_REMOTE}" --tags
<!-- markdown-link-check-disable -->
> 注意1因为 Github 不再支持在 HTTPS 协议中使用原生密码在,所以在这一步你应该使用 github token 作为密码。你可以通过 https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
> 注意 1因为 Github 不再支持在 HTTPS 协议中使用原生密码在,所以在这一步你应该使用 github token 作为密码。你可以通过 https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
> 了解更多如果创建 token 的信息。
>
> 注意2命令完成后会自动创建 `release.properties` 文件和 `*.Backup` 文件,它们在下面的命令中是需要的,不要删除它们
> 注意 2命令完成后会自动创建 `release.properties` 文件和 `*.Backup` 文件,它们在下面的命令中是需要的,不要删除它们
<!-- markdown-link-check-enable -->
@ -265,13 +265,13 @@ git push "${GH_REMOTE}" --tags
mvn release:perform -Prelease -Darguments="-Dmaven.test.skip=true -Dcheckstyle.skip=true -Dmaven.javadoc.skip=true -Dspotless.check.skip=true" -DautoVersionSubmodules=true -Dusername="${GH_USERNAME}"
```
执行完该命令后待发布版本会自动上传到Apache的临时筹备仓库(staging repository)。你可以通过访问 [apache staging repositories](https://repository.apache.org/#stagingRepositories)
, 然后使用Apache的LDAP账户登录后就会看到上传的版本`Repository` 列的内容即为 `${STAGING.REPOSITORY}`
点击 `Close` 来告诉Nexus这个构建已经完成只有这样该版本才是可用的。如果电子签名等出现问题`Close` 会失败,可以通过 `Activity` 查看失败信息。
执行完该命令后,待发布版本会自动上传到 Apache 的临时筹备仓库(staging repository)。你可以通过访问 [apache staging repositories](https://repository.apache.org/#stagingRepositories)
, 然后使用 Apache LDAP 账户登录后,就会看到上传的版本,`Repository` 列的内容即为 `${STAGING.REPOSITORY}`
点击 `Close` 来告诉 Nexus 这个构建已经完成,只有这样该版本才是可用的。如果电子签名等出现问题,`Close` 会失败,可以通过 `Activity` 查看失败信息。
### SVN
#### 检出dolphinscheduler发布目录
#### 检出 dolphinscheduler 发布目录
我们还需要将 Dolphinscheduler 开发版本目录检出到本地,并且
@ -308,9 +308,9 @@ svn --username="${A_USERNAME}" commit -m "new key <YOUR-GPG-KEY-ID> add"
> 注意:这个步骤需要一定的时间去 checkout 特别是在你第一次 checkout 的时候,因为这个库比较大,且这个操作需要 checkout 出全部文件
#### 将待发布的内容添加至SVN目录
#### 将待发布的内容添加至 SVN 目录
按版本号创建文件夹将源码包、二进制包、可执行二进制包移动到SVN工作目录。
按版本号创建文件夹,将源码包、二进制包、可执行二进制包移动到 SVN 工作目录。
```shell
mkdir -p "${SVN_DIR_DEV}/${VERSION}"
@ -340,7 +340,7 @@ svn --username="${A_USERNAME}" commit -m "release ${VERSION}"
> `gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-"${VERSION}"-bin.tar.gz`
> `gpg --armor --detach-sign --digest-algo=SHA512 apache-dolphinscheduler-"${VERSION}"-src.tar.gz` 将创建它们
将源码包和二进制包添加至SVN工作目录。
将源码包和二进制包添加至 SVN 工作目录。
### 检查发布文件内容
@ -348,12 +348,12 @@ svn --username="${A_USERNAME}" commit -m "release ${VERSION}"
解压缩`apache-dolphinscheduler-<VERSION>-src.tar.gz`,进行如下检查:
- 检查源码包是否包含由于包含不必要文件致使tarball过于庞大
- 检查源码包是否包含由于包含不必要文件,致使 tarball 过于庞大
- 存在`LICENSE`和`NOTICE`文件
- 只存在文本文件,不存在二进制文件
- 所有文件的开头都有ASF许可证
- 所有文件的开头都有 ASF 许可证
- 能够正确编译,单元测试可以通过 (mvn install)
- 版本内容与GitHub上tag的内容相符 (diff -r a verify_dir tag_dir)
- 版本内容与 GitHub tag 的内容相符 (diff -r a verify_dir tag_dir)
- 检查是否有多余文件或文件夹,例如空文件夹等
#### 检查二进制包的文件内容
@ -361,12 +361,12 @@ svn --username="${A_USERNAME}" commit -m "release ${VERSION}"
解压缩`apache-dolphinscheduler-<VERSION>-src.tar.gz`进行如下检查:
- 存在`LICENSE`和`NOTICE`文件
- 所有文本文件开头都有ASF许可证
- 所有文本文件开头都有 ASF 许可证
- 检查第三方依赖许可证:
- 第三方依赖的许可证兼容
- 所有第三方依赖的许可证都在`LICENSE`文件中声明
- 依赖许可证的完整版全部在`license`目录
- 如果依赖的是Apache许可证并且存在`NOTICE`文件,那么这些`NOTICE`文件也需要加入到版本的`NOTICE`文件中
- 如果依赖的是 Apache 许可证并且存在`NOTICE`文件,那么这些`NOTICE`文件也需要加入到版本的`NOTICE`文件中
## 发起投票
@ -381,8 +381,8 @@ changelog.
### 投票阶段
DolphinScheduler社区投票发起投票邮件到`dev@dolphinscheduler.apache.org`。PMC需要先按照文档检查版本的正确性然后再进行投票。 经过
至少72小时并统计到至少3个`+1 并且没有-1 PMC member`票后,即可进入下一阶段。
DolphinScheduler 社区投票,发起投票邮件到`dev@dolphinscheduler.apache.org`。PMC 需要先按照文档检查版本的正确性,然后再进行投票。 经过
至少 72 小时并统计到至少 3 个`+1 并且没有-1 PMC member`票后,即可进入下一阶段。
宣布投票结果,发起投票结果邮件到`dev@dolphinscheduler.apache.org`。
@ -415,7 +415,7 @@ Release Commit ID: https://github.com/apache/dolphinscheduler/commit/<SHA-VALUE>
Keys to verify the Release Candidate: https://downloads.apache.org/dolphinscheduler/KEYS
Look at here for how to verify this release candidate: https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/contribute/release/release.html
Look at here for how to verify this release candidate: https://dolphinscheduler.apache.org/#/zh-cn/docs/3.1.2/contribute/release/release
The vote will be open for at least 72 hours or until necessary number of votes are reached.
@ -470,7 +470,7 @@ svn mv -m "release ${VERSION}" https://dist.apache.org/repos/dist/dev/dolphinsch
# remove old release directory
svn delete -m "remove old release" https://dist.apache.org/repos/dist/release/dolphinscheduler/<PREVIOUS-RELEASE-VERSION>
# Remove prepare branch
# Remove prepare branch
cd "${SOURCE_CODE_DIR}"
git push --delete "${GH_REMOTE}" "${VERSION}-prepare"
```
@ -479,7 +479,7 @@ git push --delete "${GH_REMOTE}" "${VERSION}-prepare"
### 更新文档
官网应该在您发送通知邮件之前完成更新,本节将告诉您如何更改网站。假设发版的版本是 `<VERSION>`需要进行以下更新注意当修改pull requests 被 merge 后就会生效):
官网应该在您发送通知邮件之前完成更新,本节将告诉您如何更改网站。假设发版的版本是 `<VERSION>`,需要进行以下更新(注意,当修改 pull requests 被 merge 后就会生效):
- **apache/dolphinscheduler-website** 仓库:
- `download/en-us/download.md``download/zh-cn/download.md`: 增加 `<VERSION>` 版本发布包的下载
@ -525,7 +525,7 @@ docker push apache/dolphinscheduler-api:"${VERSION}"
docker push apache/dolphinscheduler-alert-server:"${VERSION}"
```
> 注意推送到dockerhub必须有dockerhub的Apache组织权限。 如果你不需要,你需要向 Apache infra Jira 申请。 您可以参考
> 注意:推送到 dockerhub必须有 dockerhub Apache 组织权限。 如果你不需要,你需要向 Apache infra Jira 申请。 您可以参考
> [此处](https://issues.apache.org/jira/projects/INFRA/issues/INFRA-23314)提交申请
>
> 如果您确保 docker image 正常工作,您也可以通过单个命令构建和推送 docker
@ -564,7 +564,7 @@ Dolphin Scheduler is a distributed and easy-to-extend visual workflow scheduler
dedicated to solving the complex task dependencies in data processing, making the scheduler system out of the box for data processing.
Download Links: https://dolphinscheduler.apache.org/en-us/download/download.html
Download Links: https://dolphinscheduler.apache.org/#/zh-cn/download
Release Notes: https://github.com/apache/dolphinscheduler/releases/tag/<VERSION>
@ -573,17 +573,17 @@ Website: https://dolphinscheduler.apache.org/
DolphinScheduler Resources:
- Issue: https://github.com/apache/dolphinscheduler/issues/
- Mailing list: dev@dolphinscheduler.apache.org
- Documents: https://dolphinscheduler.apache.org/zh-cn/docs/<VERSION>/user_doc/about/introduction.html
- Documents: https://dolphinscheduler.apache.org/#/zh-cn/docs/<VERSION>/about/introduction
```
## News
一切就绪后,应该写一篇文章发布到社区,它应该包括:
* 版本、功能添加、错误修复或两者的主要目的是什么
* 主要新功能及使用方法最好有图片或gif
* 主要错误修复和与之前版本不同的地方最好有图片或gif
* 自上一版本以来的所有贡献者
- 版本、功能添加、错误修复或两者的主要目的是什么
- 主要新功能及使用方法,最好有图片或 gif
- 主要错误修复和与之前版本不同的地方,最好有图片或 gif
- 自上一版本以来的所有贡献者
## 获取全部的贡献者

View File

@ -24,26 +24,26 @@ ADolphinScheduler 由 5 个服务组成MasterServer、WorkerServer、ApiSe
## Q系统支持哪些邮箱
A支持绝大多数邮箱qq、163、126、139、outlook、aliyun 等皆支持。支持 **TLS 和 SSL** 协议可以在dolphinscheduler的ui中进行配置
A支持绝大多数邮箱qq、163、126、139、outlook、aliyun 等皆支持。支持 **TLS 和 SSL** 协议,可以在 dolphinscheduler ui 中进行配置:
[如何配置邮箱告警](../zh/guide/alert/email.md)。
---
## Q常用的系统变量时间参数有哪些如何使用
A请参考[使用手册](https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/parameter/built-in.html) 第8小节
A请参考[使用手册](https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/parameter/built-in.html) 第 8 小节
---
## Qpip install kazoo 这个安装报错。是必须安装的吗?
A 这个是 python 连接 Zookeeper 需要使用到的用于删除Zookeeper中的master/worker临时节点信息。所以如果是第一次安装就可以忽略错误。在1.3.0之后kazoo不再需要了我们用程序来代替kazoo所做的
A 这个是 python 连接 Zookeeper 需要使用到的,用于删除 Zookeeper 中的 master/worker 临时节点信息。所以如果是第一次安装,就可以忽略错误。在 1.3.0 之后kazoo 不再需要了,我们用程序来代替 kazoo 所做的
---
## Q怎么指定机器运行任务
A使用 **管理员** 创建 Worker 分组,在 **流程定义启动** 的时候可**指定Worker分组**或者在**任务节点上指定Worker分组**。如果不指定,则使用 Default**Default默认是使用的集群里所有的Worker中随机选取一台来进行任务提交、执行**
A使用 **管理员** 创建 Worker 分组,在 **流程定义启动** 的时候可**指定 Worker 分组**或者在**任务节点上指定 Worker 分组**。如果不指定,则使用 Default**Default 默认是使用的集群里所有的 Worker 中随机选取一台来进行任务提交、执行**
---
@ -51,19 +51,19 @@ A使用 **管理员** 创建 Worker 分组,在 **流程定义启动** 的
A我们同时 **支持流程和任务的优先级**。优先级我们有 **HIGHEST、HIGH、MEDIUM、LOW 和 LOWEST** 五种级别。**可以设置不同流程实例之间的优先级,也可以设置同一个流程实例中不同任务实例的优先级**。详细内容请参考任务优先级设计 https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1.html#%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1
----
---
## Qdolphinscheduler-grpc 报错
A在 1.2 及以前版本中在根目录下执行mvn -U clean package assembly:assembly -Dmaven.test.skip=true,然后刷新下整个项目就好1.3版本中不再使用 GRPC 进行通信了
A在 1.2 及以前版本中在根目录下执行mvn -U clean package assembly:assembly -Dmaven.test.skip=true,然后刷新下整个项目就好1.3 版本中不再使用 GRPC 进行通信了
----
---
## QDolphinScheduler 支持 windows 上运行么
A 理论上只有 **Worker 是需要在 Linux 上运行的**,其它的服务都是可以在 windows 上正常运行的。但是还是建议最好能在 linux 上部署使用
-----
---
## QUI 在 linux 编译 node-sass 提示ErrorEACCESS:permission deniedmkdir xxxx
@ -73,54 +73,54 @@ A单独安装 **npm install node-sass --unsafe-perm**,之后再 **npm insta
## QUI 不能正常登陆访问
A 1如果是 node 启动的查看 dolphinscheduler-ui 下的 .env 文件里的 API_BASE 配置是否是 Api Server 服务地址
A 1如果是 node 启动的查看 dolphinscheduler-ui 下的 .env 文件里的 API_BASE 配置是否是 Api Server 服务地址
2如果是 nginx 启动的并且是通过 **install-dolphinscheduler-ui.sh** 安装的,查看
2如果是 nginx 启动的并且是通过 **install-dolphinscheduler-ui.sh** 安装的,查看
**/etc/nginx/conf.d/dolphinscheduler.conf** 中的 proxy_pass 配置是否是 Api Server 服务地址
**/etc/nginx/conf.d/dolphinscheduler.conf** 中的 proxy_pass 配置是否是 Api Server 服务地址
3如果以上配置都是正确的那么请查看 Api Server 服务是否是正常的,
3如果以上配置都是正确的那么请查看 Api Server 服务是否是正常的,
curl http://localhost:12345/dolphinscheduler/users/get-user-info 查看 Api Server 日志,
curl http://localhost:12345/dolphinscheduler/users/get-user-info 查看 Api Server 日志,
如果提示 cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session info is null则证明 Api Server 服务是正常的
如果提示 cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session info is null则证明 Api Server 服务是正常的
4如果以上都没有问题需要查看一下 **application.properties** 中的 **server.context-path 和 server.port 配置**是否正确
4如果以上都没有问题需要查看一下 **application.properties** 中的 **server.context-path 和 server.port 配置**是否正确
注意1.3 版本直接使用 Jetty 进行前端代码的解析,无需再安装配置 nginx 了
---
## Q流程定义手动启动或调度启动之后没有流程实例生成
A 1首先通过 **jps 查看MasterServer服务是否存在**,或者从服务监控直接查看 zk 中是否存在 master 服务
A 1首先通过 **jps 查看 MasterServer 服务是否存在**,或者从服务监控直接查看 zk 中是否存在 master 服务
2如果存在 master 服务,查看 **命令状态统计** 或者 **t_ds_error_command** 中是否增加的新记录,如果增加了,**请查看 message 字段定位启动异常原因**
2如果存在 master 服务,查看 **命令状态统计** 或者 **t_ds_error_command** 中是否增加的新记录,如果增加了,**请查看 message 字段定位启动异常原因**
---
## Q任务状态一直处于提交成功状态
A 1首先通过 **jps 查看 WorkerServer 服务是否存在**,或者从服务监控直接查看 zk 中是否存在 worker 服务
A 1首先通过 **jps 查看 WorkerServer 服务是否存在**,或者从服务监控直接查看 zk 中是否存在 worker 服务
2如果 **WorkerServer** 服务正常,需要 **查看 MasterServer 是否把 task 任务放到 zk 队列中** **需要查看 MasterServer 日志及 zk 队列中是否有任务阻塞**
2如果 **WorkerServer** 服务正常,需要 **查看 MasterServer 是否把 task 任务放到 zk 队列中** **需要查看 MasterServer 日志及 zk 队列中是否有任务阻塞**
3如果以上都没有问题需要定位是否指定了 Worker 分组,但是 **Worker 分组的机器不是在线状态**
3如果以上都没有问题需要定位是否指定了 Worker 分组,但是 **Worker 分组的机器不是在线状态**
---
## Qinstall.sh 中需要注意问题
A 1如果替换变量中包含特殊字符**请用 \ 转移符进行转移**
A 1如果替换变量中包含特殊字符**请用 \ 转移符进行转移**
2installPath="/data1_1T/dolphinscheduler"**这个目录不能和当前要一键安装的 install.sh 目录是一样的**
2installPath="/data1_1T/dolphinscheduler"**这个目录不能和当前要一键安装的 install.sh 目录是一样的**
3deployUser="dolphinscheduler"**部署用户必须具有 sudo 权限**,因为 worker 是通过 sudo -u 租户 sh xxx.command 进行执行的
3deployUser="dolphinscheduler"**部署用户必须具有 sudo 权限**,因为 worker 是通过 sudo -u 租户 sh xxx.command 进行执行的
4monitorServerState="false",服务监控脚本是否启动,默认是不启动服务监控脚本的。**如果启动服务监控脚本,则每 5 分钟定时来监控 master 和 worker 的服务是否 down 机,如果 down 机则会自动重启**
4monitorServerState="false",服务监控脚本是否启动,默认是不启动服务监控脚本的。**如果启动服务监控脚本,则每 5 分钟定时来监控 master 和 worker 的服务是否 down 机,如果 down 机则会自动重启**
5hdfsStartupSate="false",是否开启 HDFS 资源上传功能。默认是不开启的,**如果不开启则资源中心是不能使用的**。如果开启,需要 conf/common/hadoop/hadoop.properties 中配置 resource.hdfs.fs.defaultFS 和 yarn 的相关配置,如果使用 namenode HA需要将 core-site.xml 和 hdfs-site.xml 复制到conf根目录下
5hdfsStartupSate="false",是否开启 HDFS 资源上传功能。默认是不开启的,**如果不开启则资源中心是不能使用的**。如果开启,需要 conf/common/hadoop/hadoop.properties 中配置 resource.hdfs.fs.defaultFS 和 yarn 的相关配置,如果使用 namenode HA需要将 core-site.xml 和 hdfs-site.xml 复制到 conf 根目录下
注意:**1.0.x 版本是不会自动创建 hdfs 根目录的需要自行创建并且需要部署用户有hdfs的操作权限**
注意:**1.0.x 版本是不会自动创建 hdfs 根目录的,需要自行创建,并且需要部署用户有 hdfs 的操作权限**
---
@ -157,11 +157,11 @@ A 不能。因为在未启动 HDFS 创建的租户,不会在 HDFS 中注册
## Q多 Master 和多 Worker 状态下,服务掉了,怎么容错
A **注意Master 监控 Master 及 Worker 服务。**
A **注意Master 监控 Master 及 Worker 服务。**
1如果 Master 服务掉了,其它的 Master 会接管挂掉的 Master 的流程,继续监控 Worker task 状态
1如果 Master 服务掉了,其它的 Master 会接管挂掉的 Master 的流程,继续监控 Worker task 状态
2如果 Worker 服务掉了Master 会监控到 Worker 服务掉了,如果存在 Yarn 任务Kill Yarn 任务之后走重试
2如果 Worker 服务掉了Master 会监控到 Worker 服务掉了,如果存在 Yarn 任务Kill Yarn 任务之后走重试
具体请看容错设计https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1.html#%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1
@ -175,7 +175,7 @@ A 1.0.3 版本只实现了 Master 启动流程容错,不走 Worker 容错
## Q定时容易设置成每秒执行
A 设置定时的时候需要注意,如果第一位(* * * * * ? *)设置成 \* ,则表示每秒执行。**我们将会在 1.1.0 版本中加入显示最近调度的时间列表** ,使用 http://cron.qqe2.com/ 可以在线看近 5 次运行时间
A 设置定时的时候需要注意,如果第一位(\* \* \* \* _ ? _)设置成 \* ,则表示每秒执行。**我们将会在 1.1.0 版本中加入显示最近调度的时间列表** ,使用 http://cron.qqe2.com/ 可以在线看近 5 次运行时间
## Q定时有有效时间范围吗
@ -183,23 +183,23 @@ A有的**如果定时的起止时间是同一个时间,那么此定时
## Q任务依赖有几种实现
A 1**DAG** 之间的任务依赖关系,是从 **入度为零** 进行 DAG 切分的
A 1**DAG** 之间的任务依赖关系,是从 **入度为零** 进行 DAG 切分的
2**任务依赖节点** ,可以实现跨流程的任务或者流程依赖,具体请参考 依赖(DEPENDENT)节点https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.html#%E4%BB%BB%E5%8A%A1%E8%8A%82%E7%82%B9%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE
2**任务依赖节点** ,可以实现跨流程的任务或者流程依赖,具体请参考 依赖(DEPENDENT)节点https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.html#%E4%BB%BB%E5%8A%A1%E8%8A%82%E7%82%B9%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE
## Q流程定义有几种启动方式
A 1**流程定义列表**,点击 **启动** 按钮
2**流程定义列表添加定时器**,调度启动流程定义
2**流程定义列表添加定时器**,调度启动流程定义
3流程定义 **查看或编辑** DAG 页面,任意 **任务节点右击** 启动流程定义
3流程定义 **查看或编辑** DAG 页面,任意 **任务节点右击** 启动流程定义
4可以对流程定义 DAG 编辑,设置某些任务的运行标志位 **禁止运行**,则在启动流程定义的时候,将该节点的连线将从 DAG 中去掉
4可以对流程定义 DAG 编辑,设置某些任务的运行标志位 **禁止运行**,则在启动流程定义的时候,将该节点的连线将从 DAG 中去掉
## QPython 任务设置 Python 版本
A 只需要修改 `bin/env/dolphinscheduler_env.sh` 中的 PYTHON_HOME
A 只需要修改 `bin/env/dolphinscheduler_env.sh` 中的 PYTHON_HOME
```
export PYTHON_HOME=/bin/python
@ -269,14 +269,14 @@ A 将 hive pom
## Q如何增加一台工作服务器
A 1参考官网[部署文档](https://dolphinscheduler.apache.org/zh-cn/docs/laster/user_doc/installation/cluster.html) 1.3 小节,创建部署用户和 hosts 映射
A 1参考官网[部署文档](https://dolphinscheduler.apache.org/#/zh-cn/docs/3.1.2/installation/cluster) 1.3 小节,创建部署用户和 hosts 映射
2参考官网[部署文档](https://dolphinscheduler.apache.org/zh-cn/docs/laster/user_doc/installation/cluster.html) 1.4 小节,配置 hosts 映射和 ssh 打通及修改目录权限.
1.4 小节的最后一步是在当前新增机器上执行的,即需要给部署目录部署用户的权限
2参考官网[部署文档](https://dolphinscheduler.apache.org/#/zh-cn/docs/3.1.2/installation/cluster) 1.4 小节,配置 hosts 映射和 ssh 打通及修改目录权限.
1.4 小节的最后一步是在当前新增机器上执行的,即需要给部署目录部署用户的权限
3复制正在运行的服务器上的部署目录到新机器的同样的部署目录下
3复制正在运行的服务器上的部署目录到新机器的同样的部署目录下
4到 bin 下,启动 worker server
4到 bin 下,启动 worker server
```
./dolphinscheduler-daemon.sh start worker-server
@ -412,7 +412,7 @@ $cat /etc/hosts
10.3.57.15
```
hostname 命令返回服务器主机名hostname -i 返回的是服务器主机名在 /etc/hosts 中所有匹配的ip地址。所以我把 /etc/hosts 中 127.0.0.1 中的主机名删掉,只保留内网 ip 的解析就可以了,没必要把 127.0.0.1 整条注释掉, 只要 hostname 命令返回值在 /etc/hosts 中对应的内网 ip 正确就可以ds 程序取了第一个值,我理解上 ds 程序不应该用 hostname -i 取值这样有点问题,因为好多公司服务器的主机名都是运维配置的,感觉还是直接取配置文件的域名解析的返回 ip 更准确,或者 znode 中存域名信息而不是 /etc/hosts。
hostname 命令返回服务器主机名hostname -i 返回的是服务器主机名在 /etc/hosts 中所有匹配的 ip 地址。所以我把 /etc/hosts 中 127.0.0.1 中的主机名删掉,只保留内网 ip 的解析就可以了,没必要把 127.0.0.1 整条注释掉, 只要 hostname 命令返回值在 /etc/hosts 中对应的内网 ip 正确就可以ds 程序取了第一个值,我理解上 ds 程序不应该用 hostname -i 取值这样有点问题,因为好多公司服务器的主机名都是运维配置的,感觉还是直接取配置文件的域名解析的返回 ip 更准确,或者 znode 中存域名信息而不是 /etc/hosts。
---
@ -430,14 +430,14 @@ A1cd dolphinscheduler-ui 然后删除 node_modules 目录
sudo rm -rf node_modules
```
2通过 npm.taobao.org 下载 node-sass
2通过 npm.taobao.org 下载 node-sass
```
sudo npm uninstall node-sass
sudo npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
```
3如果步骤 2 报错,请重新构建 node-saas [参考链接](https://dolphinscheduler.apache.org/en-us/development/frontend-development.html)
3如果步骤 2 报错,请重新构建 node-saas [参考链接](https://github.com/apache/dolphinscheduler/blob/dev/docs/docs/zh/contribute/frontend-development.md)
```
sudo npm rebuild node-sass
@ -460,7 +460,7 @@ A1修改项目根目录 maven 配置文件,移除 scope 的 test 属性
</dependency>
```
2修改 application-dao.properties 和 quzrtz.properties 来使用 mysql 驱动
2修改 application-dao.properties 和 quzrtz.properties 来使用 mysql 驱动
默认驱动是 postgres 主要由于许可证原因。
---
@ -469,7 +469,7 @@ A1修改项目根目录 maven 配置文件,移除 scope 的 test 属性
A1被执行的服务器在哪里配置以及实际执行的服务器是哪台? 要指定在某个 worker 上去执行,可以在 worker 分组中配置,固定 IP这样就可以把路径写死。如果配置的 worker 分组有多个 worker实际执行的服务器由调度决定的具有随机性。
2如果是服务器上某个路径的一个 shell 文件,怎么指向这个路径?服务器上某个路径下的 shell 文件,涉及到权限问题,不建议这么做。建议你可以使用资源中心的存储功能,然后在 shell 编辑器里面使用资源引用就可以,系统会帮助你把脚本下载到执行目录下。如果以 hdfs 作为资源中心,在执行的时候,调度器会把依赖的 jar 包,文件等资源拉到 worker 的执行目录上,我这边是 /tmp/escheduler/exec/process该配置可以在 install.sh 中进行指定。
2如果是服务器上某个路径的一个 shell 文件,怎么指向这个路径?服务器上某个路径下的 shell 文件,涉及到权限问题,不建议这么做。建议你可以使用资源中心的存储功能,然后在 shell 编辑器里面使用资源引用就可以,系统会帮助你把脚本下载到执行目录下。如果以 hdfs 作为资源中心,在执行的时候,调度器会把依赖的 jar 包,文件等资源拉到 worker 的执行目录上,我这边是 /tmp/escheduler/exec/process该配置可以在 install.sh 中进行指定。
3以哪个用户来执行任务执行任务的时候调度器会采用 sudo -u 租户的方式去执行,租户是一个 linux 用户。
@ -527,7 +527,7 @@ A 1用户修改了 api server 配置文件中的![apiServerContextPath](ht
</p>
A1编辑 ngnix 配置文件 vi /etc/nginx/nginx.conf更改上传大小 client_max_body_size 1024m。
2更新 google chrome 版本到最新版本。
2更新 google chrome 版本到最新版本。
---
@ -545,7 +545,7 @@ proxy_send_timeout 300s;
## Q工作流依赖
A1目前是按照自然天来判断上月末判断时间是工作流 A start_time/scheduler_time between '2019-05-31 00:00:00' and '2019-05-31 23:59:59'。上月:是判断上个月从 1 号到月末每天都要有完成的A实例。上周 上周 7 天都要有完成的 A 实例。前两天: 判断昨天和前天,两天都要有完成的 A 实例。
A1目前是按照自然天来判断上月末判断时间是工作流 A start_time/scheduler_time between '2019-05-31 00:00:00' and '2019-05-31 23:59:59'。上月:是判断上个月从 1 号到月末每天都要有完成的 A 实例。上周: 上周 7 天都要有完成的 A 实例。前两天: 判断昨天和前天,两天都要有完成的 A 实例。
---
@ -565,9 +565,9 @@ master 服务、worker 服务在 zookeeper 注册时,会以 ip:port 的形式
可以使用 dolphinscheduler 提供的三种策略,获取可用 ip
* default: 优先获取内网网卡获取 ip 地址,其次获取外网网卡获取 ip 地址,在前两项失效情况下,使用第一块可用网卡的地址
* inner: 使用内网网卡获取 ip地址,如果获取失败抛出异常信息
* outer: 使用外网网卡获取 ip地址,如果获取失败抛出异常信息
- default: 优先获取内网网卡获取 ip 地址,其次获取外网网卡获取 ip 地址,在前两项失效情况下,使用第一块可用网卡的地址
- inner: 使用内网网卡获取 ip 地址,如果获取失败抛出异常信息
- outer: 使用外网网卡获取 ip 地址,如果获取失败抛出异常信息
配置方式是在 `common.properties` 中修改相关配置:
@ -602,9 +602,9 @@ sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
---
## QYarn多集群支持
## QYarn 多集群支持
A将Worker节点分别部署至多个Yarn集群步骤如下例如AWS EMR
A Worker 节点分别部署至多个 Yarn 集群,步骤如下(例如 AWS EMR
1. 将 Worker 节点部署至 EMR 集群的 Master 节点
@ -616,7 +616,7 @@ A将Worker节点分别部署至多个Yarn集群步骤如下例如AWS EM
## QUpdate process definition error: Duplicate key TaskDefinition
A在DS 2.0.4之前2.0.0-alpha之后可能存在版本切换的重复键问题导致更新工作流失败可参考如下SQL进行重复数据的删除以MySQL为例注意操作前请务必备份原数据SQL来源于pr [#8408](https://github.com/apache/dolphinscheduler/pull/8408)
A DS 2.0.4 之前2.0.0-alpha 之后),可能存在版本切换的重复键问题,导致更新工作流失败;可参考如下 SQL 进行重复数据的删除,以 MySQL 为例注意操作前请务必备份原数据SQL 来源于 pr [#8408](https://github.com/apache/dolphinscheduler/pull/8408)
```SQL
DELETE FROM t_ds_process_task_relation_log WHERE id IN
@ -702,9 +702,9 @@ DELETE FROM t_ds_task_definition_log WHERE id IN
---
## Q使用Postgresql数据库从2.0.1升级至2.0.5更新失败
## Q使用 Postgresql 数据库从 2.0.1 升级至 2.0.5 更新失败
A在数据库中执行以下SQL即可完成修复:
A在数据库中执行以下 SQL 即可完成修复:
```SQL
update t_ds_version set version='2.0.1';

View File

@ -8,7 +8,7 @@
### 下载新版本的安装包
在[下载](/zh-cn/download/download.html)页面下载最新版本的二进制安装包,并将二进制包放到与当前 dolphinscheduler 服务不一样的路径中,以下服务启动操作都需要在新版本的目录进行。
在[下载](https://dolphinscheduler.apache.org/#/zh-cn/download)页面下载最新版本的二进制安装包,并将二进制包放到与当前 dolphinscheduler 服务不一样的路径中,以下服务启动操作都需要在新版本的目录进行。
## 服务启动步骤
@ -37,4 +37,3 @@ demo:
然后执行初始化工作流 demo 服务的启动脚本:`sh ./tools/bin/create-demo-processes.sh` 来启动服务。
创建 demo 可以参考[快速上手](start/quick-start.md)

View File

@ -1,6 +1,6 @@
# 快速试用 Kubernetes 部署
Kubernetes部署目的是在Kubernetes集群中部署 DolphinScheduler 服务,能调度大量任务,可用于在生产中部署。
Kubernetes 部署目的是在 Kubernetes 集群中部署 DolphinScheduler 服务,能调度大量任务,可用于在生产中部署。
如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用[Standalone](standalone.md)方式体检。如果你想体验更完整的功能,或者更大的任务量,推荐使用[伪集群部署](pseudo-cluster.md)。如果你是在生产中使用,推荐使用[集群部署](cluster.md)或者[kubernetes](kubernetes.md)
@ -12,7 +12,7 @@ Kubernetes部署目的是在Kubernetes集群中部署 DolphinScheduler 服务,
## 安装 dolphinscheduler
请下载源码包 apache-dolphinscheduler-<version>-src.tar.gz下载地址: [下载](/zh-cn/download/download.html)
请下载源码包 apache-dolphinscheduler-<version>-src.tar.gz下载地址: [下载](https://dolphinscheduler.apache.org/#/zh-cn/download)
发布一个名为 `dolphinscheduler` 的版本(release),请执行以下命令:
@ -32,7 +32,7 @@ $ helm install dolphinscheduler . -n test
> **提示**: 如果名为 `test` 的命名空间被使用, 选项参数 `-n test` 需要添加到 `helm``kubectl` 命令中
这些命令以默认配置在 Kubernetes 集群上部署 DolphinScheduler[附录-配置](#appendix-configuration)部分列出了可以在安装过程中配置的参数 <!-- markdown-link-check-disable-line -->
这些命令以默认配置在 Kubernetes 集群上部署 DolphinScheduler[附录-配置](#appendix-configuration)部分列出了可以在安装过程中配置的参数 <!-- markdown-link-check-disable-line -->
> **提示**: 列出所有已发布的版本,使用 `helm list`
@ -67,7 +67,7 @@ echo http://$NODE_IP:$NODE_PORT/dolphinscheduler
默认的用户是`admin`,默认的密码是`dolphinscheduler123`
请参考用户手册章节的[快速上手](../start/quick-start.md)查看如何使用DolphinScheduler
请参考用户手册章节的[快速上手](../start/quick-start.md)查看如何使用 DolphinScheduler
## 卸载 dolphinscheduler
@ -77,19 +77,19 @@ echo http://$NODE_IP:$NODE_PORT/dolphinscheduler
$ helm uninstall dolphinscheduler
```
该命令将删除与 `dolphinscheduler` 相关的所有 Kubernetes 组件但PVC除外并删除版本(release)
该命令将删除与 `dolphinscheduler` 相关的所有 Kubernetes 组件(但 PVC 除外),并删除版本(release)
要删除与 `dolphinscheduler` 相关的PVC请执行
要删除与 `dolphinscheduler` 相关的 PVC请执行
```bash
$ kubectl delete pvc -l app.kubernetes.io/instance=dolphinscheduler
```
> **注意**: 删除PVC也会删除所有数据请谨慎操作
> **注意**: 删除 PVC 也会删除所有数据,请谨慎操作!
## 配置
配置文件为 `values.yaml`[附录-配置](#appendix-configuration) 表格列出了 DolphinScheduler 的可配置参数及其默认值 <!-- markdown-link-check-disable-line -->
配置文件为 `values.yaml`[附录-配置](#appendix-configuration) 表格列出了 DolphinScheduler 的可配置参数及其默认值 <!-- markdown-link-check-disable-line -->
## 支持矩阵
@ -188,7 +188,7 @@ kubectl scale --replicas=6 sts dolphinscheduler-worker -n test # with test names
>
> 如果你要使用 MySQL, 你可以基于官方镜像 `apache/dolphinscheduler-<service>` 进行构建.
>
> 从3.0.0版本起dolphinscheduler已经微服务化更改元数据存储需要对把所有的服务都替换为 MySQL 驱动包,包括 dolphinscheduler-tools, dolphinscheduler-master, dolphinscheduler-worker, dolphinscheduler-api, dolphinscheduler-alert-server .
> 从 3.0.0 版本起dolphinscheduler 已经微服务化,更改元数据存储需要对把所有的服务都替换为 MySQL 驱动包,包括 dolphinscheduler-tools, dolphinscheduler-master, dolphinscheduler-worker, dolphinscheduler-api, dolphinscheduler-alert-server .
1. 下载 MySQL 驱动包 [mysql-connector-java-8.0.16.jar](https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar)
@ -386,7 +386,7 @@ $SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HO
文件 `spark-examples_2.11-2.4.7.jar` 需要先被上传到资源中心,然后创建一个 Spark 任务并设置:
- 主函数的Class: `org.apache.spark.examples.SparkPi`
- 主函数的 Class: `org.apache.spark.examples.SparkPi`
- 主程序包: `spark-examples_2.11-2.4.7.jar`
- 部署方式: `local`
@ -410,7 +410,7 @@ common:
enabled: false
mountPath: "/opt/soft"
accessModes:
- "ReadWriteMany"
- "ReadWriteMany"
storageClassName: "-"
storage: "20Gi"
```
@ -436,7 +436,7 @@ common:
fsFileResourcePersistence:
enabled: true
accessModes:
- "ReadWriteMany"
- "ReadWriteMany"
storageClassName: "-"
storage: "20Gi"
```

View File

@ -1,6 +1,6 @@
# 伪集群部署
伪集群部署目的是在单台机器部署 DolphinScheduler 服务该模式下master、worker、api server 都在同一台机器上
伪集群部署目的是在单台机器部署 DolphinScheduler 服务,该模式下 master、worker、api server 都在同一台机器上
如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用[Standalone](standalone.md)方式体检。如果你想体验更完整的功能,或者更大的任务量,推荐使用[伪集群部署](pseudo-cluster.md)。如果你是在生产中使用,推荐使用[集群部署](cluster.md)或者[kubernetes](kubernetes.md)
@ -8,13 +8,13 @@
伪分布式部署 DolphinScheduler 需要有外部软件的支持
* JDK下载[JDK][jdk] (1.8+),安装并配置 `JAVA_HOME` 环境变量,并将其下的 `bin` 目录追加到 `PATH` 环境变量中。如果你的环境中已存在,可以跳过这步。
* 二进制包:在[下载页面](https://dolphinscheduler.apache.org/zh-cn/download/download.html)下载 DolphinScheduler 二进制包
* 数据库:[PostgreSQL](https://www.postgresql.org/download/) (8.2.15+) 或者 [MySQL](https://dev.mysql.com/downloads/mysql/) (5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16
* 注册中心:[ZooKeeper](https://zookeeper.apache.org/releases.html) (3.8.0+)[下载地址][zookeeper]
* 进程树分析
* macOS安装`pstree`
* Fedora/Red/Hat/CentOS/Ubuntu/Debian安装`psmisc`
- JDK下载[JDK][jdk] (1.8+),安装并配置 `JAVA_HOME` 环境变量,并将其下的 `bin` 目录追加到 `PATH` 环境变量中。如果你的环境中已存在,可以跳过这步。
- 二进制包:在[下载页面](https://dolphinscheduler.apache.org/#/zh-cn/download)下载 DolphinScheduler 二进制包
- 数据库:[PostgreSQL](https://www.postgresql.org/download/) (8.2.15+) 或者 [MySQL](https://dev.mysql.com/downloads/mysql/) (5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16
- 注册中心:[ZooKeeper](https://zookeeper.apache.org/releases.html) (3.8.0+)[下载地址][zookeeper]
- 进程树分析
- macOS 安装`pstree`
- Fedora/Red/Hat/CentOS/Ubuntu/Debian 安装`psmisc`
> **_注意:_** DolphinScheduler 本身不依赖 Hadoop、Hive、Spark但如果你运行的任务需要依赖他们就需要有对应的环境支持
@ -42,12 +42,12 @@ chmod -R 755 apache-dolphinscheduler-*-bin
> **_注意:_**
>
> * 因为任务执行服务是以 `sudo -u {linux-user}` 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学习者不理解的话,完全可以暂时忽略这一点
> * 如果发现 `/etc/sudoers` 文件中有 "Defaults requirett" 这行,也请注释掉
> - 因为任务执行服务是以 `sudo -u {linux-user}` 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学习者不理解的话,完全可以暂时忽略这一点
> - 如果发现 `/etc/sudoers` 文件中有 "Defaults requirett" 这行,也请注释掉
### 配置机器SSH免密登陆
### 配置机器 SSH 免密登陆
由于安装的时候需要向不同机器发送资源所以要求各台机器间能实现SSH免密登陆。配置免密登陆的步骤如下
由于安装的时候需要向不同机器发送资源,所以要求各台机器间能实现 SSH 免密登陆。配置免密登陆的步骤如下
```shell
su dolphinscheduler
@ -57,9 +57,9 @@ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
> **_注意:_** 配置完成后,可以通过运行命令 `ssh localhost` 判断是否成功如果不需要输入密码就能ssh登陆则证明成功
> **_注意:_** 配置完成后,可以通过运行命令 `ssh localhost` 判断是否成功,如果不需要输入密码就能 ssh 登陆则证明成功
### 启动zookeeper
### 启动 zookeeper
进入 zookeeper 的安装目录,将 `zoo_sample.cfg` 配置文件复制到 `conf/zoo.cfg`,并将 `conf/zoo.cfg` 中 dataDir 中的值改成 `dataDir=./tmp/zookeeper`
@ -74,7 +74,7 @@ chmod 600 ~/.ssh/authorized_keys
### 修改 `install_env.sh` 文件
文件 `install_env.sh` 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。您可以在路径 `bin/env/install_env.sh` 中找到此文件可通过以下方式更改env变量,export <ENV_NAME>=<VALUE>,配置详情如下。
文件 `install_env.sh` 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。您可以在路径 `bin/env/install_env.sh` 中找到此文件,可通过以下方式更改 env 变量,export <ENV_NAME>=<VALUE>,配置详情如下。
```shell
# ---------------------------------------------------------
@ -99,8 +99,8 @@ deployUser="dolphinscheduler"
文件 `./bin/env/dolphinscheduler_env.sh` 描述了下列配置:
* DolphinScheduler 的数据库配置,详细配置方法见[初始化数据库](#初始化数据库)
* 一些任务类型外部依赖路径或库文件,如 `JAVA_HOME``SPARK_HOME`都是在这里定义的
- DolphinScheduler 的数据库配置,详细配置方法见[初始化数据库](#初始化数据库)
- 一些任务类型外部依赖路径或库文件,如 `JAVA_HOME``SPARK_HOME`都是在这里定义的
如果您不使用某些任务类型,您可以忽略任务外部依赖项,但您必须根据您的环境更改 `JAVA_HOME`、注册中心和数据库相关配置。
@ -152,7 +152,7 @@ bash ./bin/install.sh
## 登录 DolphinScheduler
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 **admin/dolphinscheduler123**
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统 UI。默认的用户名和密码是 **admin/dolphinscheduler123**
## 启停服务
@ -180,12 +180,12 @@ bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server
```
> **_注意1:_**: 每个服务在路径 `<service>/conf/dolphinscheduler_env.sh` 中都有 `dolphinscheduler_env.sh` 文件,这是可以为微
> **_注意 1:_**: 每个服务在路径 `<service>/conf/dolphinscheduler_env.sh` 中都有 `dolphinscheduler_env.sh` 文件,这是可以为微
> 服务需求提供便利。意味着您可以基于不同的环境变量来启动各个服务,只需要在对应服务中配置 `<service>/conf/dolphinscheduler_env.sh` 然后通过 `<service>/bin/start.sh`
> 命令启动即可。但是如果您使用命令 `/bin/dolphinscheduler-daemon.sh start <service>` 启动服务器,它将会用文件 `bin/env/dolphinscheduler_env.sh`
> 覆盖 `<service>/conf/dolphinscheduler_env.sh` 然后启动服务,目的是为了减少用户修改配置的成本.
>
> **_注意2:_**服务用途请具体参见《系统架构设计》小节。Python gateway service 默认与 api-server 一起启动,如果您不想启动 Python gateway service
> **_注意 2:_**服务用途请具体参见《系统架构设计》小节。Python gateway service 默认与 api-server 一起启动,如果您不想启动 Python gateway service
> 请通过更改 api-server 配置文件 `api-server/conf/application.yaml` 中的 `python-gateway.enabled : false` 来禁用它。
[jdk]: https://www.oracle.com/technetwork/java/javase/downloads/index.html

View File

@ -1,22 +1,22 @@
# Standalone极速体验版
# Standalone 极速体验版
Standalone 仅适用于 DolphinScheduler 的快速体验.
如果你是新手,想要体验 DolphinScheduler 的功能推荐使用Standalone方式体检。如果你想体验更完整的功能或者更大的任务量推荐使用[伪集群部署](pseudo-cluster.md)。如果你是在生产中使用,推荐使用[集群部署](cluster.md)或者[kubernetes](kubernetes.md)
如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用 Standalone 方式体检。如果你想体验更完整的功能,或者更大的任务量,推荐使用[伪集群部署](pseudo-cluster.md)。如果你是在生产中使用,推荐使用[集群部署](cluster.md)或者[kubernetes](kubernetes.md)
> **_注意:_** Standalone仅建议20个以下工作流使用因为其采用内存式的H2 Database, Zookeeper Testing Server任务过多可能导致不稳定并且如果重启或者停止standalone-server会导致内存中数据库里的数据清空。
> 如果您要连接外部数据库比如mysql或者postgresql请看[配置数据库](#配置数据库)
> **_注意:_** Standalone 仅建议 20 个以下工作流使用,因为其采用内存式的 H2 Database, Zookeeper Testing Server任务过多可能导致不稳定并且如果重启或者停止 standalone-server 会导致内存中数据库里的数据清空。
> 如果您要连接外部数据库,比如 mysql 或者 postgresql请看[配置数据库](#配置数据库)
## 前置准备工作
* JDK下载[JDK][jdk] (1.8+),安装并配置 `JAVA_HOME` 环境变量,并将其下的 `bin` 目录追加到 `PATH` 环境变量中。如果你的环境中已存在,可以跳过这步。
* 二进制包:在[下载页面](https://dolphinscheduler.apache.org/zh-cn/download/download.html)下载 DolphinScheduler 二进制包
- JDK下载[JDK][jdk] (1.8+),安装并配置 `JAVA_HOME` 环境变量,并将其下的 `bin` 目录追加到 `PATH` 环境变量中。如果你的环境中已存在,可以跳过这步。
- 二进制包:在[下载页面](https://dolphinscheduler.apache.org/#/zh-cn/download)下载 DolphinScheduler 二进制包
## 启动 DolphinScheduler Standalone Server
### 解压并启动 DolphinScheduler
二进制压缩包中有 standalone 启动的脚本解压后即可快速启动。切换到有sudo权限的用户运行脚本
二进制压缩包中有 standalone 启动的脚本,解压后即可快速启动。切换到有 sudo 权限的用户,运行脚本
```shell
# 解压并运行 Standalone Server
@ -28,7 +28,7 @@ bash ./bin/dolphinscheduler-daemon.sh start standalone-server
### 登录 DolphinScheduler
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 **admin/dolphinscheduler123**
浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统 UI。默认的用户名和密码是 **admin/dolphinscheduler123**
## 启停服务

View File

@ -39,7 +39,7 @@ $ docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:2
- Hyper-V 模式:点击 `Docker Desktop -> Settings -> Resources -> Memory` 调整内存大小
- WSL 2 模式 模式:参考 [WSL 2 utility VM](https://docs.microsoft.com/zh-cn/windows/wsl/wsl-config#configure-global-options-with-wslconfig) 调整内存大小
配置完成后我们需要获取 `docker-compose.yaml` 文件,通过[下载页面](/zh-cn/download/download.html)下载对应版本源码包可能是最快的方法,
配置完成后我们需要获取 `docker-compose.yaml` 文件,通过[下载页面](https://dolphinscheduler.apache.org/#/zh-cn/download)下载对应版本源码包可能是最快的方法,
源码包对应的值为 "Total Source Code"。当下载完源码后就可以运行命令进行部署了。
```shell

View File

@ -12,7 +12,7 @@
### 下载新版本的安装包
在[下载](/zh-cn/download/download.html)页面下载最新版本的二进制安装包,并将二进制包放到与当前 dolphinscheduler 服务不一样的路径中,以下升级操作都需要在新版本的目录进行。
在[下载](https://dolphinscheduler.apache.org/#/zh-cn/download)页面下载最新版本的二进制安装包,并将二进制包放到与当前 dolphinscheduler 服务不一样的路径中,以下升级操作都需要在新版本的目录进行。
## 升级步骤
@ -50,41 +50,41 @@ jar 包 并添加到 `./tools/libs` 目录下,设置以下环境变量
### worker 分组的区别(以 1.3.1 版本为界)
创建worker分组在1.3.1版本之前,与 1.3.1之后到 2.0.0 之间的版本有不同的设计:
创建 worker 分组在 1.3.1 版本之前,与 1.3.1 之后到 2.0.0 之间的版本有不同的设计:
- worker分组在1.3.1版本之前是通过UI界面创建
- worker分组在1.3.1 到 2.0.0之前的版本是修改 worker 配置指定
- worker 分组在 1.3.1 版本之前是通过 UI 界面创建
- worker 分组在 1.3.1 到 2.0.0 之前的版本是修改 worker 配置指定
#### 面对这种区别我应该怎么升级
1.3.1之前的版本升级1.3.2时如何设置worker分组与之前一致
1.3.1 之前的版本升级 1.3.2 时如何设置 worker 分组与之前一致
* 查询已备份的数据库,查看 `t_ds_worker_group` 表记录重点看下id、name和ip_list三个字段
- 查询已备份的数据库,查看 `t_ds_worker_group` 表记录,重点看下 id、name ip_list 三个字段
| id | name | ip_list |
|:---|:--------:|----------------------------:|
| 1 | service1 | 192.168.xx.10 |
| 2 | service2 | 192.168.xx.11,192.168.xx.12 |
* 修改 `bin/env/install_config.conf` 中的 workers 参数
- 修改 `bin/env/install_config.conf` 中的 workers 参数
假设以下为要部署的worker主机名和ip的对应关系
假设以下为要部署的 worker 主机名和 ip 的对应关系
| 主机名 | ip |
| :--- | :---: |
| ds1 | 192.168.xx.10 |
| ds2 | 192.168.xx.11 |
| ds3 | 192.168.xx.12 |
| :--- | :---: |
| ds1 | 192.168.xx.10 |
| ds2 | 192.168.xx.11 |
| ds3 | 192.168.xx.12 |
那么为了保持与之前版本worker分组一致则需要把workers参数改为如下
那么为了保持与之前版本 worker 分组一致,则需要把 workers 参数改为如下
```sh
# worker服务部署在哪台机器上,并指定此worker属于哪一个worker组
workers="ds1:service1,ds2:service2,ds3:service2"
```
#### 1.3.2及以后的版本对 worker 分组功能进行增强
#### 1.3.2 及以后的版本对 worker 分组功能进行增强
1.3.1 以及之前的版本worker不能同时属于多个worker分组1.3.2及之后2.0.0之前的版本是可以支持的所以可以使用如下配置对一台worker配置多个分组
1.3.1 以及之前的版本 worker 不能同时属于多个 worker 分组1.3.2 及之后2.0.0 之前的版本是可以支持的,所以可以使用如下配置对一台 worker 配置多个分组
```sh
workers="ds1:service1,ds1:service2"

View File

@ -33,4 +33,4 @@ After do this two steps, you can start your DolphinScheduler cluster, your clust
store server metadata.
NOTE: You need to add `mysql-connector-java.jar` into DS classpath, since this plugin will not bundle this driver in distribution.
You can get the detail about <a href="https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/guide/installation/pseudo-cluster.html">Initialize the Database</a>
You can get the detail about <a href="https://dolphinscheduler.apache.org/#/en-us/docs/3.1.2/guide/installation/pseudo-cluster">Initialize the Database</a>