大数据做「AI大模型」数据清洗调优基础篇

news2024/11/26 15:47:55

关于本文

近期一直在协助做AI大模型数据清洗调优的工作,主要就是使用大数据计算引擎Spark做一些原始数据的清洗工作,整体数据量大约6PB-8PB之间,那么对于整个大数据量的处理性能将是一个重大的挑战,关于具体的调优参数配置项暂时不在本文内容之中,因为调优还在进行时,等事情结束之后,再将相关参数以及说明发布出来。

通常来说,基础大数据集群部署之后不需要做一些调优之类的事情,可以应对几十GB或者几百GB的数据处理诉求(还要结合计算资源多少),但是当数据量和计算任务量级上了一个梯队之后(TB级别),调优有几个基本核心点需要掌握,在更多数据量、更多节点数、更多作业量级的时候,那么就要关注一些组件配置项的默认值是否合理了,一般的默认配置都是保证基本可用的,具体要改哪些配置,修改到多大的阈值要结合很多因素来考虑,本文就根据笔者的一些实战经验来概述三点(仅供参考!)

  • 整体来说,应该关注哪些因素

  • 存储量上升,需要关注哪些指标来应对读写瓶颈

  • 计算并发应该怎么设定合理?遇到瓶颈怎么办?

一:整体来说,应该关注哪些因素?

对于一个大数据集群来说,无非是包含两种类的服务,一种是计算服务(MR、Spark、Flink)、一种是存储服务(HDFS、对象存储),这些服务所运行的介质都是在某些硬件资源之上的,所以,在执行大作业、大数据量的准备工作之前我们要先评估硬件设备是否合理。

从本次调优来说,服务器单台的配置是128C2TB16TB*10 节点数在100台的规模(后续还在扩容),从机器配置来看,基本上已经满配了,但是并不是配置高了就足够了,我们还要关注CPU的调优、内存分配、硬盘盘位和硬盘类型、网络带宽大小(出入带宽流量)等等,硬件配置决定了整体软件处理性能的上限,即便软件写的很厉害,但是硬件配置跟不上的话那其实就等同于巧妇难为无米之炊。

  1. 从CPU层面需要关注那些指标:CPU是整个计算系统的核心,我们所启动的计算作业都是通过CPU的核心来进行计算的,一般大数据作业我们要关心CPU的型号、核心数,更多的核心意味着可以同时处理更多任务,尤其在大数据多线程应用中作用更大一些。其次就是主频,主频表示CPU每秒钟所能执行的基本运算次数,更高的主频通常意味着单线程任务处理速度更快。

  2. 从硬盘层面需要关注那些指标:磁盘选型是作为整个存储吞吐的核心要素之一,同时,硬盘的选型也决定了计算性能的瓶颈,当硬盘吞吐小于计算所产出的数据时,那么硬盘将为作为一个瓶颈问题, 关于硬盘首先是SSD、HDD、云盘这些来选择,你可以使用一些硬盘类的压测工具来测试每块盘的吞吐量和IOPS,比如 dd 、 CrystalDiskMark 等等。

  3. 从网卡流量方面需要关注那些:网卡是整个分布式系统做数据交换必须经过的介质,现在基本都是万兆网卡,整个流量吞吐能到几十Gb/s,在集群部署之前可以选择使用iperf3进行压测,看看整个网卡带宽的阈值是多大。在大数据量的计算过程中各个节点之间的数据传输都要经过网卡来传输,所以,如果网卡的吞吐值很小的话,就会影响整个作业的运行速度。当数据长期积压之后,那么极大可能这个container就会被failed了。

二:存储量上升,需要关注哪些指标来应对读写瓶颈?

当进行数据持续大量导入的时候,那么这里我们就要面临几个问题?除了上面几个硬件瓶颈的问题解决之外,还要查看关于底层存储系统(比如:HDFS、对象存储),对于分布式存储来说,底层都是通过RPC协议来通信的,那么这里就要判断服务本身对于RPC处理线程的大小,一般默认值都是500-1000之间,这个值就会限制大规模集群的数据同步效率。

其次,对于像HDFS这种分布式文件系统来说,为了控制数据同步的速率,可以通过DN的bandwith来控制台数据复制的带宽大小,如果服务本身的这种带宽限制比较小的话呢,也会影响数据同步的效率,所以一般而言,要根据整个集群的规模大小,所处的场景是单纯存储还是单纯计算还是存储和计算都有,如果是单存储场景的话,那么这个值就建议调大一些,可以放到Gb级别(注意:HDFS里面的带宽单位是大B,一个Byte等于8个bit,通常网卡传输是bit来传输的)

在数据量快速上升的时候,即便我们的磁盘空间足够大,也要做好空闲资源的预留,避免有热点问题的时候造成某些节点一直被写入,一直到磁盘写满影响服务的稳定性,那么这时候我们要提前设置好存储系统在写入本地磁盘的时候的预留值,我们至少要预留10%-20%的buffer,或者150G-300G的空间。

