Big Whale(巨鲸),为美柚大数据研发的大数据任务调度平台,提供Spark、Flink等离线任务的调度(支持任务间的依赖调度)以及实时任务的监控,并具有批次积压告警、任务异常重启、重复应用监测、大内存应用监测等功能。 服务基于Spring Boot 2.0开发,部署方便,功能强大,打包后即可运行。[Github][Gitee]
- Java 1.8+
- Mysql 5.1.0+
- 下载项目或git clone项目
- 为解决 github README.md 图片无法正常加载的问题,请在hosts文件中加入相关域名解析规则,参考:hosts
- 创建数据库:big-whale
- 运行数据库脚本:big-whale.sql
- 根据Spring Boot环境,配置相关数据库账号密码,以及SMTP信息
- 配置:big-whale.properties
- 配置项说明
- ssh.user: 拥有脚本执行权限的ssh用户(平台会使用该用户作为统一的脚本执行用户)
- ssh.password: 拥有脚本执行权限的ssh用户密码
- dingding.enabled: 是否开启钉钉告警
- dingding.watcher-token: 钉钉公共群机器人Token
- yarn.app-memory-threshold: Yarn应用内存上限,-1禁用监测
- yarn.app-white-list: 白名单列表(列表中的应用申请的内存超过上限,不会进行告警)
- 配置项说明
- 修改:$FLINK_HOME/bin/flink(flink提交任务时,只能读取本地jar包,故需要在执行flink提交命令时从hdfs上下载jar包并替换脚本的jar包路径参数,参考:flink)
- 服务打包:mvn clean package
- 检查端口17070是否被占用,被占用的话,关闭占用的进程或修改项目端口号配置重新打包
- 拷贝target下的big-whale.jar,执行命令:java -jar big-whale.jar
- 打开:http://localhost:17070
- 输入账号admin,密码admin
- 点击:权限管理->用户管理,修改当前账号的邮箱为合法且存在的邮箱地址,否则会导致邮件发送错误、执行状态更新失败等问题
- 添加集群
- 添加代理
- 添加集群用户
- 添加计算框架版本
- 脚本管理->新增
- “类型”有shell、spark实时、spark离线、flink实时、flink离线,示例为:spark实时
- 因为当前用户为超级管理员,可为所有用户创建脚本,故需要选择“用户”
- “程序包”应上传与脚本类型相应的Spark流式任务打成的jar包
- “资源选项”可不填
- 代码有两种编辑模式,“可视化视图”和“代码视图”,可互相切换
- 脚本管理
- 点击执行上一步新建的脚本
- 执行成功后在详情中便可查看到Yarn应用详情的连接(提交Yarn任务的日志级别请设置为:INFO)
- 执行超时或失败会有相应的邮件告警
- 对于类型为“shell”、“spark离线”和“flink离线”的脚本,可通过添加此功能实现DAG任务调度(v1.1开始支持,需要从v1.0升级的,请查阅SchedulingFieldGenerateForV1_1Test.java)
- 说明:平台提交saprk或flink任务的时候默认都会以“后台”的方式执行,对应spark配置:--conf spark.yarn.submit.waitAppCompletion=false,flink配置:-d,但是基于后台任务监测的实现,通过回调实现串行任务调度的时候会等待真正运行的任务完成后再执行下一脚本
- /openapi/script/execute.api 可执行携带可变参数的脚本
- /openapi/scheduling/execute.api 可执行携带可变参数脚本的“离线调度”任务
- 请求方式: POST Body
- 参数:
- sign: 用户密码Base64
- id: 脚本ID或离线调度ID
- args: 参数对象
{
"sign": "c3V4aWFveWFuZzExIQ==",
"id": "8a80813a7154f28a017154f6637c1794",
"args": {
"$output_dir": "/var",
"$dt": "20200415"
}
}
The project is licensed under the Apache 2 license.