SlideShare a Scribd company logo
Making Flink K8S works as you wish
Bo Zhao
2022.07.29
Summary
• 背景和问题
• Flink K8S 现有的解决方案
• 向 Flink 社区推进的方案
• 解决的问题
• 展望
背景
• K8S 提供标准的生态、扩展借口,以及网
络、存储、调度能力
• 越来越多的厂商将集群从 YARN/MESOS
迁移到 K8S 上
• 越来越多的配合组件 / 集群由云上 K8S 集
群来承载,比如 AI, HPC, 大数据业务等
等。
问题
• 旧集群迁移到 K8S 上的问题
• 是否平滑
• 用户使用习惯的保留
• YARN 、 MESOS
• Flink Native K8S 没有最大限度利用 K8S 的能力
• 迁移的技术成本,资源和运维成本
问题详述
Flink k8s 当前架构
• 可能造成的问题
• 资源利用率不高
• 资源死锁
• 业务规模因部署结构被限制
• 功能基础、不支持高级功能
当前 Flink K8S 方案
•Flink-k8s-operator
•Kubernetes Flink CRD
+
•Flink Native K8S 方案
Flink Native K8S 当前的问题
• 不支持拓展
• 资源维护机制
hard coding
Kubernetes custom scheduler
• 调度的主要目的
• K8S 和 资源间的匹配
• Pod 和 node 的匹配
• node 的资源​
• Pod 调度的时机
• 调度和绑定阶段​
• 针对场景的 filter
• 称重选择
• 思考
• 性能
• 资源平衡
• 业务相关的调度
现有调度器一览
• Gang-scheduling
• Fair-share scheduling
• Queue scheduling
• Preemption scheduling
• Topology-based
scheduling
• Reclaims
• Backfill
• Resource Reservation
• App-aware scheduling​
• Hierarchy Resource
Queues​
• Job Ordering and
Queuing​
• Resource fairness​
• Resource Reservation​
• Throughput
• Resource sharing
between multi-tenant
• Native Queue
scheduling
思路
• 思路:
• 改进 Flink Native K8S 方案,增
强 Flink 在 K8S 上调度能力,也
能被 Flink K8S operator 使用。
• 接入自定义调度器的方式。
• 增加 Flink Native K8S load
调度器的方式。
• 拓展资源管理和流程
• 用户使用方式 - plugin/jar 包
• 场景覆盖
• 详细设计
• 问题:
• Flink Native K8S 不能应用
更多 K8S 相关的功能 / 能
力
• 兼顾 Native K8S 和 Flink
Operator 的能力
IDEA : Customized Scheduler 抽象
• 支持指定 scheduler name
• create the* scheduler related
label/annotation/CRD*
• Scheduler 生效的时机
• Flink Native K8S 需要支持在
JM 和 TM 的任何时间的资源增
删改查。
• Scheduler 需要的 Pod 字段
• Yunikorn 需要 Pod labels/annotations
<https://yunikorn.apache.org/docs/user_guide/
labels_and_annotations_in_yunikorn/>
• Volcano 需要 annotations/CRD
<https://volcano.sh/en/docs/podgroup/>
• Kube-batch 需要 annotations/CRD
<https://github.com/kubernetes-sigs/kube-batch/
tree/master/config/crds>
• Kueue 需要 annotation support
<https://github.com/kubernetes-sigs/kueue/blob/
888cedb6e62c315e008916086308a893cd21dd66/
config/samples/sample-job.yaml#L6>
New configuartion options introduce
apiVersion: apps/v1
kind: Deployment
metadata:
...
name: my-first-application-cluster-test-001
namespace: default
uid: f81fe105-0f66-412c-99d2-169bf96d2182
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: my-first-application-cluster-test-001
component: jobmanager
type: flink-native-kubernetes
...
template:
metadata:
...
spec:
containers:
...
schedulerName: CUSTOM_SCHEDULER
...
volumes:
- configMap:
...
-Dkubernetes.jobmanager.scheduler-name=[scheduler
name]
-Dkubernetes.taskmanager.scheduler-name=[scheduler
name]
-Dkubernetes.scheduler-name=[scheduler name]
apiVersion: apps/v1
kind: Pod
metadata:
...
name: my-first-application-cluster-test-001-taskmanager
namespace: default
spec:
…
schedulerName: CUSTOM_SCHEDULER
...
volumes:
- configMap:
...
Scheduler 所需信息导入
-Dkubernetes.scheduler.<scheduler-name>.config=priorityclass:hight-priority,X:Y…
Key Value Desc
minMember Integer indicates the minimum number of pods or
tasks running under the PodGroup. If the
cluster resource cannot meet the demand of
running the minimum number of pods or
tasks, no pod or task in the PodGroup will
be scheduled.
minCpu Integer indicates the minimum resources for running
the PodGroup. If available resources in the
cluster cannot satisfy the requirement, no
pod or task in the PodGroup will be
scheduled.
minMemory Integer
priorityClass String represents the priority of the PodGroup and
is used by the scheduler to sort all the
PodGroups in the queue during scheduling.
CRD 时机支持
public interface KubernetesStepDecorator {
FlinkPod decorateFlinkPod(FlinkPod
flinkPod);
List<HasMetadata>
buildAccompanyingKubernetesResources()
throws IOException;
List<HasMetadata>
buildPreAccompanyingKubernetesResources
();
}
Scheduler CRD 资源需要适配 Fabric 生
态
// Adapt volcano client from defaultKubernetesClient
DefaultKubernetesClient defaultKubernetesClient = new
DefaultKubernetesClient(new
ConfigBuilder().withMasterUrl("http://10.182.82.160:8001").with
ConnectionTimeout(100000).withRequestTimeout(100000).build
());
VolcanoClient vclient =
defaultKubernetesClient.adapt(VolcanoClient.class);
// Manage extension resource like native K8S resources
ObjectMeta meta = new ObjectMeta();
meta.setName("test-pg");
meta.setNamespace("default");
PodGroup pgg = new PodGroup();
pgg.setMetadata(meta);
PodGroupSpec pgs = new PodGroupSpec();
pgs.setQueue("test");
pgg.setSpec(pgs);
defaultKubernetesClient.resources(PodGroup.class).inNamespac
e("default").createOrReplace(pgg);
• Flink 使用 Fabric8 操作
K8S 资源
• 例如:
• Volcano extension available since k8s-client v5.11,
and become perfected till v5.12.2
• https://github.com/fabric8io/kubernetes-client/pull/3580
• Keep same user experience with K8S Java SDK.
Flink Native K8S 支持 Plugin 机制
• HardCode Decorators 变
更为 plugin 机制
• 最终对 Flink 资源共同生效
Volcano flink native K8S 参考实现概览
Volcano 参考实现涉及的 pod yaml 字段
# PodGroup (prepare before deployment creation)
apiVersion: scheduling.volcano.sh/v1beta1
kind: PodGroup
metadata:
name: podgroup-{job-clusterid}
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: Deployment
name: {job-clusterid}
spec:
queue: default
minAvailable: 1
minResources:
cpu: "3"
memory: "2048Mi"
priorityClassName: high-priority
# Pod (TaskManager)
apiVersion: v1
kind: Pod
annotation:
scheduling.k8s.io/group-name: podgroup-{job-clusterid}
推入社区后的使用方式
• 各 K8S customized scheduler 以 plugin 的方式接入,最终在 Flink
decorators 生效。
• 可以配置多 scheduler 生效。
• 用户使用 jar 包在每次 job 提交时生效
适用场景 - 定制化调度
•定制化的调度模式:
• 基于作业的调度对
于需要同时调度一
组任务的多任务应
用程序非常有用。
这是机器学习、大
数据和 HPC 等数
据处理工作负载的
常见要求。
• 基于业务的调度模
式
• Flink 流批处理均受
益
适用场景 - 动态资源共享
•保留 YARN 使用习惯:
• K8S 扩展的自定义调度器有 YARN 相同
的功能
• 更简单的资源划分
• Flink 流批处理均受益
•支持租户级别资源共享,符合接入云场景需
求
适用场景 - 弹性任务 fairshare
• 满足多个弹性作业同时运行时 SLA/QoS • 高负载集群中任务和资源的匹配
适用场景 - 优先级任务
• 大规模环境下可以按照任务优先级进行资源划分
• 任务按规格匹配资源,利用率高
展望
• 期待更多的 K8S Customizied scheduler 接入 Flink 。
• 更好的利用调度器提供的特性。
• 面向更流行的基础设施生态。
• 通过应用场景提升 Flink 本身在流 / 批处理遇到的问题。
• 更精细粒度的资源调度。
• 基于场景的定制优化,提高 Flink 配置的灵活性。
附录
• FLIP-250: Support Customized Kubernetes Schedulers Proposal
• https://cwiki.apache.org/confluence/display/FLINK/FLIP-
250%3A+Support+Customized+Kubernetes+Schedulers+Proposal
Thanks

