flink优化

这篇具有很好参考价值的文章主要介绍了flink优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 大状态调优

我们在做UV独立访客数的时候,将用户的访问时间保存到了状态中,由于访客比较多,大概有1000万,所以会造成大状态,解决办法:因为我们是统计的一天的独立访客数,所以我们设置状态的TTL为一天,这样就解决了大状态问题。

大状态调优:在我们的项目中,在做新老访客修复时,我们将每个mid的访问时间都存到了状态里面,在做回流用户数时,我们将每个用户的登录时间都存到了状态里面,导致了大状态问题,由于hashmap状态后端会将数据存储到内存,所以就会出现内存不够的情况。

 我们的解决办法就是将状态后端改成了rocksdb,并且开启增量检查点和本地恢复去进行调优。

还有就是做回流用户的时候,需要把用户的末次登录日期保存到状态中,也会造成大状态,解决办法:换成rocksdb

2. 反压

反压:反压其实就是下游数据的计算速度,赶不上上游数据的发送速度。

我们遇到过一次反压,就是我们DWS层的订单表,需要去和hbase的维度表进行关联,在关联的过程中,涉及到很多的网络IO,所以导致算子计算变慢,产生了反压。

那我们怎么定位反压的呢, 我们是通过查看Web UI,发现map算子是黑色,然后我们去查看代码逻辑,发现了这个问题。

我们是通过添加Redis旁路缓存来解决这个问题的,因为Redis读取数据比较快,所以解决了算子计算慢的问题,也就解决了反压的问题。

然后我们考虑到,写Doris的时候也是和外部系统进行交互,可能也会产生反压问题,所以我们通过设置攒批发送,来预防反压问题。

还有如果我们第二天做活动,那么我们会提前增加服务器和内存、CPU资源,来预防大数据量造成的反压问题。

3. 数据倾斜

我们项目中还遇到过数据倾斜的问题,比如我们将MySQL中的数据存到kafka时,是以表名作为key保存到kafka的不同分区当中的,当我们用flink程序去读取kafka的数据时,因为每个表的数据量不同,所以每个并行度处理的数据量是相差很大的,就造成了数据倾斜。

我们的解决办法就是在source算子的后面,加上了rebalance算子,就可以将输入流数据平均分配到下游的并行任务中去,就解决了数据倾斜问题。

还有就是我们在统计各省份GMV的时候,由于每个省份的数据量不同,所以在我们根据省份keyby之后,导致有的分区数据量比别的分区数据量大很多,就导致了数据倾斜问题。

我们在统计计算各省份GMV的时候出现了频繁的反压,所以就考虑说是不是数据倾斜的问题,排查完后发现确实是数据倾斜,kafka根据不同的key存到不同的分区当中,根据表的表明作为key存到不同的分区当中,但是有些表的数据比较多,导致某个分区的量比较多,下游去消费的时候导致某个并行度的数据比较多,就导致了数据倾斜,所以说我们统计各省份GMV的时候,就出现了这种情况,之后我们讨论出了两种解决方案,一种是为了避免热点 key 的设计,把北京、上海等热点城市分成不同的区域,进行单独的处理。还有一种是通过两阶段聚合解决 KeyBy 热点,首先把分组的 key 打散,比如加随机后缀,对打散后的数据进行聚合,把打散的 key 还原为真正的 key,二次 KeyBy 进行结果统计,然后输出。
 文章来源地址https://www.toymoban.com/news/detail-650370.html

到了这里,关于flink优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink优化——资源优化(一)

    目录 资源配置优化 内存设置 (1CPU 配置 4G 内存) 并行度设置 最优并行度计算 Source 端并行度的配置 Transform 端并行度的配置 Keyby 之前的算子 Keyby 之后的算子 (KeyGroup 最小值为128) Sink 端并行度的配置 RocksDB 大状态调优 设置本地 RocksDB 多目录: Checkpoint 设置     Flink 性能

    2024年02月04日
    浏览(36)
  • Flink任务实战优化

    前言: 一个好产品,功能应该尽量包装在服务内部;对于Flink而言,无疑是做到了这一点。但是用户在使用Flink的时候,依然可以从版本的选择、代码逻辑、资源参数、业务的数据情况等方面做任务级的定制化优化;用最合理的资源使用,保障实时性、稳定性和最佳Tps的处理

    2024年02月03日
    浏览(31)
  • flink优化

    我们在做UV独立访客数的时候,将用户的访问时间保存到了状态中,由于访客比较多,大概有1000万,所以会造成大状态,解决办法:因为我们是统计的一天的独立访客数,所以我们设置状态的TTL为一天,这样就解决了大状态问题。 大状态调优:在我们的项目中,在做新老访客

    2024年02月12日
    浏览(17)
  • Flink性能优化小结

    jvm内存优化 内存优化 netty优化 akka优化 并行度优化 对象重用 checkpoint优化 网络内存调优 状态优化 flink数据倾斜优化 flink背压 jvm内存参数调优 Flink是依赖内存计算,计算过程中内存不够对Flink的执行效率影响很大。可以通过监控GC(Garbage Collection),评估内存使用及剩余情况

    2024年02月01日
    浏览(42)
  • flink任务性能优化

    1、使用异步算子,异步执行操作 2、将下游数据需要的数据以参数的形式向下传递 3、当服务器资源有限的情况下,慎用RocksDBStateBackend RocksDBStateBackend performance will be poor because of the current Flink memory configuration! RocksDB will flush memtable constantly, causing high IO and CPU. Typically the easiest

    2024年02月14日
    浏览(49)
  • Flink实时计算资源如何优化

    flink实时计算任务可以从以下四个方面进行优化 内存优化:Flink任务需要大量的内存来存储数据和状态信息。因此,我们需要尽可能地减少内存的使用量。可以通过以下几种方式来实现: 使用更小的窗口大小:窗口大小越大,需要使用的内存就越多。因此,我们可以使用更小

    2024年02月10日
    浏览(30)
  • Flink 优化(六) --------- FlinkSQL 调优

    FlinkSQL 官网配置参数: https://ci.apache.org/projects/flink/flink-docs-release-1.13/dev/table/config.html Flink SQL 新手有可能犯的错误,其中之一就是忘记设置空闲状态保留时间导致状态爆炸。列举两个场景: ➢ FlinkSQL 的 regular join(inner、left、right),左右表的数据都会一直保存在状态里,不

    2024年02月14日
    浏览(31)
  • Flink 流处理引擎优化实践

    作者:禅与计算机程序设计艺术 Flink 是 Apache 开源的流处理框架,广泛应用于数据处理、实时计算领域,在海量数据处理场景下性能卓越,提供低延迟、高吞吐等优势。Flink 的原生批处理模式和流处理模式均支持多种复杂的窗口操作,而对 Flink 的任务管理、资源分配等方面进

    2024年02月07日
    浏览(28)
  • 美团 Flink 资源调度优化实践

    摘要:本文整理自美团数据平台计算引擎组工程师冯斐,在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分: 相关背景和问题 解决思路分析 资源调度优化实践 后续规划 点击查看原文视频 演讲PPT 在计算规模方面,目前我们有 7w 多作业,部署在 1.7w 台机

    2024年02月11日
    浏览(30)
  • Flink 流处理应用性能优化指南

    作者:禅与计算机程序设计艺术 在数据处理过程中,作为流处理系统的 Apache Flink 是当前最热门的开源框架之一。相对于其他的一些框架(比如 Spark Streaming、Storm),Flink 提供了更高的计算效率、更低的延迟以及更灵活的数据处理能力。但是,由于其基于流处理模式而非批处

    2024年02月07日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包