<>强任春德强>
Apache Flink作为下一代大数据计算引擎,在迅速发展强大中,其内部架构也在不断优化重构,以适应更多运行时环境和更大计算规模,Flink改进Proposals-6重新设计了在各集群管理系统(独立/纱/Kubernetes等)上资源调度的统一架构,本文将介绍资源调度的架构发展及其清晰分层等设计特点,纱上每份工作和会议两种模式的实现,以及正在讨论开发的与k8云原生融合的详细设计。
本文内容如下:
-
<李>
Apache Flink独立集群
李> <李>Apache Flink与纱线的原生融合
李> <李>Apache Flink与美丽的原生融合
李> <李>小结李>Apache Flink独立集群/h3>
如图1,Flink的独立集群部署是主从架构,其中主JobManager(简称JM)负责工作的计算单元任务调度,TaskManager(简称TM)向JobManager汇报并负责在其内部用线程执行任务。
之所以是独立的,是因为其不依赖其他底层资源调度系统,直接部署启动在各自的裸机器节点上,虽然可以用一些自动化运维工具方便地部署和管理,但是存在以下几个问题:
-
<李>
隔离:多工作运行在一个集群,可能同一TM上执行不同工作的任务,其线程所用资源(cpu/mem)无法控制,相互影响,甚至一个任务造成整个TM的记忆,使其之上的工作都受影响;多个工作的调度也在同一个JM中,同样存在被有问题工作影响的问题。
李> <李>多租户的资源用量(配额)管理:无法控制用户的工作资源使用总量,缺乏租户间的资源协调管理。
李> <李>集群的可用性:虽然JM可以部署有备用,支持高可用,但JM, TM进程缺乏被看护,难免因以上隔离等问题造成过多进程宕掉,整个集群不可用。
李> <李>集群的可运维:版本升级,扩缩容等都需要复杂的运维操作。李>为了解决以上问题,需要将Flink跑在流行成熟的资源调度系统上,如纱、Kubernetes,便,如何实现呢?
Flink与纱线的原生融合
Apache Flink独立集群alt="本地部署Apache Flink alt="本地部署Apache Flink alt="本地部署Apache Flink alt="本地部署Apache Flink alt="本地部署Apache Flink alt="本地部署Apache Flink纱/Kubernetes ">
小结
部署管理,资源调度是大数据处理系统的底层基石,通过FLIP-6的抽象分层和重构,Apache Flink构建了牢固的基础,可以“原生”地运行于各大资源调度系统(纱/Kubernetes/便)上,支撑起更大规模更高并发的计算,高效地利用集群资源,为后续的不断发展强大提供了可靠的保障。
相关功能的优化改进依然在继续,如资源配置配置资源的难度使一些开发者望而生畏,并且严重降低了Flink的易用性,我们在尝试实现资源和并发配置的自动配置/扩展等功能来解决此类问题;“Serverless”架构在迅速发展,期待Flink与Kubernetes的融合成为云原生的强大计算引擎(类FaaS),为用户节省资源,带来更大的价值。
更多资讯请访问Apache Flink中文社区网站