开发者学堂课程【实时计算 Flink 实战课程:实时计算 Flink 与你相约阿里云】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/762/detail/13351
实时计算 Flink 与你相约阿里云
(2)快:
天下武功唯快不破,性能也是阿里不断地追求。为了做到更快的实时计算,Apache Flink 基础之上自研了 StateBackend(Gemini) ,该性能比开源平均高两倍以上。对于某些 SQL 或 Table API 的算子进行了深度优化,部分性能也领先开源三倍。版本更新速度快,社区的新版本在云平台上会很快发出,同时部分性能也优先于社区体验,用户不用担心这部分功能只在阿里云上有,而之后在社区会有所改变的作业迁移的情况。
企业级产品有24小时服务在规定时间响应客户的反馈,及时处理客户的问题。但如果自建,用户需要自己搜索文档,也不能保证及时解决线上问题,这对于实时计算是比较致命的。遇到的 bug 可以提前解决,先于社区发布。
(3)好:
云环境集成度高,包括账号权限、计算、存储、监控、告警、日志等链路。而自建这些都需要用户自己去打点,而且链路比较长,维护起来也比较复杂。对于 YAM 和 KBS 已经做了深度优化,对于作业的提交时间以及大量作业提交运行的调度能力都做了深度优化,达到生产级可用。而且这些优化都是在内部使用过经过检验才发布到云上的。同时对云产品提供了运维控制台,一站式开发、调试、运维服务,用户可以通过百变化的方式去操作自己的作业。而且还提供了全链路的智能诊断工具,让用户可以更智能的分析诊断自己作业的问题,并且提供智能的提示,不用用户自己查资料、求高手,也提供了 OpenAPI ,可以让用户做二次开发,Flink 内部有 catalog 的接口,内置了原数据的集成,同时也可以与外接的HMS等原数据系统打通,这个功能会在接下来的时间尽快推出。售后开发基本上成为大数据开发的一个趋势,因为它易读易写,对于流计算,也提供了 SQL e2e 开发体验,用户可以,在微博上编辑它的 SQL,调试它的 SQL ,运行它的 SQL 以及发现 SQL 的问题,同时也集成了 Alink 的能力,可以通过 Flink 去实现传统机器学习的一些算法。阿里也跟创始团队一起合作,给大家提供更专业的技术服务。
(4)省:
如何省资源、省人力、省钱是用户非常关心的。平台提供了单作业粒度的 Autopilot 能力,也就是随着任务的运行,有时候有波峰,有时候有波谷,波峰的时候需要更大的并发、更多的资源,而波谷的时候,这些并发和资源需要释放掉。从而能够让用户自动的调解这些任务,而不用一定要把资源或者并发调到波峰的位置,这样其实在波谷的时候是非常浪费的。这个跟3.0的全托管形态深度的结合。不光是单作业,还能做到细粒度,比如,一个扩内力度或者一个 pod 力度,用户需要多少资源就申请多少资源,并且只需要为申请的资源付费,不会存在浪费的情况,同时还提供了24小时的运维服务。对于全托管,用户可以节省很多的人力成本,对于半托管,也提供了专业的技术支持,来定位用户问题,给出解决方案。整个全链路的开发运维,以及完整的作业生命周期管理也给用户节省了不少时间成本。整个来说,对于人力资源上面,平台都尽可能给用户提供更省的服务方式。
四、产品介绍
1、产品技术栈
最底层是计算资源,包括物理机,虚拟机等。其次, Flink 的运行需要一套分布式文件系统。这些文件系统在阿里云上主要用通过 oss 、 HTS 等分布式文件系统实现。因为是国际化的产品,在其他里面也有其他的存储系统。
对于调度系统,最主要支持了当前比较热门的 Yam 和 KBS 两种调度系统,充分满足了不同调度系统体系用户的需求,基于以上的几个底层依赖,上层提供了 ververica platform ,首先是基于 Apache Flink ,做了增值的插件,包括 StateBackend(Gemini) 还有包括丰富的 connector 等。
在任务管控这一层,采用微服务的架构给用户提供了整个作业生命周期的管理,web 的开发和查看,SQL 的开发以及 Autopilot 能力。最终通过 Gateway 方式透传给用户。由于是 web 的方式,可以添加更多的功能,这也是所做的更多的任务管理上的增值和优化。整个的目标是要达到实现一套基于 Apache Flink 的企业化版本,这块版本提供一站式的处理能力, 并且提供更多的插件。
2、公上产品形态
目前在公共云上,主要有全托管和半托管两种形态。全托管主要是适合关注业务发展但是不关心整个集群的运维,也就是托管的集群的一个形态,这种形态里面,又分原来的 Blink 和新的 Flink 两种形态,原来的 Blink 目前主要是在丰富的 SQL 的建设上比较完备。在全托管的 Flink 集群上,主要提供了 CU 粒度的收费,并且是细粒度的弹性,用户自身使用,并且是按量付费,在这块会尽快跟 Blink 补齐。
对于半托管,主要是将整个 ververica platform 部署到用户的环境中,用户的环境可以是 Yam 也可以是KBS,到目前,半托管的两款产品都已经商业化。并且仅收取 ECS的费用,因为Yam和KBS目前都是发现在用户的 ECS 之上的,所以对于 Yam 或者 Hadoop 有偏好的用户可以选择这两款产品。整体而言,提如此多形态主要是想让用户选择一款适合自己的产品,如果不想运维整个集群,可以选择全托管,如果更关注 Yam 的一些运行情或者对 Yam 有自己特定的管理能力,可以选择半托管 Yam。如果对 KBS 更感兴趣或者有能力去管控,可以选择 Flink on KBS。
3、实施打通上下游
不管是哪种形态,都要打通用户的上下游,让像数据总线、日志服务、消息队列等一些流表能够流进 Flink 。然后像表格存储、分布式数据库等能够作为维表,同时对于一些大型的存储,像 Maxcompute、 HBase 、oss 在数据量不是特别大的情况下,也能够作为维表加载进来,然后能够输出到用户的各种存储系统中,所以整个实时计算 Flink 是将用户的存储作为上游,用户的另外一些存储作为维表,然后再输出到用户的环境中,不需要做数据搬移,自动跟用户的环境打通,然后完成复杂的计算。
五、未来可期
1、产品功能持续输出
(1)会把 SQL 建设的更完备。在 SQL 提交之前就能够得到一些部分产出,判断SQL 的逻辑是否正确。
(2)会提供更丰富的 connector 能力,连接各种用户的上下游设备。
(3)会提供更智能的 AutoPilot 能力,为用户进一步节省成本。
(4)会在 Realtime 和 SQL 进行深度的优化,不断提高运行的性能。
(5)会提供 SDK,供用户做二次开发,对于长时间运行的 Flink, 平台始终将debug 和 troubleshooting 能力作为自己的主要建设目标,让用户能够方便的定位目前作业的状态以及健康程度。
(6)会添加常用的监控报警,让用户能够及时感知作业的异常。
六、后续课程内容基本介绍
对于产品介绍这一板块,将围绕入门篇、实操篇和高级篇展开。主要在入门篇会介绍产品的概念以及用场景、如果开通等。实操篇主要会介绍基于实时计算 Flink ,用户如何去写自己 Datastream 作业和 SQL 作业。如何使用 AutoPilot 等基础的功能。对于高级篇,会给大家介绍如何使用实时计算 Flink 去做 troubleshooting 以及更有效的配置 Flink 的内存资源等。