最后,就是存储选型是选择本地存储还是云端存储,这两个根本区别就是成本高低和对性能的追求,毋庸置疑,本地存储的性能是高于云端对象存储的,但是成本方面也是远远大于对象存储成本的,所以,对于这块的选型我们需要根据实际情况来判断,是空间换时间,还是成本换性能,或者说二者结合的方式也可以是一个方案,最终的数据存储还是建议留存在对象存储中的,毕竟长期来看成本更低。

三:计算并发应该怎么设定合理?遇到瓶颈怎么办?

关于计算资源这块其实涉及到的因素很多,比如硬件资源的CPU核心数,并发计算的任务多指定的虚拟核心数不能超过物理CPU核心数太多,否则会影响整个计算任务频繁的上下文切换,以及其它计算任务获取不到线程,比如内存的容量,每个并发执行的Task都需要一定的内存资源,来进行数据的加载和处理,我们需要合理的每个Map的内存大小,设置太小容易OOM,设置太大的话则资源浪费,也会触发系统级的内存交换(SWAP)影响性能,比如网络带宽和磁盘IO,如果任务需要频繁的数据同步,那么网络和磁盘的IO会比较高,这时候需要判断是否要进行数据局部加载或者分区/分块计算。

除了上面提到的硬件资源的合理配比之外,对于计算引擎本身的调优也是需要着重考虑,当然不同的计算引擎的调优参数项都不太相同,这里就提及一些能够代表一些共性的点出来吧!

  1. 根据所要计算的文件数量大小,来合理分配并发数,最好是文件数是并发数的整数倍,比如50个文件可以设定50并发或者25并发,避免设定太小影响任务执行时长,设置太大的并发度导致过多的上下文切换和通信开销。

  2. 要监控整个集群的核心指标,来判断那块会是瓶颈,如果发现某个资源使用率持续达到100%,例如CPU一直满载或内存频繁溢出,则可能是资源瓶颈。此时应考虑优化作业代码、提高硬件资源配置或调整资源分配策略。

  3. 如果并行计算任务之间存在大量等待和阻塞,可能是由于并行度设置不合理、任务间依赖关系复杂、锁竞争激烈等原因造成的,需要重新设计任务划分和执行策略。

四:结尾

综上而言,简单的概述了一下关于调优方面的基本面,当作近期调优工作的一个简单记录,后面针对每个组件的调优项以及硬件资源的配比可以单独输出一篇,毕竟目前还在进行时,针对不同的作业不同的数据及规模不同的计算引擎类别都需要针对性的进行调整。

但是,总体而言,掌握基本面之后,在上面进行具象的分析调整,基本上能够找到核心问题点以及对应的解决措施。

最后,就是关于工具的时候,在一些服务运行过程中,可能会有很多难以解释的现象,比如死锁问题、链接池问题、CPU过高问题、内存溢出问题等等,我们需要解决一些工具来排查服务里面具体是哪个类和那个函数出现了问题,一般Java常用的就是jstat、jprofiler,golang常用的就是pprof等。

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

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

相关文章

『VUE』04. 模板语法-属性绑定(详细图文注释)

目录 v-bind 属性绑定省略写法如果绑定的值是null或underfined 属性省略逻辑值绑定动态绑定总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 v-bind 属性绑定 Mustache 语法不能在 HTML 属性中使用,然而&#xff0…

