分布式任務(wù)調(diào)度系統(tǒng)Akkaflow介紹

akkaflow

簡(jiǎn)介

akkaflow是一個(gè)基于akka架構(gòu)上構(gòu)建的分布式高可用ETL工作流調(diào)度工具,可以把任務(wù)分發(fā)在集群中不同的節(jié)點(diǎn)上并行執(zhí)行峭火,高效利用集群資源被芳,支持時(shí)間及任務(wù)混合觸發(fā)襟企;提供多種節(jié)點(diǎn)類(lèi)型。其中工作流由xml文件寝凌,并且提供一套完整的基于Shell的操作命令集勋陪,簡(jiǎn)潔易用,長(zhǎng)期穩(wěn)定運(yùn)行硫兰,可作為構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)诅愚、或大數(shù)據(jù)平臺(tái)上的調(diào)度工具。
用戶(hù)提交的xml工作流定義文件劫映,滿(mǎn)足觸發(fā)條件后违孝,系統(tǒng)會(huì)觸發(fā)執(zhí)行工作流;實(shí)例運(yùn)行產(chǎn)生的各類(lèi)數(shù)據(jù)將被記錄并提供用戶(hù)查看與進(jìn)一步操作泳赋,其中

  • 簡(jiǎn)單的前端操作頁(yè)面詳見(jiàn)演示地址雌桑,演示賬號(hào)密碼分別為admin/admin,機(jī)器配置為(1內(nèi)核,1G內(nèi)存)
  • 工作流定義文檔詳見(jiàn)這里 祖今,目前支持行動(dòng)節(jié)點(diǎn)類(lèi)型有以下校坑,可進(jìn)一步擴(kuò)展功能
行動(dòng)節(jié)點(diǎn)類(lèi)型 節(jié)點(diǎn)功能簡(jiǎn)述
<sql/> sql執(zhí)行節(jié)點(diǎn),目前支持Hive千诬、Mysql耍目、Oracle、Impala數(shù)據(jù)庫(kù)徐绑。
<transfer/> 數(shù)據(jù)傳輸節(jié)點(diǎn)邪驮,目前支持Mysql、Oracle傲茄、Hive毅访、本地文件、hdfs文件之間的數(shù)據(jù)行傳輸盘榨。
<metadata/> 元數(shù)據(jù)配置節(jié)點(diǎn)(庫(kù)表注釋配置)喻粹,可通過(guò)血緣表自動(dòng)配置目標(biāo)表元數(shù)據(jù),亦可顯式配置草巡。
<script/> 腳本代碼執(zhí)行節(jié)點(diǎn)守呜,支持各類(lèi)型腳本,bash、python弛饭、perl、scala等萍歉。
<file-executor/> 腳本文件遠(yuǎn)程執(zhí)行節(jié)點(diǎn)侣颂,把master機(jī)器上的腳本文件及附件分發(fā)到目標(biāo)worker機(jī)器上執(zhí)行。
<file-monitor/> 文件監(jiān)控節(jié)點(diǎn)枪孩,監(jiān)控本地或hdfs文件數(shù)量及大小憔晒。
<data-monitor/> 數(shù)據(jù)監(jiān)控節(jié)點(diǎn),可監(jiān)控?cái)?shù)據(jù)庫(kù)記錄數(shù)蔑舞,文件行數(shù)拒担,文件大小等不同類(lèi)型數(shù)據(jù)。
<email/> 自定義郵件節(jié)點(diǎn)攻询,可以以html形式自定義郵件內(nèi)容从撼,發(fā)送目標(biāo)郵箱。
  • 使用示例點(diǎn)擊這里
  • 基于shell命令集操作文檔詳見(jiàn)下面使用章節(jié)

整個(gè)akkaflow架構(gòu)目前包含有四個(gè)節(jié)點(diǎn)角色:Master钧栖、Master-Standby低零、Worker、Http-Server拯杠,每個(gè)角色可以獨(dú)立部署于不同機(jī)器上掏婶,支持高可用。

節(jié)點(diǎn)角色關(guān)系圖

  • Master 活動(dòng)主節(jié)點(diǎn)潭陪,調(diào)度觸發(fā)工作流實(shí)例雄妥,分發(fā)子任務(wù)
  • Master-Standby 熱備份主節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)宕機(jī)依溯,立刻切換為活動(dòng)主節(jié)點(diǎn)
  • Worker 任務(wù)節(jié)點(diǎn)老厌,可部署在多個(gè)機(jī)器上,運(yùn)行主節(jié)點(diǎn)分發(fā)過(guò)來(lái)的任務(wù)黎炉,并反饋運(yùn)行結(jié)果梅桩。
  • Http-Server http服務(wù)節(jié)點(diǎn),提供http API查看操作當(dāng)前akkaflow系統(tǒng)拜隧。
    Aaron Swartz

