纱/Kubernetes上部署Apache Flink本身

  

<>强任春德

  

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中文社区网站

纱/Kubernetes上部署Apache Flink本身