Flink的DAG可视化开发实践

1. 引言

笔者早年间有很长一段时间都在阿里云DataWorks上带着团队进行数据开发,后来因为一个契机自己搞起了大数据平台XSailboat。刚开始开发平台的主要的数据开发能力是基于DAG图的可视化离线分析开发和运维。后来手头有一个项目需要使用流式计算功能,所以就想把Flink也引入到XSailboat

引入进来以后,它应该至少起以下作用:

  1. 降低Flink计算任务开发的门槛。因为现在小公司做服务型项目,波动性比较大、利润也不高,人员变动大,如果不降低门槛,让新人很快能够入手做一些开发,那么项目是很难做的。
  2. 提升开发的便捷性。做服务型项目基本都是客场作战,要在用户的环境和网络条件下开展工作,再加上安全限制要求,如果没有一个平台支撑,单纯在IDE中写代码开发,是做不到的。
  3. 提升开发的规范性,尽力避免事故。
  4. 降低维护和部署的劳动强度。
  5. 提升实时计算任务的可靠性和可用性。

首先确立了以下2个主要目标:
a. 像离线分析一样,支持基于DAG的可视化开发;
b. 在平台里应该有开发和生产两套环境;

平台要支持Flink基于DAG可视化开发,不像离线分析,有阿里云DataWorks的样板可以参考。DataWorks当时在实时计算这一块也仅支持实时同步。所以这件工作刚开始完全是一个摸着石头过河,心里没底的事情,只能怀着一定有一条路的信念摸索着干下去。经过将近大半年在实际项目中的实践探索,已经找到了一条可行之路,并且已经相对成熟,正在不断完善辅助支撑功能。

2. 我们的做法

离线分析之所以适合用DAG进行开发,是因为它的主要逻辑表达语言工具是SQL,再辅以循环、分支、归并等结构,更复杂的情况可以用MR和Python节点解决,这样几乎能完全适应所有离线分析的场景。而Flink虽然支持FlinkQL,但是它在实际工作场景下的适用性太弱了,关键的原因就在于离线分析是属于统计,而流式计算式是计算。SQL擅长统计,但并不适合计算(离线分析中复杂点的计算也基本用UDF来做)。

Flink之所以难以用DAG可视化开发,关键的问题就是它的算子只定义了基本特性,内部的逻辑完全自由。这种自由定义,对纯代码开发来说是可以的且强大的,但却对可视化开发不友好。如果可视化仅仅是拖出一个节点来,然后在里面用Java/Scala实现特定的方法,那这就不是可视化开发了,而是另一种Flink专用IDE了。

可视化开发的核心思想是配置驱动。通过界面配置逻辑,引擎执行逻辑,实现预期的行为。而配置是需要抽象出一套模式框架,在它的约束下,把一个个可调节的点变成界面配置项。

对于计算而言,少不了加减乘除计算和条件等的判定,要实现这种能力,是无法单纯通过界面来引导配置的。在离线分析中有SQL,在这里也同样需要一种语言,一种简单、又适合计算的语言。我选择了表达式语言Aviator

在离线分析中,从一个节点到另一个节点,其实是一张表到另外一张表,而在流式计算中,我们可以把它视为一行或多行数据变成另外一行或多行数据。基于这个思想,我设定了如下的模式框架。大多数的节点都遵循如下的逻辑模式,部分算子结合其特性及通常的使用方式,略有调整。


算子的逻辑模式框架.png

如此我们就能通过DAG图构建出计算管道,配置各个节点。


DAG开发计算管道.png

在算子上增加这种模式限制,会牺牲算子的一部分表达能力,但这种牺牲我觉得是值得的。一旦能够使用DAG图进行可视化开发以后,很多辅助的设施都能因此构建上。例如:
a. 开发环境和生产环境分离。在开发环境开发的计算管道,经过提交发布,在生产环境部署。
b. Flink集群的自动化、多集群部署能力。目前我们的Flink是基于Yarn运行的,在开发环境,点击运行,那么首先会检查有没有这个工作空间的开发用的Flink集群,如果没有会自动启动部署一个Flink集群,然后把计算管道部署进去执行。生产环境也一样,计算管道在生产环境,可以按需部署在多个集群里面形成多个计算管道实例,由参数可以控制它们处理不同的源。这个具体做法,笔者后续将用另一篇文档详细描述。
c. 调试日志支持,对于已部署的任务可以开启/关闭调试日志,使用平台提供的界面查看某个节点的日志。
d. 状态数据查看支持。
e. 生产环境多集群自动化部署的能力,使得我们的计算管道可以实现中心/边缘部署的能力。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容