More Related Content

Similar to Streaming 数据流+赵波+Making Flink K8S works as your wish.pdf

雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢Ben Huang
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6
Guangya Liu
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点maclean liu
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Lei (Harry) Zhang
 
构建企业私有云、开启服务新里程——基于Dcos的PAAS实践
构建企业私有云、开启服务新里程——基于Dcos的PAAS实践构建企业私有云、开启服务新里程——基于Dcos的PAAS实践
构建企业私有云、开启服务新里程——基于Dcos的PAAS实践
Hardway Hou
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
從技術找未來
從技術找未來從技術找未來
從技術找未來
Galaxy Software Services
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
 
Oh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes Basics
Okis Chuang
 
如何盡量避免 Throttling 在 K8s 中 (How to reduce throttling in k8s)
如何盡量避免 Throttling 在 K8s 中  (How to reduce throttling in k8s)如何盡量避免 Throttling 在 K8s 中  (How to reduce throttling in k8s)
如何盡量避免 Throttling 在 K8s 中 (How to reduce throttling in k8s)
Kiwi Lee
 
CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞
CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞
CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞
Secview
 
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud service
cong lei
 
Sae
SaeSae
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
mysqlops
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
topgeek
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcareyouok
 
202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx
Qiming Teng
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
litaocheng
 