上位机图像处理和嵌入式模块部署(qmacvisual非opencv算法编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 我们都知道,qmacvisual本身依赖于qtopencv的实现。大部分的界面都是依赖于qt的实现。图像算法部分,也是大部分都依赖于open…

python的神奇bug2

今天测试出一个很诡异的bug, 这个错误还真的很难发现 测试1 a [1,10,100] for i in a:print(i)if(i10):a[20,30,-1]一般来说我们在进行迭代时,a这个值时不能改动的,但是现在的问题时如果我不小心给改动了呢,结果如下 也就是说…

windows下的vscode + opencv4.8.0(C++) 配置

1.添加环境变量 D:\mingw64\bin 2.安装vscode 3.下载opencv 4.8.0 4.程序引用第三方库(opencv为例) 打开CMakeLists.txt,引入头文件,使用include_directories 加入头文件所在目录。静态链接库link_directories # 头文件 include_directories(D:/ope…

python函数参数中独立星号*的作用

python函数中间有一个()分隔,星号后面为*命名关键字参数,星号本身不是参数**。命名关键字参数,在函数调用时必须带参数名字进行调用。如下例子:

热门超声波清洗机哪个好?2024顶配超声波清洗机真实评测攻略分享

就是因为现在关于超声波清洗机的款式太多了,很多朋友无从下手,不知道到底哪款更值得入手!所以本篇文章作者集结了市面上最多人问最热门的三款超声波清洗机做了一次实测。对于热门超声波清洗机哪款更值得入手体验,一篇揭晓&#xf…

2024Postman中变量的使用!

Postman中可设置的变量类型有全局变量,环境变量,集合变量,数据变量及局部变量。区别则是各变量作用域不同,全局变量适用于所有集合,环境变量适用于当前所选环境(所有集合中均可使用不同环境变量&#xff09…

Redis(一) redis配置 | 如何连接redis服务器 | 基本数据类型 | 基本全局命令

文章目录 前言Redis 配置文件连接 redis 服务器Redis 常见数据类型Redis 基本全局命令set 和 get 命令KEYS 命令EXISTS 命令DEL 命令EXPIRE 和 TTL 命令Redis 过期策略定时器和时间轮的方式实现过期key的及时删除 TYPE 命令 前言 本篇文章将介绍我们在 Linux 环境下安装了 Red…

Centos服务器Open Gauss 部署

近期很多的项目由于信创要求使用一些国产的数据库,比如OpenGauss。OpenGuass是华为高斯DB的开源版,内核还是PostgreSQL,商业版是收费的。这里记录一下是如何安装部署 的。 官方中文文档 官方下载地址 部署要求 操作系统要求 ARM&#xff…

第十四届蓝桥杯JavaA组省赛真题 - 特殊日期

解题思路&#xff1a; 暴力秒了 public class Main {public static void main(String[] args) {int cnt 0;for (int i 1900; i < 9999; i) {for (int j 1; j < 12; j) {for (int k 1; k < days(i, j); k) {if (sum(i) sum(j) sum(k)) cnt;}}}System.out.print…

Lightguide

Resolve Assembly Challenges with Projected AR Workflows The future of assembly is here. It’s not just about automation, it’s about empowering your workforce with the best possible digital toolset. LightGuide AR is a powerful addition to your Industry 4.…

如何注册谷歌邮箱gmail

不知道大家在工作生活中有没有需要用到谷歌邮箱的地方&#xff0c;但是最近我就用到了它。因为注册ChatGPT的事&#xff0c;用了outlook&#xff0c;hotmail邮箱注册的gpt账号都被封了&#xff0c;然后通过各方面的了解&#xff0c;发现谷歌的邮箱是没有问题的&#xff0c;不会…

服务器中有g++,但是查询不到,Command ‘g++‘ not found

有gcc但是查询不到g&#xff0c;gcc版本为9.5.0 (base) zyICML:~$ g -V Command g not found, but can be installed with: apt install g Please ask your administrator. 突然就出现这个问题&#xff0c;导致detectron装不上&#xff0c;现在有时间了专门研究下怎么解决 这…

文章分享:协和文章《病原宏基因组高通量测序性能确认方案》

摘要&#xff1a;宏基因组学利用新一代高通量测序技术&#xff0c;以特定环境下病原体基因组为研究对象&#xff0c;在分析病原体多样性、种群结构、进化关系的基础上&#xff0c;进一步探究病原体的群体功能活性、相互作用及其与环境之间的关系&#xff0c;发掘潜在的生物学意…

马上蓝桥杯了,干货总结动态规划专题,祝你考场爆杀(拔高篇)最佳课题选择 书本整理 打鼹鼠 吃吃吃 非零字段划分

目录 最佳课题选择 思路&#xff1a; 书本整理 思路&#xff1a; 打鼹鼠 思路&#xff1a; 吃吃吃 思路&#xff1a; 非零字段划分 最佳课题选择 思路&#xff1a; 根本还是论文的分配&#xff0c;每个课题分配多少个论文是不确定的&#xff0c;这个也是很影响转…

六千字详解!一篇看懂 ArrayList 的扩容机制(完整源码解析)

☀️今天花了很久写了这篇关于 ArrayList 扩容机制源码解析的博客&#xff0c;在阅读源码的过程中发现了很多之前有误解的地方&#xff0c;也加深了对代码的理解&#xff0c;所以写下了这篇博客。 &#x1f3b6;本文附带了流程中所有的代码和附加解析&#xff0c;我有信心一定能…

网络安全笔记-day8,DHCP部署

DHCP部署与安全 全称&#xff08;Dynamic Host Configura Protocol&#xff09;动态主机配置协议 DHCP原理 DHCP协议_科来测试dhcp网络包-CSDN博客&#x1f50d; 注意的是利用广播地址发送包 ACK&#xff08;确认&#xff09; 如果DHCP服务器损坏&#xff0c;则在87.5%时…

Python基础:标准库 -- pprint (数据美化输出)

1. pprint 库 官方文档 pprint --- 数据美化输出 — Python 3.12.2 文档 pprint — Data pretty printer — Python 3.12.2 documentation 2. 背景 处理JSON文件或复杂的嵌套数据时&#xff0c;使用普通的 print() 函数可能不足以有效地探索数据或调试应用程序。下面通过一…

网络服务练习题

综合练习&#xff1a;请给 openlab 搭建 web 网站 网站需求&#xff1a; 1. 基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2. 给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料 和缴费网站&#xff0c;基于&#xff0c; www.openlab.c…

stm32定时器中断函数回调函数

方式一&#xff1a;stm32定时器中断可以直接在硬件中断函数TIM3_IRQHandler执行。 在HAL库中可以注册回调函数&#xff0c;在定时器中断发生时调用注册的函数&#xff0c;这样可以统一接口&#xff0c;大大提高函数可读性&#xff0c;和硬件解耦提高程序可移植性。 使用过程如…