1.概述

转载:flink keyby 在 subtask 中分配不均的研究

最近在做大数据量的实时数据迁移, 频繁使用到了keyby hash去均衡数据, 但是却发现subtask执行的数据量不是很均衡, 导致checkpoint频繁超时, 于是开始寻找解决方法.

2. 问题背景

使用keyby进行分区, 自定义KeySelector, 进行hash%并行度来进行分区, 比如使用的并行度是8, 最后会得到分区key

0, 1, 2, 3, 4, 5, 6, 7

run起项目后, 打开监视后台, 发现8个subtask中有一个task没有数据, 另一个task会有双倍的数据.

3.原因

详细参考官方文档

原因很简单, flink无法预估你会有多少key, 所以会基于最大并行度(默认128)进行一个key分组, 在这个范围内的才会分配到task中.

以下是相关代码

public static int computeKeyGroupForKeyHash(int keyHash, int maxParallelism) {return MathUtils.murmurHash(keyHash) % maxParallelism;
}

那么我们对上面自己的key, 去运行这段代码, 会得到以下结果

0 86
1 54
2 27
3 33
4 4
5 79
6 19
7 115

我们是8个并行, 相当于每个subtask占有16个key, 会得到以下分组:

0~15    4
16~31   19   27
32~47   33
48~63   54
64~79   79
80~95   86
96~111
112~127 115

会发现有个分区确实获得了两个key, 而一个分区轮空.

将6换成murmurhash后在 96~111 中的key, 比如 6666(hash为106)

重启之后分配不均的问题解决.

【Flink】flink keyby 在 subtask 中分配不均的研究相关推荐

  1. 【Flink】Flink 没有keyBy 某个 subTask 没有数据

    文章目录 1.概述 M.扩展 1.概述 一个flink程序,如下,但是总共100多个task,然后只有一个没有数据. 第一怀疑是不是keyBy问题,上述看错了,然后以为有keyBy 然后参考文章:[F ...

  2. flink去重(二)解决flink、flink-sql去重过程中的热点问题

    解决flink.flink-sql去重过程中的热点问题 1.flink-sql解决热点问题 使用Sql去实现一个去重功能,通常会这样实现 SELECT day, COUNT(DISTINCT user ...

  3. Flink系列之:基于scala语言实现flink实时消费Kafka Topic中的数据

    Flink系列之:基于scala语言实现flink实时消费Kafka Topic中的数据 一.引入flink相关依赖 二.properties保存连接kafka的配置 三.构建flink实时消费环境 ...

  4. 凌波微步Flink——Flink API中的一些基础概念

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95355619 本文出自[我是干勾鱼的博客] Ingredients: Java: ...

  5. flink 不设置水印_从0到1学习Flink—— Flink parallelism 和 Slot 介绍

    前言 之所以写这个是因为前段时间自己的项目出现过这样的一个问题: 1Caused by: akka.pattern.AskTimeoutException: 2Ask timed out on [Ac ...

  6. 大数据计算引擎之Flink Flink CEP复杂事件编程

    原文地址:大数据计算引擎之Flink Flink CEP复杂事件编程 复杂事件编程(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的时事件系序列库,并利 ...

  7. 凌波微步Flink——Flink的技术逻辑与编程步骤剖析

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95459606 本文出自[我是干勾鱼的博客] Ingredients: Java: ...

  8. Flink——Flink CheckPoint之两阶段提交协议(Two-Phase Commit Protocol)

    文章目录 两阶段提交协议 1. 两阶段提交的前提条件 2. 两阶段提交的基本算法 a. 第一阶段(提交请求阶段) b. 第二阶段(提交执行阶段) 3. 两阶段提交的缺点 Flink-两阶段提交协议 1 ...

  9. LeetCode979. 在二叉树中分配硬币

    问题:979. 在二叉树中分配硬币 给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币. 在一次移动中,我们可以选择两个相邻的 ...

最新文章

  1. 使用NuGet发布自己的类库包(Library Package)
  2. 元胞自动机(Cellular Automata)
  3. directplay需要安装吗_燃气报警器需要安装吗这里告诉你
  4. JS入门之Date对象
  5. Qt笔记-AES加密
  6. 随想录(C++下多线程的创建)
  7. MongoDB的选举过程
  8. PHP+MySQL实现读写分离
  9. VMware密匙安装教程
  10. MySQL 安装及配置 Navicat 工具
  11. 物联网工程专业该怎么学?老学长吐血整理!!
  12. 做人做事箴言录(3)
  13. 记一次rsyslog日志记录失败的解决过程
  14. linux内存写保护,[原创]不用CR0或MDL修改内核非分页写保护内存的一种思路(x64)
  15. java 狗带风波_狗狗风波
  16. DOS命令运行java程序
  17. 2021数字孪生城市白皮书 附下载
  18. vue 使用自定义字体
  19. bootstrap开发的新闻网站
  20. 谷歌自研 Tensor 芯片,8核CPU,20核GPU……

热门文章

  1. 支付宝、微信收款码明年3月1日起将禁止商用?系误读!
  2. 蔚来事件后 理想和小鹏改了“辅助驾驶系统”官方宣传用词
  3. 超60万人抢购!魅族这波营销火了
  4. 2021款iPad Pro渲染图曝光:依旧采用双摄+激光雷达扫描仪
  5. 又一波“打工人”财富自由!快手赴港上市,4000员工人均身家一夜涨至3000万...
  6. 修手机时创意被剽窃,男子向苹果索赔7万亿!是认真的吗?
  7. 腾讯副总裁程武取代吴文辉接管阅文集团 后者开盘涨近4%
  8. 再见了!微软宣布停止服务支持:一代经典系统退出舞台
  9. 知名笔记本躺枪!苹果首席营销官开喷:小孩用了没出息
  10. 王思聪5亿投资神话破灭?旗下普思资本股权遭冻结,冻结期3年