实时计算 Flink性能调优

自动配置调优

实时计算 Flink新增自动调优功能autoconf。能够在流作业以及上下游性能达到稳定的前提下,根据您作业的历史运行状况,重新分配各算子资源和并发数,达到优化作业的目的。更多详细说明请您参阅自动配置调优。

首次智能调优

  1. 创建一个作业。如何创建作业请参看快速入门。
  2. 上线作业。选择智能推荐配置,指定使用CU数为系统默认,不填即可。点击下一步。

  3. 数据检查,预估消耗CU数。

  4. 在运维界面启动作业,根据实际业务需要指定读取数据时间。

    说明:实时计算作业启动时候需要您指定启动时间。实际上就是从源头数据存储的指定时间点开始读取数据。指定读取数据时间需要在作业启动之前。例如,设置启动时间为1小时之前。

  5. 待作业稳定运行10分钟后,且以下状态符合要求,即可开始下一次性能调优。

    • 运行信息拓扑图中IN_Q不为100%。
    • 数据输入RPS符合预期。

非首次性能调优

  1. 停止>下线作业。

  2. 重新上线作业。选择智能推荐配置,指定使用CU数为系统默认,不填即可。点击下一步。

  3. 数据检查,再次预估消耗CU数。

  4. 在运维界面启动作业,待作业稳定运行十分钟后,即可再一次性能调优。

说明:

  • 自动配置调优一般需要3到5次才能达到理想的调优效果。请完成首次性能调优后,重复非首次性能调优过程多次。
  • 每次调优前,请确保足够的作业运行时长,建议10分钟以上。
  • 指定CU数(参考值) = 实际消耗CU数*目标RPS/当前RPS。
    • 实际消耗CU数:上一次作业运行时实际消耗CU
    • 目标RPS:输入流数据的实际RPS(或QPS)
    • 当前RPS:上一次作业运行时实际的输入RPS

手动配置调优

手动配置调优可以分以下三个类型。

  • 资源调优
  • 作业参数调优
  • 上下游参数调优

资源调优

资源调优即是对作业中的Operator的并发数(parallelism)、CPU(core)、堆内存(heap_memory)等参数进行调优。

分析定位资源调优节点

定位性能瓶颈节点

性能瓶颈节点为Vertex拓扑图最下游中参数IN_Q值为100%的一个或者多个节点。如下图,7号节点为性能瓶颈节点。

分析性能瓶颈因素

性能瓶颈的可分为三类。

  • 并发(parallelism)不足
  • CPU(core)不足
  • MEM(heap_memory)不足

如下图,7号节点的性能瓶颈是资源(CPU和/或MEM)配置不足所导致。

说明:判断性能瓶颈因素方法

  • 瓶颈节点的资源健康分为100,则认为资源已经合理分配,性能瓶颈是并发数不足所导致。
  • 瓶颈节点的资源健康分低于100,则认为性能瓶颈是单个并发的资源(CPU和/或MEM)配置不足所导致。
  • 无持续反压,但资源健康分低于100,仅表明单个并发的资源使用率较高,但暂不影响作业性能,可暂不做调优。

通过作业运维页面中Metrics Graph功能,进一步判断性能瓶颈是CPU不足还是MEM不足。步骤如下。

  1. 运维界面中,点击TaskExecutor,找到性能瓶颈节点ID,点击查看详情。

  2. 选择Metrics Graph,根据曲线图判断CPU或者MEM是否配置不足(很多情况下两者同时不足)。

调整资源配置

完成了性能瓶颈因素判断后,点击开发>基本属性>跳转到新窗口配置,开始调整资源配置。

批量修改Operator

  1. 点击GROUP框,进入批量修改Operator数据窗口。

    说明:

    1. GROUP内所有的operator具有相同的并发数。
    2. GROUP的core为所有operator的最大值。
    3. GROUP的_memory为所有operator之和。
    4. 建议单个Job维度的CPU:MEM=1:4,即1个核对应4G内存。
  2. 配置修改完成后点击应用当前配置并关闭窗口。

单个修改Operator

  1. 点击Operator框,进入修改Operator数据窗口。

  2. 配置修改完成后点击应用当前配置并关闭窗口。

参数调整说明

