当前位置: 首页 > news >正文

如何处理生产环境中的数据倾斜问题?

分析&回答

1、flink数据倾斜的表现:

任务节点频繁出现反压,增加并行度也不能解决问题

部分节点出现OOM异常,是因为大量的数据集中在某个节点上,导致该节点内存被爆,任务失败重启

2、数据倾斜产生的原因:

业务上有严重的数据热点,比如滴滴打车的订单数据中北京、上海等几个城市的订单量远远超过其他地区;

技术上大量使用了 KeyBy、GroupBy 等操作,错误的使用了分组 Key,人为产生数据热点。

3、解决问题的思路:

业务上要尽量避免热点 key 的设计,例如我们可以把北京、上海等热点城市分成不同的区域,并进行单独处理;

技术上出现热点时,要调整方案打散原来的 key,避免直接聚合;此外 Flink 还提供了大量的功能可以避免数据倾斜。

3、Flink 任务数据倾斜场景和解决方案

A、两阶段聚合解决 KeyBy 热点:

  • 首先把分组的 key 打散,比如加随机后缀;
  • 对打散后的数据进行聚合;
  • 把打散的 key 还原为真正的 key;
  • 二次 KeyBy 进行结果统计,然后输出。
DataStream sourceStream = ...;
resultStream = sourceStream.map(record -> {Record record = JSON.parseObject(record, Record.class);String type = record.getType();record.setType(type + "#" + new Random().nextInt(100));return record;}).keyBy(0).window(TumblingEventTimeWindows.of(Time.minutes(1))).aggregate(new CountAggregate()).map(count -> {String key = count.getKey.substring(0, count.getKey.indexOf("#"));return RecordCount(key,count.getCount);})//二次聚合.keyBy(0).process(new CountProcessFunction);
resultStream.sink()...env.execute()...
复制代码

B、GroupBy + Aggregation 分组聚合热点问题:

将SQL 拆成了内外两层,第一层通过随机打散 100 份的方式减少数据热点,当然这个打散的方式可以根据业务灵活指定。

select date,type,sum(pv) as pv
from(selectdate,type,sum(count) as pvfrom tablegroup bydate,type,floor(rand()*100) --随机打散成100份 )group by date,type;
复制代码

C、Flink 消费 Kafka 上下游并行度不一致导致的数据倾斜

Flink 消费 Kafka 的数据时,是推荐上下游并行度保持一致,即 Kafka 的分区数等于 Flink Consumer 的并行度

但是会有一种情况,为了加快数据的处理速度,来设置 Flink 消费者的并行度大于 Kafka 的分区数。如果你不做任何的设置则会导致部分 Flink Consumer 线程永远消费不到数据。需要设置 Flink 的 Redistributing,也就是数据重分配

dataStream.setParallelism(2)// 采用REBALANCE分区策略重分区.rebalance() //.rescale().print().setParallelism(4);
复制代码
  • Rebalance 分区策略,数据会以 round-robin 的方式对数据进行再次分区,可以全局负载均衡。
  • Rescale 分区策略基于上下游的并行度,会将数据以循环的方式输出到下游的每个实例中

喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

相关文章:

如何处理生产环境中的数据倾斜问题?

分析&回答 1、flink数据倾斜的表现: 任务节点频繁出现反压,增加并行度也不能解决问题 部分节点出现OOM异常,是因为大量的数据集中在某个节点上,导致该节点内存被爆,任务失败重启 2、数据倾斜产生的原因&#x…...

【WSN无线传感器网络恶意节点】使用 MATLAB 进行无线传感器网络部署研究

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

C# 实现浏览器控件设置

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...

1130 - Host ‘17216.18083‘ is not allowed to connect to this MySQL server

mysql5.7 设置root远程登录 1、登录数据库 mysql -u root -p 2、设置root 用户允许远程登录,"your password" 是自己设置的密码; GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY your password WITH GRANT OPTION; 3、刷新权限 FLUSH PRIVILEG…...

使用Spring的getBeansOfType实现接口多实现类的动态调用

使用Spring的getBeansOfType实现接口多实现类的动态调用 package com.xxl.job.admin.core.alarm;import com.xxl.job.admin.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sp…...

(笔记三)opencv图像基础操作

