分布式任务调度系统Akkaflow介绍

akkaflow

简介

akkaflow是一个基于akka架构上构建的分布式高可用ETL工作流调度工具,可以把任务分发在集群中不同的节点上并行执行,高效利用集群资源,支持时间及任务混合触发;提供多种节点类型。其中工作流由xml文件,并且提供一套完整的基于Shell的操作命令集,简洁易用,长期稳定运行,可作为构建数据仓库、或大数据平台上的调度工具。
用户提交的xml工作流定义文件,满足触发条件后,系统会触发执行工作流;实例运行产生的各类数据将被记录并提供用户查看与进一步操作,其中

  • 简单的前端操作页面详见演示地址,演示账号密码分别为admin/admin,机器配置为(1内核,1G内存)
  • 工作流定义文档详见这里 ,目前支持行动节点类型有以下,可进一步扩展功能
行动节点类型 节点功能简述
<sql/> sql执行节点,目前支持Hive、Mysql、Oracle、Impala数据库。
<transfer/> 数据传输节点,目前支持Mysql、Oracle、Hive、本地文件、hdfs文件之间的数据行传输。
<metadata/> 元数据配置节点(库表注释配置),可通过血缘表自动配置目标表元数据,亦可显式配置。
<script/> 脚本代码执行节点,支持各类型脚本,bash、python、perl、scala等。
<file-executor/> 脚本文件远程执行节点,把master机器上的脚本文件及附件分发到目标worker机器上执行。
<file-monitor/> 文件监控节点,监控本地或hdfs文件数量及大小。
<data-monitor/> 数据监控节点,可监控数据库记录数,文件行数,文件大小等不同类型数据。
<email/> 自定义邮件节点,可以以html形式自定义邮件内容,发送目标邮箱。
  • 使用示例点击这里
  • 基于shell命令集操作文档详见下面使用章节

整个akkaflow架构目前包含有四个节点角色:Master、Master-Standby、Worker、Http-Server,每个角色可以独立部署于不同机器上,支持高可用。

节点角色关系图

  • Master 活动主节点,调度触发工作流实例,分发子任务
  • Master-Standby 热备份主节点,当主节点宕机,立刻切换为活动主节点
  • Worker 任务节点,可部署在多个机器上,运行主节点分发过来的任务,并反馈运行结果。
  • Http-Server http服务节点,提供http API查看操作当前akkaflow系统。
    Aaron Swartz

部署

1、打包

  • 可以直接在这里下载akkaflow-x.x.zip,这是已经打包好的程序包
  • 可以把工程check out下来,用sbt-native-packager进行编译打包(直接运行sbt dist)

2、安装

  • 安装环境:Linux系统(UTF8编码环境)或MacOS、jdk1.8或以上、MySQL5.7或以上
  • 设置好JAVA_HOME环境变量

3、目录说明

  • sbin 存放用户操作命令,如启动节点命令等
  • lib 存放相关jar包
  • logs 存放相关日志
  • config 存放相关配置文件
  • xmlconfig 存放示例工作流文件,系统启动时会自动载入

4、安装步骤 (伪分布式部署):

  • 解压到/your/app/dir
  • 准备一个mysql数据库,(如数据库名称为wf,用户密码分别为root/root)
  • 准备一个邮箱账户(推荐用网易邮箱),支持smtp方式发送邮件。
  • 修改配置文件 config/application.conf中以下部分(基本修改数据库以及邮件配置项就可以了)
  mysql {   //用mysql来持久化数据
    user = "root"
    password = "root"
    jdbc-url = "jdbc:mysql://localhost:3306/wf?autoReconnect=true"
    is-enabled = true
  }
  email {   //告警邮箱设置
    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"
  }
  • 启动角色(独立部署模式)
    其中,当前伪分布部署,是把master、worker、http-servers在同一台机器的不同端口启动
    执行: ./standalone-startup
  • 查看启动日志
    启动时会在终端打印日志,另外,日志也追加到./logs/run.log中,tail一下日志,看下启动时是否有异常,无异常则表示启动成功。
  • 查看进程
    启动完后,使用jps查看进程
2338 HttpServer
2278 Worker
2124 Master

注意:akkaflow工作流定义可以存放于xmlconfig下,akkaflow启动时,会自动并一直扫描xmlconfig下面的文件,生成对应的worflow提交给Master,所以工作流文件,也可以放到该目录中,安装包下的xmlconfig/example下有工作流定义示例。

5、关闭集群

执行./sbin/stop-cluster, 关闭集群系统

命令使用

1、角色节点操作命令

  • standalone模式启动:sbin/standalone-startup(该模式下会启动master、worker、http-server)
  • master节点启动:sbin/master-startup
  • worker节点启动:sbin/worker-startup
  • http_server节点启动:sbin/httpserver-startup
  • master-standby节点启动:sbin/master-standby-startup
  • 关闭集群:sbin/stop-cluster

2、akkaflow操作命令集

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

【使用】
  akka [ front| instance| workflow| util]
【说明】
  akkaflow调度系统命令入口。
  1、akka front 调度系统首页
  2、akka instance 工作流实例操作命令集,详见该命令
  3、akka workflow 工作流操作命令集,详见该命令
  4、akka util 辅助操作命令集,详见该命令
【示例】
  akka front
  akka instance -info -log 574de284 (查看某实例)
  akka workflow -kill 574de284 (杀死某运行中的实例) 
命令集合列表
Aaron Swartz

注意: 除了节点启动命令,把工作流定义的xml文件放在xmlconfig目录下,可自动扫描添加对应工作流或调度器,也可以用命令提交.

任务实例告警邮件

Aaron Swartz

版本计划

  1. 界面集成一个可视化拖拉配置工作流与调度器的开发功能模块(这一块感觉自己做不来),目前的工作流以及调度器主要还是要自己编写xml文件,不够简便。
  2. 增加运行节点收集机器性能指标的功能。
  3. 外面套一层功能权限管理的模块,区分限制人员角色模块及数据权限,支持多人使用或协助的场景。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容