您只需调整parallelism、core和heap_memory三个参数,即能满足大部分的资源调优需求。

  • Parallelism
    • source节点
      资源根据上游Partition数来。例如source的个数是16,那么source的并发可以配置为16、8、4等。不能超过16。
    • 中间节点
      根据预估的QPS计算。对于数据量较小的任务,设置和source相同的并发度。QPS高的任务,可以配置更大的并发数,例如64、128、或者256。
    • sink节点
      并发度和下游存储的Partition数相关,一般是下游Partition个数的2~3倍。如果配置太大会导致数据写入超时或失败。例如,下游sink的个数是16,那么sink的并发最大可以配置48。
  • Core
    即CPU,根据实际CPU使用比例配置,建议配置值为0.25,可大于1。
  • Heap_memory
    堆内存。根据实际内存使用状况进行配置。
  • 其他参数
    • state_size:默认为0,group by、join、over、window等operator需设置为1。
    • direct_memory:JVM堆外内存,默认值为0, 建议不要修改。
    • native_memory:JVM堆外内存,默认值为0,建议修改为10MB。
    • chainingStrategy:chain策略,根据实际需要修改。

作业参数调优

  1. 在开发页面的右侧选择作业参数。

  2. 输入调优语句。

优化解决问题调优语句
MiniBatch提升吞吐,降低对下游压力仅对Group by有效。blink.miniBatch.allowLatencyMs=5000
blink.miniBatch.size=1000
LocalGlobal优化数据倾斜问题blink.localAgg.enable=true
TTL设置State状态时间1.x:state.backend.rocksdb.ttl.ms=129600000
2.x:state.backend.niagara.ttl.ms=129600000
其中,1.x 表示需显式开启,2.x 表示默认开启。

注意:添加或删除MiniBatch或LocalGlobal参数,job状态会丢失,修改值大小状态不会丢失。

上下游参数调优

实时计算 Flink可以在with参数内设置相应的参数,达到调优上下游存储性能的目的。

调优步骤:

  1. 进入作业的开发界面。
  2. 确定需要调优的上下游引用表的语句。
  3. 在with参数中配置相应的调优参数。如下图。

batchsize参数调优

实时计算 Flink的每条数据均会触发上下游存储的读写,会对上下游存储形成性能压力。可以通过设置batchsize,批量的读写上下游存储数据来降低对上下游存储的压力。

名字参数详情设置参数值
Datahub源表batchReadSize单次读取条数可选,默认为10
Datahub结果表batchSize单次写入条数可选,默认为300
日志服务源表batchGetSize单次读取logGroup条数可选,默认为10
ADB结果表batchSize每次写入的批次大小可选,默认为1000
RDS结果表batchSize每次写入的批次大小可选,默认为50

注意: 添加、修改或者删除以上参数后,作业必须停止-启动后,调优才能生效。

cache参数调优

名字参数详情设置参数值
RDS维表Cache缓存策略默认值为None,可选LRUALL
RDS维表cacheSize缓存大小默认值为None,可选LRUALL
RDS维表cacheTTLMs缓存超时时间默认值为None,可选LRUALL
OTS维表Cache缓存策略默认值为None, 可选LRU,不支持ALL
OTS维表cacheSize缓存大小默认值为None, 可选LRU,不支持ALL
OTS维表cacheTTLMs缓存超时时间默认值为None, 可选LRU,不支持ALL

注意: 添加、修改或者删除以上参数后,作业必须停止-启动后,调优才能生效。

手动配置调优流程

  1. 资源调优、作业参数调优、上下游参数调优
  2. 开发上线作业
  3. 资源配置方式:使用上次资源配置
  4. 数据检查
  5. 上线

说明:完成资源、作业参数、上下游参数调优后,手动配置调优后续的步骤与自动配置调优基本一致。区别在于资源配置环节需要选择使用上次资源配置。

FAQ

Q:性能调优后作业为什么运行不起来?

A:可能性1:首次自动配置时指定了CU数,但指定的CU数太小(比如小于自动配置默认算法的建议值,多见于作业比较复杂的情况),建议首次自动配置时不指定CU数。
可能性2:默认算法建议的CU数或指定的CU数超过了项目当前可用的CU数,建议扩容。

Q:Vertex拓扑中看不到持续反压,但延迟却非常大,为什么?

A:可能性1:若延时直线上升,需考虑是否上游source中部分partition中没有新的数据,因为目前delay统计的是所有partition的延时最大值。
可能性2:Vertex拓扑中看不到持续反压,那么性能瓶颈点可能出现在source节点。因为source节点没有输入缓存队列,即使有性能问题,IN_Q也永远为0(同样,sink节点的OUT_Q也永远为0)。
解决方案:通过手动配置调优,将source节点(GROUP)中的operator中chainingStrategy修改为HEAD,将其从GROUP中拆解出来。然后上线运行后再看具体是哪个节点是性能瓶颈节点,若依然看不到性能瓶颈节点,则可能是因为上游source吞吐不够,需考虑增加source的batchsize或增加上游source的shard数。