强调:本文只为学习记录做笔记 详细可参考opencv官网 :https://docs.opencv.org/4.1.1/d0/d86/tutorial_py_image_arithmetics.html (1)将cv2的BGR模式改为RGB模式 #!/usr/bin/env python # -*- coding:utf-8 -*- ""&q…...

PHP入门及环境搭建 - XAMPP

文章目录 PHP简介搭建PHP环境(XAMPP)下载XAMPP安装XAMPP第1步:双击setup_xampp.bat检测第2步:启动Apache和MySQL第3步:浏览器访问内置的启动页面readme文档 - 必读运行Hello World程序下载并安装Eclipse for PHP编写Hello World程序参考目标: 1、了解PHP语言 2、搭建PHP开…...

开学季ipad手写笔什么牌子好?第三方电容笔推荐

自从ipad之类的平板电脑上出现了电容笔,电容笔就成功的取代了我们的手指,大大加快了我们的写作速度。不过,由于苹果pencil自带的先进芯片,导致其售价一直很高,给很多人,特别是学生,造成了很大的…...

【力扣】62. 不同路径 <动态规划>

【力扣】62. 不同路径 一个机器人位于一个 m m m x n n n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条…...

【Python小项目】Python的GUI库Tkinter实现随机点名工具或抽奖工具并封装成.exe可执行文件

文章目录 一、项目背景二、需求分析UI界面设计如下:具体需求如下:二、实现思路三、项目关键代码读取excel中的人员名单实现随机滚动抽取主函数中Tkinter的界面相关操作实现窗口相关背景图设置组件相关完整代码四、将程序封装成.exe可执行文件将代码转换成.py文件五、总结与拓…...

【MySql】mysql之基础语句

一、常用的数据类型 类型解释举例int整型用于定义整数类型的数据(1、2、3、4、5…)float单精度浮点(4字节32位)准确表示小数点后六位double双精度浮点(8字节64位)小数位更多,更精确char固定长度…...

使用API调用获取商品数据的完整方案

在电子商务应用程序中,商品详情接口是不可或缺的一部分。它用于从电商平台或自己的数据库中获取商品数据,并将其提供给应用程序的其他部分使用。本文将详细介绍如何设计一个完整的商品详情接口方案,其中包括使用API调用来获取商品数据的过程。…...

来看看入门级别的室内设计创意是怎么样构成的

在这个世界上,信息源源不断地输送给我们,数字通信成为常态,对话的艺术正在逐渐消失;衡量一个人社交成功与否的最佳标准变为点赞数、粉丝数和高参与率;Ai人工智能引发了更快节奏的工作流程,工作要求越来越高…...

Go 面向对象(匿名字段)

概述 严格意义上说,GO语言中没有类(class)的概念,但是我们可以将结构体比作为类,因为在结构体中可以添加属性(成员),方法(函数)。 面向对象编程的好处比较多,我们先来说一下“继承…...

生成式AI,赋能数字劳动力的关键工具

人们认为,生成式人工智能是一种可以让他们用自己的话来提问或生成副本和图像的工具。事实也是如此,人工智能在这两方面上都做的非常好,但让人意想不到的是,它还蕴含着改变我们个人和专业工作的巨大潜力,能帮我们访问、…...

python提取邮件的附件,以excel为例

配置邮箱、读取基本的邮件内容请参考:python读取并解析邮箱邮件,读取邮件主题、内容、时间 以excel为例: 获取邮件: email_value_config {imap_server: imap.exmail.qq.com, username: xxxxxxxx.com, password: xxxxx, }# 连接…...

ZooKeeper技术内幕

文章目录 1、系统模型1.1、数据模型1.2、节点特性1.2.1、节点类型 1.3、版本——保证分布式数据原子性操作1.4、 Watcher——数据变更的通知1.5、ACL——保障数据的安全1.5.1、权限模式:Scheme1.5.2、授权对象:ID1.5.3、权限扩展体系 2、序列化与协议2.1…...

乱糟糟的YOLOv8-detect和pose训练自己的数据集

时代在进步,yolo在进步,我还在踏步,v8我浅搞了一下detect和pose,记录一下,我还是要吐槽一下,为啥子这个模型就放在了这个文件深处,如图。 以下教程只应用于直接应用yolov8,不修改。…...

【Nginx】Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解