Similar to Streaming 数据流+赵波+Making Flink K8S works as your wish.pdf (20)

雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢
 
OpenStack and Docke Integration V6
OpenStack and Docke Integration V6OpenStack and Docke Integration V6
OpenStack and Docke Integration V6
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
构建企业私有云、开启服务新里程——基于Dcos的PAAS实践
构建企业私有云、开启服务新里程——基于Dcos的PAAS实践构建企业私有云、开启服务新里程——基于Dcos的PAAS实践
构建企业私有云、开启服务新里程——基于Dcos的PAAS实践
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
從技術找未來
從技術找未來從技術找未來
從技術找未來
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
 
Oh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes BasicsOh K8s Is Swag - Kubernetes Basics
Oh K8s Is Swag - Kubernetes Basics
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
如何盡量避免 Throttling 在 K8s 中 (How to reduce throttling in k8s)
如何盡量避免 Throttling 在 K8s 中  (How to reduce throttling in k8s)如何盡量避免 Throttling 在 K8s 中  (How to reduce throttling in k8s)
如何盡量避免 Throttling 在 K8s 中 (How to reduce throttling in k8s)
 
CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞
CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞
CYBERSEC 2020 臺灣資安大會 - 第一次使用 k8s 就不埋漏洞
 
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud service
 
Sae
SaeSae
Sae
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx202203-技术沙龙-k8s-v1.pptx
202203-技术沙龙-k8s-v1.pptx
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
 