Q:如何判断持续反压,反压时如何判断性能瓶颈点?

A:Vertex拓扑中某些节点的IN_Q持续为100%则存在持续反压情况,最后一个(或多个)IN_Q为100%的节点为性能瓶颈点。如下示例:

上图存在反压,瓶颈在6号节点。


上图存在反压,瓶颈在2号节点。


上图存在反压,瓶颈在8号节点。


上图可能存在节点,瓶颈在0号节点。

Q: 如何判断数据倾斜?

A:(1)表象上看,某些节点不论增加多大的并发仍存在性能瓶颈,则可能存在数据倾斜。
(2)在Vertex拓扑中点击疑似存在数据倾斜的节点(一般为性能瓶颈节点),进入SubTask List界面,重点观察RecvCnt和InQueue,若各ID对应的RecvCnt值差异较大(一般超过1个数量级)则认为存在数据倾斜,若个别ID的InQueue长期为100%,则认为可能存在数据倾斜。
解决方案:请您参看GROUP BY 数据出现热点、数据倾斜。

Q: 上线时指定15CU,但是上线后实际消耗仅为10CU,什么原因?

A:这种问题一般发生在Vertex只有一个节点的情况,此时由于source上游的物理表的shard数为1,Flink要求source的并发不能超过上游shard数,导致无法增加并发,因此亦无法增加到指定的CU数。
解决方案:

  1. 增加上游物理表的shard数。
  2. 将ID0的节点中的operator拆开,将source节点(GROUP)中的operator chainingStrategy修改为HEAD,将其从GROUP中拆解出来,然后手动配置调优。

Q: 上线时出现如左上图的告警,或出现诸如“Cannot set chaining strategy on Union Transformation”错误,如何处理?

A:这是由于作业的SQL有改动,导致DAG改变。
解决方案:通过重新获取配置解决,开发-基本属性-跳转到新窗口配置-重新获取配置信息。

 

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神作!3万程序员在学,这本深度学习宝典刷爆IT圈!

深度学习在过去5年处于爆发式增长状态,在人工智能领域占据主导地位。据Gartner统计,深度学习的专家职位从2014年之后才开始出现,不过到2018年,市面上大概就有40,000多深度学习专家的职位空缺。而且这些需求大多来自Facebook、Appl…

计算机软件中汇编程序是一种,计算机系统软件中的汇编程序是一种()。

摘要:疼痛,计算机系件中热、痛皮色不红、不,为E,缓者则痛得暖。下列和间关于直接经验接经验,编程的说错误法有。形式认识这种属于,计算机系件中香味人闻果的一个到苹,莱果的颜色看到。...疼痛&a…

取某个单元格的值_vba中如何进行单元格复制,Copy方法使用介绍,一定要学

NO.1在Excel操作过程当中,除了给表格输入内容就数单元格复制最常用了,通常快捷方法有Ctrlc,Ctrlv。不用说,这种方法对于操作十分方便,那么如何利用代码来实现复制功能呢!因为在编程过程中,会用到…

Visual Studio Code(VScode)设置为中文界面

安装插件重启即可: 名称: Chinese (Simplified) Language Pack for Visual Studio Code

重磅!阿里云发布业界首款SaaS化防火墙

近日,阿里云发布了业界首款SaaS化防火墙,一键开启,无需复杂网络接入配置,适用于所有在云上部署了重要业务资产的客户,特别是企业级客户。 对于用户来说,即开即用,操作简单,无需传统…

阿里云全球首推流量型独享虚拟主机新规格,网络访问速度最高提升400%

近日,为了提升用户网站访问体验,阿里云虚拟主机宣布推出流量型独享虚拟主机新规格,流量型独享虚拟主机新规格可以提供高速流量包,提高访问速度。在高速流量包用尽后,网站也不会关停,可自动降为低带宽模式&a…

阿里云文件存储的高性能架构演进之路

10月27日下午,2018中国计算机大会上举办了主题“数据中心计算”的技术论坛,一起探讨解决数据中心所面临的挑战。论坛上,阿里云分布式存储团队高级技术专家田磊磊进行了《阿里云文件存储的高性能架构演进之路》的报告。 专家简介 田磊磊&…

阿里巴巴黄贵谈存储新硬件带来数据库的机遇

