@ -0,0 +1,35 @@ |
|||||||
|
.git |
||||||
|
.svn |
||||||
|
.hg |
||||||
|
.zip |
||||||
|
.gz |
||||||
|
.DS_Store |
||||||
|
.idea |
||||||
|
.idea/ |
||||||
|
.idea/* |
||||||
|
.target |
||||||
|
.target/ |
||||||
|
target/* |
||||||
|
*/target |
||||||
|
*/target/* |
||||||
|
.settings |
||||||
|
.nbproject |
||||||
|
.classpath |
||||||
|
.project |
||||||
|
*.iml |
||||||
|
*.ipr |
||||||
|
*.iws |
||||||
|
*.tgz |
||||||
|
.*.swp |
||||||
|
.vim |
||||||
|
.tmp |
||||||
|
node_modules |
||||||
|
npm-debug.log |
||||||
|
.vscode |
||||||
|
logs/* |
||||||
|
.www |
||||||
|
t.* |
||||||
|
yarn.lock |
||||||
|
package-lock.json |
||||||
|
config.gypi |
||||||
|
test/coverage |
@ -0,0 +1,63 @@ |
|||||||
|
Easy Scheduler |
||||||
|
============ |
||||||
|
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) |
||||||
|
|
||||||
|
> Easy Scheduler for Big Data |
||||||
|
|
||||||
|
**设计特点:** 一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中`开箱即用`。 |
||||||
|
其主要目标如下: |
||||||
|
- 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态 |
||||||
|
- 支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等 |
||||||
|
- 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作 |
||||||
|
- 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败 |
||||||
|
- 支持工作流全局参数及节点自定义参数设置 |
||||||
|
- 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑 |
||||||
|
- 支持任务日志在线查看及滚动、在线下载日志等 |
||||||
|
- 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化 |
||||||
|
- 支持对`Master/Worker` cpu load,memory,cpu在线查看 |
||||||
|
- 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计 |
||||||
|
- 支持补数 |
||||||
|
- 支持多租户 |
||||||
|
- 支持国际化 |
||||||
|
- 还有更多等待伙伴们探索 |
||||||
|
|
||||||
|
### 与同类调度系统的对比 |
||||||
|
|
||||||
|
![调度系统对比](http://geek.analysys.cn/static/upload/47/2019-03-01/9609ca82-cf8b-4d91-8dc0-0e2805194747.jpeg) |
||||||
|
|
||||||
|
### 系统部分截图 |
||||||
|
|
||||||
|
![](http://geek.analysys.cn/static/upload/221/2019-03-29/0a9dea80-fb02-4fa5-a812-633b67035ffc.jpeg) |
||||||
|
|
||||||
|
![](http://geek.analysys.cn/static/upload/221/2019-04-01/83686def-a54f-4169-8cae-77b1f8300cc1.png) |
||||||
|
|
||||||
|
![](http://geek.analysys.cn/static/upload/221/2019-03-29/83c937c7-1793-4d7a-aa28-b98460329fe0.jpeg) |
||||||
|
|
||||||
|
### 文档 |
||||||
|
|
||||||
|
- <a href="https://analysys.github.io/easyscheduler_docs_cn/后端部署文档.html" target="_blank">后端部署文档</a> |
||||||
|
|
||||||
|
- <a href="https://analysys.github.io/easyscheduler_docs_cn/前端部署文档.html" target="_blank">前端部署文档</a> |
||||||
|
|
||||||
|
- [**使用手册**](https://analysys.github.io/easyscheduler_docs_cn/系统使用手册.html?_blank "系统使用手册") |
||||||
|
|
||||||
|
- <a href="http://52.82.13.76:8888" target="_blank">我要体验</a> 普通用户登录:demo/demo123 |
||||||
|
|
||||||
|
更多文档请参考 <a href="https://analysys.github.io/easyscheduler_docs_cn/" target="_blank">easyscheduler中文在线文档</a> |
||||||
|
|
||||||
|
### 感谢 |
||||||
|
|
||||||
|
- Easy Scheduler使用了很多优秀的开源项目,比如google的guava、guice、grpc,netty,ali的bonecp,quartz,以及apache的众多开源项目等等, |
||||||
|
正是由于站在这些开源项目的肩膀上,才有Easy Scheduler的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的 |
||||||
|
贡献者,于是我们决定把易调度贡献出来,并承诺长期维护。也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力! |
||||||
|
|
||||||
|
### 帮助 |
||||||
|
The fastest way to get response from our developers is to submit issues, or add our wechat : 510570367 |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,23 @@ |
|||||||
|
{ |
||||||
|
"title": "调度系统-EasyScheduler", |
||||||
|
"author": "YIGUAN", |
||||||
|
"description": "调度系统", |
||||||
|
"language": "zh-hans", |
||||||
|
"gitbook": "3.2.3", |
||||||
|
"styles": { |
||||||
|
"website": "./styles/website.css" |
||||||
|
}, |
||||||
|
"structure": { |
||||||
|
"readme": "README.md" |
||||||
|
}, |
||||||
|
"plugins":[ |
||||||
|
"expandable-chapters", |
||||||
|
"insert-logo-link" |
||||||
|
], |
||||||
|
"pluginsConfig": { |
||||||
|
"insert-logo-link": { |
||||||
|
"src": "http://geek.analysys.cn/static/upload/236/2019-03-29/379450b4-7919-4707-877c-4d33300377d4.png", |
||||||
|
"url": "https://github.com/analysys/EasyScheduler" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 100 KiB |
@ -0,0 +1,22 @@ |
|||||||
|
.gitbook-link { |
||||||
|
display: none !important; |
||||||
|
} |
||||||
|
.book.font-family-0 { |
||||||
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; |
||||||
|
} |
||||||
|
|
||||||
|
.body-inner .i18n { |
||||||
|
position: absolute; |
||||||
|
right: 140px; |
||||||
|
top: 0; |
||||||
|
height: 50px; |
||||||
|
line-height: 50px; |
||||||
|
padding: 0 10px; |
||||||
|
color: #ccc; |
||||||
|
font-size: 14px; |
||||||
|
display: inline-block; |
||||||
|
} |
||||||
|
|
||||||
|
.body-inner .i18n:hover { |
||||||
|
color: #999; |
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
package cn.escheduler.server.worker; |
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils; |
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
|
||||||
|
import java.io.BufferedReader; |
||||||
|
import java.io.FileInputStream; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStreamReader; |
||||||
|
|
||||||
|
/** |
||||||
|
* Created by qiaozhanwei on 2019/4/15. |
||||||
|
*/ |
||||||
|
public class EnvFileTest { |
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(EnvFileTest.class); |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
String path = System.getProperty("user.dir")+"\\script\\env\\.escheduler_env.sh"; |
||||||
|
String pythonHome = getPythonHome(path); |
||||||
|
logger.info(pythonHome); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* get python home |
||||||
|
* @param path |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
private static String getPythonHome(String path){ |
||||||
|
BufferedReader br = null; |
||||||
|
String line = null; |
||||||
|
StringBuilder sb = new StringBuilder(); |
||||||
|
try { |
||||||
|
br = new BufferedReader(new InputStreamReader(new FileInputStream(path))); |
||||||
|
while ((line = br.readLine()) != null){ |
||||||
|
if (line.contains("PYTHON_HOME")){ |
||||||
|
sb.append(line); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
String result = sb.toString(); |
||||||
|
if (StringUtils.isEmpty(result)){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
String[] arrs = result.split("="); |
||||||
|
if (arrs.length == 2){ |
||||||
|
return arrs[1]; |
||||||
|
} |
||||||
|
|
||||||
|
}catch (IOException e){ |
||||||
|
logger.error("read file failed : " + e.getMessage(),e); |
||||||
|
}finally { |
||||||
|
try { |
||||||
|
if (br != null){ |
||||||
|
br.close(); |
||||||
|
} |
||||||
|
} catch (IOException e) { |
||||||
|
logger.error(e.getMessage(),e); |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
@ -1,6 +1,6 @@ |
|||||||
|
|
||||||
# 后端接口地址 |
# 后端接口地址 |
||||||
API_BASE = http://192.168.xx.xx:12345 |
API_BASE = http://192.168.220.154:12345 |
||||||
|
|
||||||
# 本地开发如需ip访问项目把"#"号去掉 |
# 本地开发如需ip访问项目把"#"号去掉 |
||||||
#DEV_HOST = 192.168.xx.xx |
#DEV_HOST = 192.168.xx.xx |
||||||
|
After Width: | Height: | Size: 550 B |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 434 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 586 B |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,7 @@ |
|||||||
|
<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta http-equiv="Cache-Control" content="no-siteapp"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="标题"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><meta name="format-detection" content="telphone=no, email=no"><meta name="screen-orientation" content="portrait"><meta name="x5-orientation" content="portrait"><meta name="theme-color" content="#4a8dee"><meta name="msapplication-navbutton-color" content="#4a8dee"><meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><link rel="shortcut icon" href="/images/favicon.ico"><link href="/combo/1.0.0/base.css?v1.0.0.1" rel="stylesheet"><link href="/combo/1.0.0/3rd.css?v1.0.0.1" rel="stylesheet"><!--[if lt IE 9]> |
||||||
|
<script src="/combo/1.0.0/es5.js"></script> |
||||||
|
<![endif]--><script>let NODE_ENV = 'true'</script><title>EasyScheduler</title><link href="/css/common.8ba9af7.css" rel="stylesheet"><link href="/css/home/index.0212fa5.css" rel="stylesheet"></head><body><div id="app"></div><div id="contextmenu" class="contextmenu"></div><div class="global-loading"><div class="svg-box"><svg class="lds-gears" width="54px" height="54px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" style="background: none;"><g transform="translate(50 50)"><g transform="translate(-19 -19) scale(0.6)"><g transform="rotate(107.866)"><animateTransform attributeName="transform" type="rotate" values="0;360" keyTimes="0;1" dur="1s" begin="0s" repeatCount="indefinite"></animateTransform><path |
||||||
|
d="M37.3496987939662 -7 L47.3496987939662 -7 L47.3496987939662 7 L37.3496987939662 7 A38 38 0 0 1 31.359972760794346 21.46047782418268 L31.359972760794346 21.46047782418268 L38.431040572659825 28.531545636048154 L28.531545636048154 38.431040572659825 L21.46047782418268 31.359972760794346 A38 38 0 0 1 7.0000000000000036 37.3496987939662 L7.0000000000000036 37.3496987939662 L7.000000000000004 47.3496987939662 L-6.999999999999999 47.3496987939662 L-7 37.3496987939662 A38 38 0 0 1 -21.46047782418268 31.35997276079435 L-21.46047782418268 31.35997276079435 L-28.531545636048154 38.431040572659825 L-38.43104057265982 28.531545636048158 L-31.359972760794346 21.460477824182682 A38 38 0 0 1 -37.3496987939662 7.000000000000007 L-37.3496987939662 7.000000000000007 L-47.3496987939662 7.000000000000008 L-47.3496987939662 -6.9999999999999964 L-37.3496987939662 -6.999999999999997 A38 38 0 0 1 -31.35997276079435 -21.460477824182675 L-31.35997276079435 -21.460477824182675 L-38.431040572659825 -28.531545636048147 L-28.53154563604818 -38.4310405726598 L-21.4604778241827 -31.35997276079433 A38 38 0 0 1 -6.999999999999992 -37.3496987939662 L-6.999999999999992 -37.3496987939662 L-6.999999999999994 -47.3496987939662 L6.999999999999977 -47.3496987939662 L6.999999999999979 -37.3496987939662 A38 38 0 0 1 21.460477824182686 -31.359972760794342 L21.460477824182686 -31.359972760794342 L28.531545636048158 -38.43104057265982 L38.4310405726598 -28.53154563604818 L31.35997276079433 -21.4604778241827 A38 38 0 0 1 37.3496987939662 -6.999999999999995 M0 -23A23 23 0 1 0 0 23 A23 23 0 1 0 0 -23" |
||||||
|
fill="#0097e0"></path></g></g><g transform="translate(19 19) scale(0.6)"><g transform="rotate(229.634)"><animateTransform attributeName="transform" type="rotate" values="360;0" keyTimes="0;1" dur="1s" begin="-0.0625s" repeatCount="indefinite"></animateTransform><path |
||||||
|
d="M37.3496987939662 -7 L47.3496987939662 -7 L47.3496987939662 7 L37.3496987939662 7 A38 38 0 0 1 31.359972760794346 21.46047782418268 L31.359972760794346 21.46047782418268 L38.431040572659825 28.531545636048154 L28.531545636048154 38.431040572659825 L21.46047782418268 31.359972760794346 A38 38 0 0 1 7.0000000000000036 37.3496987939662 L7.0000000000000036 37.3496987939662 L7.000000000000004 47.3496987939662 L-6.999999999999999 47.3496987939662 L-7 37.3496987939662 A38 38 0 0 1 -21.46047782418268 31.35997276079435 L-21.46047782418268 31.35997276079435 L-28.531545636048154 38.431040572659825 L-38.43104057265982 28.531545636048158 L-31.359972760794346 21.460477824182682 A38 38 0 0 1 -37.3496987939662 7.000000000000007 L-37.3496987939662 7.000000000000007 L-47.3496987939662 7.000000000000008 L-47.3496987939662 -6.9999999999999964 L-37.3496987939662 -6.999999999999997 A38 38 0 0 1 -31.35997276079435 -21.460477824182675 L-31.35997276079435 -21.460477824182675 L-38.431040572659825 -28.531545636048147 L-28.53154563604818 -38.4310405726598 L-21.4604778241827 -31.35997276079433 A38 38 0 0 1 -6.999999999999992 -37.3496987939662 L-6.999999999999992 -37.3496987939662 L-6.999999999999994 -47.3496987939662 L6.999999999999977 -47.3496987939662 L6.999999999999979 -37.3496987939662 A38 38 0 0 1 21.460477824182686 -31.359972760794342 L21.460477824182686 -31.359972760794342 L28.531545636048158 -38.43104057265982 L38.4310405726598 -28.53154563604818 L31.35997276079433 -21.4604778241827 A38 38 0 0 1 37.3496987939662 -6.999999999999995 M0 -23A23 23 0 1 0 0 23 A23 23 0 1 0 0 -23" |
||||||
|
fill="#7f8b95"></path></g></g></g></svg> <span class="sp1">Loading ...</span></div></div><script src="/combo/1.0.0/3rd.js?v1.0.0.1"></script><script src="/js/common.804ec41.js"></script><script src="/js/home/index.2ed28db.js"></script></body></html> |