Streaming 数据流+赵波+Making Flink K8S works as your wish.pdf

  • 1. Making Flink K8S works as you wish Bo Zhao 2022.07.29
  • 2. Summary • 背景和问题 • Flink K8S 现有的解决方案 • 向 Flink 社区推进的方案 • 解决的问题 • 展望
  • 3. 背景 • K8S 提供标准的生态、扩展借口,以及网 络、存储、调度能力 • 越来越多的厂商将集群从 YARN/MESOS 迁移到 K8S 上 • 越来越多的配合组件 / 集群由云上 K8S 集 群来承载,比如 AI, HPC, 大数据业务等 等。
  • 4. 问题 • 旧集群迁移到 K8S 上的问题 • 是否平滑 • 用户使用习惯的保留 • YARN 、 MESOS • Flink Native K8S 没有最大限度利用 K8S 的能力 • 迁移的技术成本,资源和运维成本
  • 5. 问题详述 Flink k8s 当前架构 • 可能造成的问题 • 资源利用率不高 • 资源死锁 • 业务规模因部署结构被限制 • 功能基础、不支持高级功能
  • 6. 当前 Flink K8S 方案 •Flink-k8s-operator •Kubernetes Flink CRD + •Flink Native K8S 方案
  • 7. Flink Native K8S 当前的问题 • 不支持拓展 • 资源维护机制 hard coding
  • 8. Kubernetes custom scheduler • 调度的主要目的 • K8S 和 资源间的匹配 • Pod 和 node 的匹配 • node 的资源​ • Pod 调度的时机 • 调度和绑定阶段​ • 针对场景的 filter • 称重选择 • 思考 • 性能 • 资源平衡 • 业务相关的调度
  • 9. 现有调度器一览 • Gang-scheduling • Fair-share scheduling • Queue scheduling • Preemption scheduling • Topology-based scheduling • Reclaims • Backfill • Resource Reservation • App-aware scheduling​ • Hierarchy Resource Queues​ • Job Ordering and Queuing​ • Resource fairness​ • Resource Reservation​ • Throughput • Resource sharing between multi-tenant • Native Queue scheduling
  • 10. 思路 • 思路: • 改进 Flink Native K8S 方案,增 强 Flink 在 K8S 上调度能力,也 能被 Flink K8S operator 使用。 • 接入自定义调度器的方式。 • 增加 Flink Native K8S load 调度器的方式。 • 拓展资源管理和流程 • 用户使用方式 - plugin/jar 包 • 场景覆盖 • 详细设计 • 问题: • Flink Native K8S 不能应用 更多 K8S 相关的功能 / 能 力 • 兼顾 Native K8S 和 Flink Operator 的能力
  • 11. IDEA : Customized Scheduler 抽象 • 支持指定 scheduler name • create the* scheduler related label/annotation/CRD* • Scheduler 生效的时机 • Flink Native K8S 需要支持在 JM 和 TM 的任何时间的资源增 删改查。 • Scheduler 需要的 Pod 字段 • Yunikorn 需要 Pod labels/annotations <https://yunikorn.apache.org/docs/user_guide/ labels_and_annotations_in_yunikorn/> • Volcano 需要 annotations/CRD <https://volcano.sh/en/docs/podgroup/> • Kube-batch 需要 annotations/CRD <https://github.com/kubernetes-sigs/kube-batch/ tree/master/config/crds> • Kueue 需要 annotation support <https://github.com/kubernetes-sigs/kueue/blob/ 888cedb6e62c315e008916086308a893cd21dd66/ config/samples/sample-job.yaml#L6>
  • 12. New configuartion options introduce apiVersion: apps/v1 kind: Deployment metadata: ... name: my-first-application-cluster-test-001 namespace: default uid: f81fe105-0f66-412c-99d2-169bf96d2182 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: my-first-application-cluster-test-001 component: jobmanager type: flink-native-kubernetes ... template: metadata: ... spec: containers: ... schedulerName: CUSTOM_SCHEDULER ... volumes: - configMap: ... -Dkubernetes.jobmanager.scheduler-name=[scheduler name] -Dkubernetes.taskmanager.scheduler-name=[scheduler name] -Dkubernetes.scheduler-name=[scheduler name] apiVersion: apps/v1 kind: Pod metadata: ... name: my-first-application-cluster-test-001-taskmanager namespace: default spec: … schedulerName: CUSTOM_SCHEDULER ... volumes: - configMap: ...
  • 13. Scheduler 所需信息导入 -Dkubernetes.scheduler.<scheduler-name>.config=priorityclass:hight-priority,X:Y… Key Value Desc minMember Integer indicates the minimum number of pods or tasks running under the PodGroup. If the cluster resource cannot meet the demand of running the minimum number of pods or tasks, no pod or task in the PodGroup will be scheduled. minCpu Integer indicates the minimum resources for running the PodGroup. If available resources in the cluster cannot satisfy the requirement, no pod or task in the PodGroup will be scheduled. minMemory Integer priorityClass String represents the priority of the PodGroup and is used by the scheduler to sort all the PodGroups in the queue during scheduling.
  • 14. CRD 时机支持 public interface KubernetesStepDecorator { FlinkPod decorateFlinkPod(FlinkPod flinkPod); List<HasMetadata> buildAccompanyingKubernetesResources() throws IOException; List<HasMetadata> buildPreAccompanyingKubernetesResources (); }
  • 15. Scheduler CRD 资源需要适配 Fabric 生 态 // Adapt volcano client from defaultKubernetesClient DefaultKubernetesClient defaultKubernetesClient = new DefaultKubernetesClient(new ConfigBuilder().withMasterUrl("http://10.182.82.160:8001").with ConnectionTimeout(100000).withRequestTimeout(100000).build ()); VolcanoClient vclient = defaultKubernetesClient.adapt(VolcanoClient.class); // Manage extension resource like native K8S resources ObjectMeta meta = new ObjectMeta(); meta.setName("test-pg"); meta.setNamespace("default"); PodGroup pgg = new PodGroup(); pgg.setMetadata(meta); PodGroupSpec pgs = new PodGroupSpec(); pgs.setQueue("test"); pgg.setSpec(pgs); defaultKubernetesClient.resources(PodGroup.class).inNamespac e("default").createOrReplace(pgg); • Flink 使用 Fabric8 操作 K8S 资源 • 例如: • Volcano extension available since k8s-client v5.11, and become perfected till v5.12.2 • https://github.com/fabric8io/kubernetes-client/pull/3580 • Keep same user experience with K8S Java SDK.
  • 16. Flink Native K8S 支持 Plugin 机制 • HardCode Decorators 变 更为 plugin 机制 • 最终对 Flink 资源共同生效
  • 17. Volcano flink native K8S 参考实现概览
  • 18. Volcano 参考实现涉及的 pod yaml 字段 # PodGroup (prepare before deployment creation) apiVersion: scheduling.volcano.sh/v1beta1 kind: PodGroup metadata: name: podgroup-{job-clusterid} ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: Deployment name: {job-clusterid} spec: queue: default minAvailable: 1 minResources: cpu: "3" memory: "2048Mi" priorityClassName: high-priority # Pod (TaskManager) apiVersion: v1 kind: Pod annotation: scheduling.k8s.io/group-name: podgroup-{job-clusterid}
  • 19. 推入社区后的使用方式 • 各 K8S customized scheduler 以 plugin 的方式接入,最终在 Flink decorators 生效。 • 可以配置多 scheduler 生效。 • 用户使用 jar 包在每次 job 提交时生效
  • 20. 适用场景 - 定制化调度 •定制化的调度模式: • 基于作业的调度对 于需要同时调度一 组任务的多任务应 用程序非常有用。 这是机器学习、大 数据和 HPC 等数 据处理工作负载的 常见要求。 • 基于业务的调度模 式 • Flink 流批处理均受 益
  • 21. 适用场景 - 动态资源共享 •保留 YARN 使用习惯: • K8S 扩展的自定义调度器有 YARN 相同 的功能 • 更简单的资源划分 • Flink 流批处理均受益 •支持租户级别资源共享,符合接入云场景需 求
  • 22. 适用场景 - 弹性任务 fairshare • 满足多个弹性作业同时运行时 SLA/QoS • 高负载集群中任务和资源的匹配
  • 23. 适用场景 - 优先级任务 • 大规模环境下可以按照任务优先级进行资源划分 • 任务按规格匹配资源,利用率高
  • 24. 展望 • 期待更多的 K8S Customizied scheduler 接入 Flink 。 • 更好的利用调度器提供的特性。 • 面向更流行的基础设施生态。 • 通过应用场景提升 Flink 本身在流 / 批处理遇到的问题。 • 更精细粒度的资源调度。 • 基于场景的定制优化,提高 Flink 配置的灵活性。
  • 25. 附录 • FLIP-250: Support Customized Kubernetes Schedulers Proposal • https://cwiki.apache.org/confluence/display/FLINK/FLIP- 250%3A+Support+Customized+Kubernetes+Schedulers+Proposal