[開源]大數(shù)據(jù)研發(fā)的分布式計(jì)算任務(wù)調(diào)度系統(tǒng),基于Spring Boot 開發(fā)
一飛開源,介紹創(chuàng)意、新奇、有趣、實(shí)用的免費(fèi)開源應(yīng)用、系統(tǒng)、軟件、硬件及技術(shù),一個探索、發(fā)現(xiàn)、分享、使用與互動交流的開源技術(shù)社區(qū)平臺。致力于打造活力開源社區(qū),共建開源新生態(tài)!
一、開源項(xiàng)目簡介
巨鯨任務(wù)調(diào)度平臺為美柚大數(shù)據(jù)研發(fā)的分布式計(jì)算任務(wù)調(diào)度系統(tǒng),提供spark、Flink等批處理任務(wù)的DAG調(diào)度和流處理任務(wù)的運(yùn)行管理和狀態(tài)監(jiān)控,并具有Yarn應(yīng)用管理、重復(fù)應(yīng)用檢測、大內(nèi)存應(yīng)用檢測等功能。 服務(wù)基于Spring Boot 2.0開發(fā),打包后即可運(yùn)行。
二、開源協(xié)議
使用Apache-2.0開源協(xié)議
三、界面展示
初始配置
- 打開:http://localhost:17070
- 輸入賬號admin,密碼admin
- 點(diǎn)擊:權(quán)限管理->用戶管理,修改當(dāng)前賬號的郵箱為合法且存在的郵箱地址,否則會導(dǎo)致郵件發(fā)送失敗
- 添加集群集群管理->集群管理->新增
“yarn管理地址”為Yarn ResourceManager的WEB UI地址“程序包存儲目錄”為程序包上傳至hdfs集群時的存儲路徑,如:/data/big-whale/storage“支持Flink任務(wù)代理用戶”“流處理任務(wù)黑名單”和“批處理任務(wù)黑名單”為內(nèi)部定制的任務(wù)分配規(guī)則,勿填
- 添加集群用戶集群管理->集群用戶->新增
該配置的語義為:平臺用戶在所選集群下可以使用的Yarn資源隊(duì)列(–queue)和代理用戶(–proxy-user)
- 添加代理集群管理->代理管理->新增
可添加多個實(shí)例(僅支持IP地址,可指定端口號,默認(rèn)為22),執(zhí)行腳本的時候會隨機(jī)選擇一個實(shí)例執(zhí)行,在實(shí)例不可達(dá)的情況下,會繼續(xù)隨機(jī)選擇下一個實(shí)例,在實(shí)例均不可達(dá)時執(zhí)行失敗選擇集群后,會作為該集群下提交Spark或Flink任務(wù)的代理之一
- 添加計(jì)算框架版本集群管理->版本管理->新增
同一集群下不同版本的Spark或Flink任務(wù)的提交命令可能有所不同,如Spark 1.6.0版本的提交命令為spark-submit,Spark 2.1.0版本的提交命令為spark2-submit
使用
1.離線調(diào)度
1.1 新增
- 目前支持“Shell”、“Spark Batch”和“Flink Batch”三種類型的批處理任務(wù)
- 通過拖拽左側(cè)工具欄相應(yīng)的批處理任務(wù)圖標(biāo),可添加相應(yīng)的DAG節(jié)點(diǎn)
支持時間參數(shù)${now} ${now – 1d} ${now – 1h@yyyyMMddHHmmss}等(d天、h時、m分、s秒、@yyyyMMddHHmmss為格式化參數(shù))非“Shell”類型的批處理任務(wù)應(yīng)上傳與之處理類型相對應(yīng)的程序包,此處為Spark批處理任務(wù)打成的jar包“資源選項(xiàng)”可不填代碼有兩種編輯模式,“可視化視圖”和“代碼視圖”,可互相切換點(diǎn)擊“測試”可測試當(dāng)前節(jié)點(diǎn)是否正確配置并可以正常運(yùn)行為防止平臺線程被大量占用,平臺提交Saprk或Flink任務(wù)的時候都會強(qiáng)制以“后臺”的方式執(zhí)行,對應(yīng)spark配置:–conf spark.yarn.submit.waitAppCompletion=false,flink配置:-d,但是基于后臺“作業(yè)狀態(tài)更新任務(wù)”的回調(diào),在實(shí)現(xiàn)DAG執(zhí)行引擎時可以確保當(dāng)前節(jié)點(diǎn)所提交的任務(wù)運(yùn)行完成后再執(zhí)行下一個節(jié)點(diǎn)的任務(wù)
- DAG節(jié)點(diǎn)支持失敗重試
- 將節(jié)點(diǎn)按照一定的順序連接起來可以構(gòu)建一個完整的DAG
- DAG構(gòu)建完成后,點(diǎn)擊“保存”,完成調(diào)度設(shè)置
1.2 操作
- 打開離線調(diào)度列表
- 點(diǎn)擊左側(cè)操作欄“調(diào)度實(shí)例”可查看調(diào)度實(shí)例列表、運(yùn)行狀態(tài)和節(jié)點(diǎn)啟動日志
- 點(diǎn)擊左側(cè)操作欄“手動執(zhí)行”可觸發(fā)調(diào)度執(zhí)行
2.實(shí)時任務(wù)
2.1 新增
- 目前支持“Spark Stream”和“Flink Stream”兩種類型的流處理任務(wù)
- 啟用監(jiān)控可以對任務(wù)進(jìn)行狀態(tài)監(jiān)控,包括異常重啟、批次積壓告警等
2.2 操作
- 打開實(shí)時任務(wù)列表
- 點(diǎn)擊左側(cè)操作欄“日志”可查看任務(wù)啟動日志
- 點(diǎn)擊左側(cè)操作欄“執(zhí)行”可觸發(fā)任務(wù)啟動
3.任務(wù)告警
- 正確配置郵件或釘釘告警后在任務(wù)運(yùn)行異常時會發(fā)送相應(yīng)的告警郵件或通知,以便及時進(jìn)行相應(yīng)的處理
<巨鯨任務(wù)告警>代理: agent1類型: 腳本執(zhí)行失敗用戶: admin任務(wù): 調(diào)度示例1 - shell_test時間: 2021-03-05 15:18:23
<巨鯨任務(wù)告警>集群: 集群1類型: spark離線任務(wù)異常(FAILED)用戶: admin任務(wù): 調(diào)度示例1 - spark_test時間: 2021-03-05 15:28:33
<巨鯨任務(wù)告警>集群: 集群1類型: spark實(shí)時任務(wù)批次積壓,已重啟用戶: admin任務(wù): sparkstream_test時間: 2021-03-05 15:30:41
- 除上述告警信息外還有其他告警信息此處不一一列舉
四、功能概述
特性
- 基于SSH的腳本執(zhí)行機(jī)制,部署簡單快捷,僅需單個服務(wù)
- 基于Yarn Rest Api的任務(wù)狀態(tài)同步機(jī)制,對Spark、Flink無版本限制
- 支持失敗重試
- 支持任務(wù)依賴
- 支持復(fù)雜任務(wù)編排(DAG)
- 支持流處理任務(wù)運(yùn)行管理和監(jiān)控
- 支持Yarn應(yīng)用管理
五、技術(shù)選型
1.架構(gòu)圖
部署
1.準(zhǔn)備
- java 1.8
- Mysql 5.1.0
- 下載項(xiàng)目或git clone項(xiàng)目
- 為解決 github README.md 圖片無法正常加載的問題,請?jiān)趆osts文件中加入相關(guān)域名解析規(guī)則,參考:hosts
2.安裝
- 創(chuàng)建數(shù)據(jù)庫:big-whale
- 運(yùn)行數(shù)據(jù)庫腳本:big-whale.sql
- 根據(jù)Spring Boot環(huán)境,配置相關(guān)數(shù)據(jù)庫賬號密碼,以及SMTP信息
- 配置:big-whale.properties配置項(xiàng)說明ssh.user: 擁有腳本執(zhí)行權(quán)限的ssh遠(yuǎn)程登錄用戶名(平臺會將該用戶作為統(tǒng)一的腳本執(zhí)行用戶)ssh.password: ssh遠(yuǎn)程登錄用戶密碼dingding.enabled: 是否開啟釘釘告警dingding.watcher-token: 釘釘公共群機(jī)器人Tokenyarn.app-memory-threshold: Yarn應(yīng)用內(nèi)存上限(單位:MB),-1禁用檢測yarn.app-white-list: Yarn應(yīng)用白名單列表(列表中的應(yīng)用申請的內(nèi)存超過上限,不會進(jìn)行告警)
- 修改:$FLINK_HOME/bin/flink,參考:flink(因flink提交任務(wù)時只能讀取本地jar包,故需要在執(zhí)行提交命令時從hdfs上下載jar包并替換腳本中的jar包路徑參數(shù))
- 打包:mvn clean package
3.啟動
- 檢查端口17070是否被占用,被占用的話,關(guān)閉占用的進(jìn)程或修改項(xiàng)目端口號配置重新打包
- 拷貝target目錄下的big-whale.jar,執(zhí)行命令:java -jar big-whale.jar
六、源碼地址
訪問一飛開源:https://code.exmay.com/