部署

1宿百、打包

  • 可以直接在這里下載akkaflow-x.x.zip,這是已經(jīng)打包好的程序包
  • 可以把工程check out下來(lái)洪添,用sbt-native-packager進(jìn)行編譯打包(直接運(yùn)行sbt dist)

2垦页、安裝

  • 安裝環(huán)境:Linux系統(tǒng)(UTF8編碼環(huán)境)或MacOS、jdk1.8或以上干奢、MySQL5.7或以上
  • 設(shè)置好JAVA_HOME環(huán)境變量

3痊焊、目錄說(shuō)明

  • sbin 存放用戶(hù)操作命令,如啟動(dòng)節(jié)點(diǎn)命令等
  • lib 存放相關(guān)jar包
  • logs 存放相關(guān)日志
  • config 存放相關(guān)配置文件
  • xmlconfig 存放示例工作流文件,系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)載入

4薄啥、安裝步驟 (偽分布式部署):

  • 解壓到/your/app/dir
  • 準(zhǔn)備一個(gè)mysql數(shù)據(jù)庫(kù)辕羽,(如數(shù)據(jù)庫(kù)名稱(chēng)為wf,用戶(hù)密碼分別為root/root)
  • 準(zhǔn)備一個(gè)郵箱賬戶(hù)(推薦用網(wǎng)易郵箱)垄惧,支持smtp方式發(fā)送郵件刁愿。
  • 修改配置文件 config/application.conf中以下部分(基本修改數(shù)據(jù)庫(kù)以及郵件配置項(xiàng)就可以了)
  mysql {   //用mysql來(lái)持久化數(shù)據(jù)
    user = "root"
    password = "root"
    jdbc-url = "jdbc:mysql://localhost:3306/wf?autoReconnect=true"
    is-enabled = true
  }
  email {   //告警郵箱設(shè)置
    hostname = "smtp.163.com"
    smtp-port = 465  //smtp端口,可選
    auth = true
    account = "15018735011@163.com"
    password = "******"
    charset = "utf8"
    is-enabled = true
  }
  extra {  //hdfs集群配置
    hdfs-uri = "hdfs://quickstart.cloudera:8020"
  }
  • 啟動(dòng)角色(獨(dú)立部署模式)
    其中到逊,當(dāng)前偽分布部署铣口,是把master、worker觉壶、http-servers在同一臺(tái)機(jī)器的不同端口啟動(dòng)
    執(zhí)行: ./standalone-startup
  • 查看啟動(dòng)日志
    啟動(dòng)時(shí)會(huì)在終端打印日志脑题,另外,日志也追加到./logs/run.log中铜靶,tail一下日志叔遂,看下啟動(dòng)時(shí)是否有異常,無(wú)異常則表示啟動(dòng)成功争剿。
  • 查看進(jìn)程
    啟動(dòng)完后掏熬,使用jps查看進(jìn)程
2338 HttpServer
2278 Worker
2124 Master

注意:akkaflow工作流定義可以存放于xmlconfig下,akkaflow啟動(dòng)時(shí)秒梅,會(huì)自動(dòng)并一直掃描xmlconfig下面的文件旗芬,生成對(duì)應(yīng)的worflow提交給Master,所以工作流文件捆蜀,也可以放到該目錄中疮丛,安裝包下的xmlconfig/example下有工作流定義示例。

5辆它、關(guān)閉集群

執(zhí)行./sbin/stop-cluster, 關(guān)閉集群系統(tǒng)

命令使用

1誊薄、角色節(jié)點(diǎn)操作命令

  • standalone模式啟動(dòng):sbin/standalone-startup(該模式下會(huì)啟動(dòng)master、worker锰茉、http-server)
  • master節(jié)點(diǎn)啟動(dòng):sbin/master-startup
  • worker節(jié)點(diǎn)啟動(dòng):sbin/worker-startup
  • http_server節(jié)點(diǎn)啟動(dòng):sbin/httpserver-startup
  • master-standby節(jié)點(diǎn)啟動(dòng):sbin/master-standby-startup
  • 關(guān)閉集群:sbin/stop-cluster

2呢蔫、akkaflow操作命令集

命令集入口
kentdeMacBook-Pro:sbin kent$ ./akka
   _     _     _            __  _
  / \   | | __| | __ __ _  / _|| |  ___ __      __
 / _ \  | |/ /| |/ // _` || |_ | | / _ \\ \ /\ / /
