【Flink】flink keyby 在 subtask 中分配不均的研究
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 中分配不均的研究相关推荐
- 【Flink】Flink 没有keyBy 某个 subTask 没有数据
文章目录 1.概述 M.扩展 1.概述 一个flink程序,如下,但是总共100多个task,然后只有一个没有数据. 第一怀疑是不是keyBy问题,上述看错了,然后以为有keyBy 然后参考文章:[F ...
- flink去重(二)解决flink、flink-sql去重过程中的热点问题
解决flink.flink-sql去重过程中的热点问题 1.flink-sql解决热点问题 使用Sql去实现一个去重功能,通常会这样实现 SELECT day, COUNT(DISTINCT user ...
- Flink系列之:基于scala语言实现flink实时消费Kafka Topic中的数据
Flink系列之:基于scala语言实现flink实时消费Kafka Topic中的数据 一.引入flink相关依赖 二.properties保存连接kafka的配置 三.构建flink实时消费环境 ...
- 凌波微步Flink——Flink API中的一些基础概念
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95355619 本文出自[我是干勾鱼的博客] Ingredients: Java: ...
- flink 不设置水印_从0到1学习Flink—— Flink parallelism 和 Slot 介绍
前言 之所以写这个是因为前段时间自己的项目出现过这样的一个问题: 1Caused by: akka.pattern.AskTimeoutException: 2Ask timed out on [Ac ...
- 大数据计算引擎之Flink Flink CEP复杂事件编程
原文地址:大数据计算引擎之Flink Flink CEP复杂事件编程 复杂事件编程(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的时事件系序列库,并利 ...
- 凌波微步Flink——Flink的技术逻辑与编程步骤剖析
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95459606 本文出自[我是干勾鱼的博客] Ingredients: Java: ...
- Flink——Flink CheckPoint之两阶段提交协议(Two-Phase Commit Protocol)
文章目录 两阶段提交协议 1. 两阶段提交的前提条件 2. 两阶段提交的基本算法 a. 第一阶段(提交请求阶段) b. 第二阶段(提交执行阶段) 3. 两阶段提交的缺点 Flink-两阶段提交协议 1 ...
- LeetCode979. 在二叉树中分配硬币
问题:979. 在二叉树中分配硬币 给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币. 在一次移动中,我们可以选择两个相邻的 ...
最新文章
- 使用NuGet发布自己的类库包(Library Package)
- 元胞自动机(Cellular Automata)
- directplay需要安装吗_燃气报警器需要安装吗这里告诉你
- JS入门之Date对象
- Qt笔记-AES加密
- 随想录(C++下多线程的创建)
- MongoDB的选举过程
- PHP+MySQL实现读写分离
- VMware密匙安装教程
- MySQL 安装及配置 Navicat 工具
- 物联网工程专业该怎么学?老学长吐血整理!!
- 做人做事箴言录(3)
- 记一次rsyslog日志记录失败的解决过程
- linux内存写保护,[原创]不用CR0或MDL修改内核非分页写保护内存的一种思路(x64)
- java 狗带风波_狗狗风波
- DOS命令运行java程序
- 2021数字孪生城市白皮书 附下载
- vue 使用自定义字体
- bootstrap开发的新闻网站
- 谷歌自研 Tensor 芯片,8核CPU,20核GPU……
热门文章
- 支付宝、微信收款码明年3月1日起将禁止商用?系误读!
- 蔚来事件后 理想和小鹏改了“辅助驾驶系统”官方宣传用词
- 超60万人抢购!魅族这波营销火了
- 2021款iPad Pro渲染图曝光:依旧采用双摄+激光雷达扫描仪
- 又一波“打工人”财富自由!快手赴港上市,4000员工人均身家一夜涨至3000万...
- 修手机时创意被剽窃,男子向苹果索赔7万亿!是认真的吗?
- 腾讯副总裁程武取代吴文辉接管阅文集团 后者开盘涨近4%
- 再见了!微软宣布停止服务支持:一代经典系统退出舞台
- 知名笔记本躺枪!苹果首席营销官开喷:小孩用了没出息
- 王思聪5亿投资神话破灭?旗下普思资本股权遭冻结,冻结期3年