$remote_addr 代表客户端IP。注意,这里的客户端指的是直接请求Nginx的客户端,非间接请求的客户端。假设用户请求过程如下: 用户客户端--发送请求->Nginx1 --转发请求-->Nginx2->后端服务器那么,默认情况下,…...

MySQL自动删除binlog日志

MySQL的二进制日志(binlog)是MySQL用于复制和恢复操作的日志。随着时间的推移,binlog文件可能会快速增长并占用大量的磁盘空间。为了避免磁盘空间耗尽,您可以配置MySQL自动删除旧的binlog文件。 以下是自动删除binlog文件的方法&…...

【数据手册解读12】发光二极管-LED

发光二极管-LED 国星光电 LED IF:正向电流,...

RTX4090D优化版Qwen3-32B+OpenClaw实战:低成本构建个人AI工作流

RTX4090D优化版Qwen3-32BOpenClaw实战:低成本构建个人AI工作流 1. 为什么选择本地部署大模型OpenClaw组合 去年我开始尝试用AI自动化处理日常工作,最初直接调用公有云API,但很快遇到三个痛点:一是敏感文件不敢上传第三方服务&am…...

intv_ai_mk11应用场景:法务合同初审助手、HR招聘JD生成器、财务报表解读辅助工具

intv_ai_mk11在法务、HR和财务领域的三大应用实践 1. 为什么选择intv_ai_mk11作为企业助手 在当今快节奏的商业环境中,法务、HR和财务部门每天都要处理大量重复性工作。传统的人工处理方式不仅效率低下,还容易出错。intv_ai_mk11 AI对话机器人基于7B参…...

旧手机秒变电脑摄像头:DroidCam创新应用指南

旧手机秒变电脑摄像头:DroidCam创新应用指南 【免费下载链接】droidcam GNU/Linux/nix client for DroidCam 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam 在远程办公与在线协作日益普及的今天,高质量摄像头成为必备工具。然而专用摄像…...

家电安全门神:拆解IEC60730 Class B认证,看你的洗衣机如何防‘发疯’

家电安全门神:拆解IEC60730 Class B认证,看你的洗衣机如何防‘发疯’ 当你按下洗衣机的启动键时,是否想过这个看似简单的动作背后隐藏着多少安全防线?现代家电早已不是机械旋钮时代那么简单——它们内置的电子控制系统如同隐形保镖…...

ipa 覆盖算法参数调优实战:从理论到可视化验证

1. IPA覆盖算法核心参数解析 在机器人路径规划领域,IPA覆盖算法因其高效性和适应性被广泛应用。这个算法的核心在于几个关键参数的协同作用,它们直接影响着机器人的覆盖路径质量和执行效率。让我们先来认识这些"幕后操控者": cover…...

GTE多任务NLP引擎部署教程:离线环境下的安装、配置与测试

GTE多任务NLP引擎部署教程:离线环境下的安装、配置与测试 1. 环境准备与快速部署 1.1 系统要求与依赖检查 在开始部署前,请确保您的离线服务器满足以下最低要求: 操作系统:Ubuntu 20.04/22.04 或 CentOS 7/8(推荐&…...

Chord视觉定位模型实战案例:自动驾驶道路元素(车道线/交通灯/行人)定位

Chord视觉定位模型实战案例:自动驾驶道路元素(车道线/交通灯/行人)定位 在真实自动驾驶场景中,单纯依赖传统目标检测模型往往面临泛化能力弱、小目标漏检、遮挡鲁棒性差等问题。而Chord——这个基于Qwen2.5-VL的多模态视觉定位服…...

Kandinsky-5.0-I2V-Lite-5s性能调优教程:采样步数24平衡效率与质量实测

Kandinsky-5.0-I2V-Lite-5s性能调优教程:采样步数24平衡效率与质量实测 1. 模型简介与核心能力 Kandinsky-5.0-I2V-Lite-5s是一款专为单卡环境优化的轻量级图生视频模型。它能够将静态图片转化为约5秒时长的动态视频(24fps),只需…...

Air8101:低功耗-WiFi-UI_SoC模组介绍

一、模组概述 Air8101 是高性能 WiFi SoC 模组,支持2.4G WiFi6与BLE 5.4双模通信,兼容DVP/UVC摄像头接口,可实现200W像素拍照、100W像素录像(支持H.264编码及RTMP推流),搭载LuatOS,降低二次开发…...