10月27日下午,2018中国计算机大会上举办了主题“存储软硬件之国产化挑战与机遇”的技术论坛,共同探讨存储软硬件栈上的关键系统与技术的国产化发展道路。论坛上,阿里数据库资深技术专家黄贵针对存储软硬件国产化进行了《存储新硬件给数据库自…

项目实战Git团队操作_图形化版本

文章目录一、分支思路1. Git命令常用理解记忆2. 分支换分规则3. 线上发布准备二、 实战前期准备2.1. 在远程仓库创建kernel_system项目2.2. 将远程仓库克隆到本地2.3. 本地准备操作三、场景实战模拟提交3.1. Git合并某个分支的某/多次提交到指定分支3.2. Git合并分支3.3. 回滚/…

为什么程序员总是打扮成这样一幅鬼样子

1几千年来,时尚像病毒一样不断进化,横扫世界。它遇神杀神,遇佛杀佛。遇到程序员后,含羞自尽。因为程序员是时尚休止符。因为他们习惯以不变应万变。夏季三大件:格子衫沙滩裤人字拖。冬季三大件:冲锋衣牛仔裤…

基础计算机b卷,计算机应用基础B卷.doc

计算机应用基础B卷.doc (6页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分《计算机应用基础》模拟试卷B (闭卷)一、单项选择题(本大题共40个小题,每题2分&#xff0…

阿里云大数据总监:计算让城市更智能

10月25日,2018中国计算机大会上举办了主题是智慧城市下个十年:智在“数”还是“术”的技术论坛。目前,城市已经具备了丰富多样的大数据积累,成体系的数据管理标准,开放自由的数据流动环境等重要基础,但对于…

多维度创新打造领先阿里云技术生态

10月26日,2018中国计算机大会上举办了主题是“云计算生态与发展”的技术论坛。论坛上,阿里云技术战略架构师陈绪博士从构建目标、构建基石、构建要点三个方面详细陈述了阿里云开放的技术生态。目前阿里云正在全力打造一个由阿里云引导、驱动、赋能的多赢…

Facebook陷入史上最大危机;华为5G设备欧洲大卖,美国指责欧盟;红帽宣布OpenShift可用于AWS中国……...

关注并标星星CSDN云计算 速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周两次,打卡即read更快、更全了解泛云圈精彩newsgo go go新加坡加入微信计划 (图片来源网络&am…

阿里云高级总监谈超大规模超高性能分布式快存储系统

新型硬件(如NVRAM、RDMA、GPU/TPU等)及其构建的异构复杂环境,与既有硬件环境的巨大差异,导致传统的算法、数据结构甚至是涉及原则和经验法则等难以为继,对计算智能与大数据处理带来新的挑战和机遇。 10月27日下午&…

最新量子通信芯片曝光!大小仅为现有装置的千分之一

近日,新加坡南洋理工大学(NTU-Singapore)的Liu Ai Qun教授和Kwek Leong Chuan副教授领导的研究小组在《自然光子学》发表一项令人吃惊的研究成果:他们研究出一种量子通信芯片,大小约为3mm,其体积是目前量子…

如何提高阿里云上应用的可用性(一)

如今,开发并上线一款应用十分方便。因为云计算提供了从最基础的计算资源如服务器网络、数据库服务、中间件PaaS平台到各种应用支撑的云管理服务,同时开源社区的迅猛发展也提供了从数据库、缓存到应用全生命流程中各种必须的组件,所以越来越多…

运营商服务器系统,浪潮服务器助力运营商三大支撑系统上云

【IT168 资讯】继浙江移动、广东移动、福建电信业务系统云化应用改造项目后,浪潮服务器再次中标河南某运营商云资源池项目,中标金额达三千多万。三百多台浪潮双路、四路服务器用于支撑该运营商的BOSS计费系统、CRM系统、经营分析系统、网管应用系统、OA、…

如何提高阿里云上应用的可用性(二)

在单体应用时代,最大的问题是如何解决数据库瓶颈,而微服务之下,一个大应用被拆分成了几十个甚至上百个微服务,数据访问的压力被传导到了服务之间的网络,服务强弱依赖,服务雪崩等各种问题随之而来&#xff0…

双11终于来了,你盖楼了吗?

戳蓝字“CSDN云计算”关注我们哦!作者 | CDA数据分析师责编 | 阿秃双11就要到了,今天就带大家解读一下,在这场全面购物节背后都有哪些意想不到的有趣数据。一年一度的购物狂欢节双11又要到了,从2009年双11的诞生到今年&#xff0c…