/ ___ \ |   < |   <| (_| ||  _|| || (_) |\ V  V /
/_/   \_\|_|\_\|_|\_\\__,_||_|  |_| \___/  \_/\_/

【使用】
  akka [ front| instance| workflow| util]
【說(shuō)明】
  akkaflow調(diào)度系統(tǒng)命令入口。
  1飒筑、akka front 調(diào)度系統(tǒng)首頁(yè)
  2片吊、akka instance 工作流實(shí)例操作命令集,詳見(jiàn)該命令
  3协屡、akka workflow 工作流操作命令集俏脊,詳見(jiàn)該命令
  4、akka util 輔助操作命令集肤晓,詳見(jiàn)該命令
【示例】
  akka front
  akka instance -info -log 574de284 (查看某實(shí)例)
  akka workflow -kill 574de284 (殺死某運(yùn)行中的實(shí)例) 
命令集合列表
Aaron Swartz

注意: 除了節(jié)點(diǎn)啟動(dòng)命令认然,把工作流定義的xml文件放在xmlconfig目錄下漫萄,可自動(dòng)掃描添加對(duì)應(yīng)工作流或調(diào)度器,也可以用命令提交.

任務(wù)實(shí)例告警郵件

Aaron Swartz

版本計(jì)劃

  1. 界面集成一個(gè)可視化拖拉配置工作流與調(diào)度器的開(kāi)發(fā)功能模塊(這一塊感覺(jué)自己做不來(lái))腾务,目前的工作流以及調(diào)度器主要還是要自己編寫(xiě)xml文件毕骡,不夠簡(jiǎn)便。
  2. 增加運(yùn)行節(jié)點(diǎn)收集機(jī)器性能指標(biāo)的功能。
  3. 外面套一層功能權(quán)限管理的模塊葵孤,區(qū)分限制人員角色模塊及數(shù)據(jù)權(quán)限,支持多人使用或協(xié)助的場(chǎng)景尤仍。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箫津,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宰啦,更是在濱河造成了極大的恐慌,老刑警劉巖田炭,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漓柑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瞬矩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)景用,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伞插,“玉大人盾碗,你說(shuō)我怎么就攤上這事≈枚” “怎么了氢伟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蹦锋,是天一觀(guān)的道長(zhǎng)诚些。 經(jīng)常有香客問(wèn)我,道長(zhǎng)诬烹,這世上最難降的妖魔是什么弃鸦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮唬格,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汰聋。我一直安慰自己喊积,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布韭邓。 她就那樣靜靜地躺著溶弟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸭你。 梳的紋絲不亂的頭發(fā)上擒权,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音愉老,去河邊找鬼剖效。 笑死焰盗,一個(gè)胖子當(dāng)著我的面吹牛咒林,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垫竞,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼欢瞪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了啸盏?” 一聲冷哼從身側(cè)響起譬正,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤檬姥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后抒巢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秉犹,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸳劳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涵紊,死狀恐怖幔摸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驱负,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布踏揣,位于F島的核電站匾乓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拼缝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一衰齐、第九天 我趴在偏房一處隱蔽的房頂上張望继阻。 院中可真熱鬧,春花似錦抹缕、人聲如沸墨辛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)太惠。三九已至,卻和暖如春梁只,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敛纲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工剂癌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旁壮。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像裁奇,于是被迫代替她去往敵國(guó)和親麦撵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 作者:陶陽(yáng)宇音五,花名舉水羔沙,阿里云高級(jí)技術(shù)專(zhuān)家,飛天分布式系統(tǒng)早期核心開(kāi)發(fā)人員坚嗜,開(kāi)發(fā)和優(yōu)化過(guò)伏羲系統(tǒng)中多個(gè)功能模塊诗充,參...
    十人言末閱讀 1,470評(píng)論 0 1
  • YarnYarn產(chǎn)生背景:Yarn直接來(lái)自于MR1.0MR1.0 問(wèn)題:采用的是master slave結(jié)構(gòu),ma...
    時(shí)待吾閱讀 5,677評(píng)論 2 23
  • 運(yùn)維焦油坑 隨著互聯(lián)網(wǎng)+和去IOE浪潮的推進(jìn)银室,傳統(tǒng)行業(yè)X86服務(wù)器的數(shù)量逐漸增多。服務(wù)器數(shù)量劇增帶來(lái)的直接后果就是...
    丁明威閱讀 9,937評(píng)論 0 12
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理汽抚,服務(wù)發(fā)現(xiàn),斷路器造烁,智...
    卡卡羅2017閱讀 134,665評(píng)論 18 139
  • 最近樓豬頻心煩意亂頻繁安裝php集成環(huán)境午笛,最終導(dǎo)致80端口被占的不測(cè):###### 就連絕招kill任務(wù)都不管用了...
    hello大象閱讀 1,140評(píng)論 0 0