惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
Recorded Future
Recorded Future
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Simon Willison's Weblog
Simon Willison's Weblog
爱范儿
爱范儿
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Visual Studio Blog
H
Help Net Security
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
美团技术团队
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
腾讯CDC
G
Google Developers Blog
Cyberwarzone
Cyberwarzone
T
Tenable Blog
A
About on SuperTechFans
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
L
Lohrmann on Cybersecurity
C
Cisco Blogs
K
Kaspersky official blog
Recent Announcements
Recent Announcements
Vercel News
Vercel News
C
Cybersecurity and Infrastructure Security Agency CISA
有赞技术团队
有赞技术团队
P
Privacy & Cybersecurity Law Blog
Hugging Face - Blog
Hugging Face - Blog
S
Schneier on Security
Apple Machine Learning Research
Apple Machine Learning Research
Cloudbric
Cloudbric
Scott Helme
Scott Helme
Google Online Security Blog
Google Online Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Attack and Defense Labs
Attack and Defense Labs
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
D
Docker
U
Unit 42
S
Security @ Cisco Blogs

Jark's Blog

Flink 1.16:Hive SQL 如何平迁到 Flink SQL Flink CDC 如何简化实时数据入湖入仓 基于 Flink SQL 构建流批一体的 ETL 数据集成 Nexmark: 如何设计一个流计算基准测试? Demo:基于 Flink SQL 构建流式应用 Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL Flink SQL 编程实践 如何从小白成长为 Apache Committer? 聊聊Blink开源和Flink社区近况 Flink 小贴士 (7): 4个步骤,让 Flink 应用达到生产状态 Flink 小贴士 (6): 使用 Broadcast State 的 4 个注意事项 Flink 小贴士 (5): Savepoint 和 Checkpoint 的 3 个不同点 Flink 小贴士 (4): 如何选择状态后端 Flink 小贴士 (3): 轻松理解 Watermark 一文了解 Apache Flink 核心技术 Flink 零基础实战教程:如何计算实时热门商品 5分钟从零构建第一个 Flink 应用 Flink 小贴士 (2):Flink 如何管理 Kafka 消费位点 Flink在美团的实践与应用 我在阿里的这两年 Flink 原理与实现:Aysnc I/O Flink 原理与实现:Table & SQL API Flink 原理与实现:Session Window Flink 原理与实现:Window 机制 Flink 原理与实现:数据流上的类型和操作 Flink 原理与实现:如何生成 JobGraph Flink 原理与实现:理解 Flink 中的计算资源 Flink 原理与实现:如何生成 StreamGraph Flink 原理与实现:架构和拓扑概览 Flink 原理与实现:内存管理 Flink 原理与实现:如何处理反压问题 Flink官方文档翻译:安装部署(集群模式) Flink官方文档翻译:安装部署(本地模式) 迟到的2015年终总结 高效Macbook开发之道(工具篇) Clojure学习笔记(三):并发与引用 Clojure学习笔记(二):语法 Clojure学习笔记(一):数据结构 Thrift 实践 Thrift 入门 Metrics 是个什么鬼 之入门教程 使用Redis和SQLAlchemy对Scrapy Item去重并存储 使用Scrapy定制可动态配置的爬虫 编程方式下运行 Scrapy spider 读《程序员必读的职业规划书》 Spark 下操作 HBase(1.0.0 新 API) HBase 集群安装部署 Spark On YARN 集群安装部署 Git 常用技能
Flink小贴士 (1):确定Flink作业所需资源大小时要考虑的6件事
WuChong · 2018-10-30 · via Jark's Blog

发表于   |   分类于 Flink   |  

原文:https://data-artisans.com/blog/6-things-to-consider-when-defining-your-apache-flink-cluster-size
作者:Fabian Hueske
译者:云邪(Jark)
译注:原文标题是“6 things to consider when defining your Apache Flink cluster size”,其实在确定作业所需资源时要考虑的事情是一样的,而作业所需资源的问题是用户更经常遇到的问题,所以这里将标题修改了下。

本文是我们博客新开系列《Flink Friday Tip》的首篇文章。该系列主要涵盖了易理解的最佳实践、如何提高Flink 性能的建议、以及如何最佳地使用 Flink 的各种功能。

译注:这也是我为什么打算开始翻译这个系列的原因,不过我可能做不到每周五同步更新,但是我会尽量做到每周更新,所以翻译过来的系列名叫做《Flink小贴士》。

在 Apache Flink 社区中我们被经常问及的一件事是:如何规划和计算一个 Flink 集群的大小(或者说如何确定一个 Flink 作业所需的资源)。确定集群的大小很显然是决定于多种因素的,例如应用场景,应用的规模,以及特定的服务等级协议(SLA)。另外应用程序中的 checkpoint 类型(增量 vs 全量)和 Flink 作业处理是连续还是突发的也都会影响到 Flink 集群的大小。

以下6个方面是确定 Flink 集群大小时最先要考虑的一些因素:

1. 记录数和每条记录的大小

确定集群大小的首要事情就是估算预期进入流计算系统的每秒记录数(也就是我们常说的吞吐量),以及每条记录的大小。不同的记录类型会有不同的大小,这将最终影响 Flink 应用程序平稳运行所需的资源。

2. 不同 key 的数量和每个 key 存储的 state 大小

应用程序中不同 key 的数量和每个 key 所需要存储的 state 大小,都将影响到 Flink 应用程序所需的资源,从而能高效地运行,避免任何反压。

3. 状态的更新频率和状态后端的访问模式

第三个考虑因素是状态的更新频率,因为状态的更新通常是一个高消耗的动作。而不同的状态后端(如 RocksDB,Java Heap)的访问模式差异很大,RocksDB 的每次读取和更新都会涉及序列化和反序列化以及 JNI 操作,而 Java Heap 的状态后端不支持增量 checkpoint,导致大状态场景需要每次持久化的数据量较大。这些因素都会显著地影响集群的大小和 Flink 作业所需的资源。

4. 网络容量

网络容量不仅仅会收到 Flink 应用程序本身的影响,也会受到可能正在交互的 Kafka、HDFS 等外部服务的影响。这些外部服务可能会导致额外的网络流量。例如,启用 replication 可能会在网络的消息 broker 之间产生额外的流量。

5. 磁盘带宽

如果你的应用程序依赖了基于磁盘的状态后端,如 RocksDB,或者考虑使用 Kafka 或 HDFS,那么磁盘的带宽也需要纳入考虑。

6. 机器数量及其可用 CPU 和内存

最后但并非最不重要的,在开始应用部署前,你需要考虑集群中可用机器的数量及其可用的 CPU 和内存。这最终确保了在将应用程序投入生产之后,集群有充足的处理能力。

更多需要考虑的特定方面是你或者你的组织能接受的SLA(服务等级协议)。例如,考虑你的组织能接受的宕机时间,能接受的延迟和最大吞吐。这些 SLA 都会对 Flink 集群大小产生影响。

在确定 Flink 作业所需资源数目时,上述所有的因素应该能起到良好的指示作用,另外这也算是提供了 Flink 作业如何正常运行的指引。你也需要始终考虑增加一些资源的缓冲用于作业恢复时的追赶和处理一些负载高峰。例如,当你的 Flink 发生故障时,系统会需要额外的资源来做恢复工作以及从 Kafka topic 或其他消息客户端追上最新的数据。

如果你对这个话题感兴趣,可以访问我们早期的博客了解更多细节。下图总结展示了上文讨论的6点考虑项,你可以下载保存以备不时之需。


hoxis wechat