暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

为了最好的你-大数据基础设施智能优化实践

数匠笔谈 2021-05-14
259

点击上方蓝字关注我们

编者荐语:MPP (Massively Parallel Processing),即大规模并行处理,其将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。然而,在实际的生产应用中MPP架构会受制于基础硬件性能,存在一定的短板效应。本文作者针对此短板效应的优化处理进行了初步的探索,并取得良好的效果,让我们一起跟着作者,开启接下来的探索之路吧!

MPP构架的大数据平台在海量数据高速处理的场景下具有高性能、低成本、高可靠等诸多优势,从而被众多金融行业选用作为数据仓库、历史数据管理、OLAP分析等。然而这种Share-Nothing架构为其带来优良的性能,也为其带来了计算资源与IO深度耦合的问题,表象即若集群中存在某一硬件性能短板,则整个集群性能将会下降。本文基于大量实践,提供一种基于统计方法的智能纠错机制,而从应用层面解决基于通用设备构建的MPP架构短板效应的思路及方法。在实际生产环境中,验证取得了较好的应用效果。

一、  现状

与众多金融同业相同,我行离线批处理平台采用的为MPP架构的数据库,能够提供PB级数据的管理及分析功能。目前,我行离线批处理平台支撑绩效考核、监管报送等89个业务项目组,生产网现共有上百个数据节点,日均作业量3W+,每日从凌晨至上午均处于高负载运行态。

二、问题

随着平台使用需求的增加以及数据量的逐渐上升,面对高负载的离线批处理平台,硬件故障的频发成为我们不得不重视的重要问题。根据同业统计,高负载的MPP集群,每块磁盘的年故障率至少为5%,而集群动辄数千块硬盘,运维管理要求极高。在生产环境,硬件层面通常采用raid组的方式来保证硬盘的高可用,如果raid组中某块硬盘故障,则会直接将故障硬盘下线,进行自动换盘,保证服务不受影响。然而最麻烦的并不是硬盘直接故障,而是硬盘已实际发生IO降速,性能下降,但是并未告警出故障,从而仍在在raid组中正常工作(我们称之为“慢盘”)。由于MPP架构短板效应的问题,一块磁盘性能下降,将会对集群产生极大的影响,但是硬盘这种性能下降,却很难通过常规硬件或者操作系统排查获悉。

如上图所示为MPP数据库的构架,我们举例说明短板效应的产生:在MPP构架中我们执行一个job,首先这个job会被分成多个task分发到各个数据节点去执行,因此当某个数据节点有慢盘产生时,分配到该数据节点上的task将执行极为缓慢,纵然其它数据节点上的task均已经正常完成,而整个job的完成时间取决于最慢task的完成时间,因此导致整体job执行时间上升。最终反映的应用层面,就是无症状的任务执行缓慢。

三、采取的方法及迭代

面对慢盘的初始阶段,无疑是艰难的,我们甚至不知道敌人是谁。

l  根源初探

第一次项目组反馈任务执行慢、大批量作业堵塞,但是在生产操作间,面对集群各项指标都正常的我们,几乎是无从下手。然而通过后台任务,能够发现一些蛛丝马迹,定位过程中发现,大量任务会堆积在一个节点上,登录到该节点,发现io读写居高不下。因此,我们只能尝试进行隔离实例,而隔离后,任务陆续恢复,后来证明是出现了硬件慢盘故障。此后的日子里我们会同多方进行分析定位,发现硬盘负载已经是硬盘标称负载的3倍以上,面对大数据计算这种高负载、大io的场景,设备大量损耗不可避免。经过分析,先后采用硬件固件升级等方式,但效果有限,仍有不时有慢盘袭扰。
l  方案分析

为改变被动的局面,我们进行了新的尝试,根据长期的任务跟踪,开发了慢盘智能预警模块, 通过特征提取,预警指标加入集群运行状态、批量任务执行时间、单个任务执行状态等。模块上线后,验证发现在应用效果中,单纯依靠任务指标,监测过程存在两种情况,一种是滞后性,一种是超期置前性。滞后性,即当慢盘产生时,基本能够准确定位到慢盘位置,但是预警性不足,我们需要的是在慢盘影响业务前提前将其下线或更换;而超期置前性,即我们通过历史预警结果发现,几天前、甚至是数周前预警到的部分硬盘,在几天后、数周后发生了慢盘故障,然而这种超预期的提前发现,不仅提前量较大,且存在随机性和误判,同样无法满足预防性更换。

于上述情况,我们尝试直接从硬盘IO指标进行分析,并上线IO监控,开始积累IO数据。通过分析积累到的IO指标和慢盘样本点,我们设置了重点IO指标预警,涉及参数包括svctm、await、r/s、w/s等,从应用效果及统计发现, IO指标预警虽然准确率较高,但同样存在滞后性。即短时间内的突变异常即使容易发现,但此时业务已经实际受到影响,所以单纯依靠IO指标仍然较难实现提前预警。

例如上图所示为实际慢盘样本点的svctm指标变化(svctm指io平均服务时间,一般值越高硬盘状态越差),当日约13点发现任务堵塞,而svctm指标在12点-15点间值明显异常波动,虽然短时特征较为明显,但前期特征不足。因此难以实现较大时间提前量的预防性更换。

l  智能纠错方案

因此,考虑利用应用侧指标预警的超期置前性以及硬件侧指标预警的准确性,我们将两者结合,利用统计学相关原理,综合判定实现硬件故障智能纠错预警,为了在实现预警的基础上提升命中准确率,硬件日志成了重要的方向,通过同硬件厂商对接,我们确定了日志中的重要参数口径,根据前期慢盘带来影响的特性,以及反复结合应用侧指标预警情况,我们确定了日志监测逻辑,结合日志指标,将问题硬盘打上标记。

通过调整,根据预警结果将疑似问题硬盘打上标记,我们基本改变了被动局面,具备了预防性更换的能力。下表给出部分硬件侧指标参考。

如下图所示,21年2月第1周自研慢盘智能预警模块共计监测10个疑似节点(每个节点有4块硬盘),经确认4个节点中的6块硬盘存在报错,预防性更换6块硬盘,命中节点准确率40%。后续持续优化了其中2项预警指标:io监控阈值、任务堵塞次数阈值;增加预警指标1项:io读写总量,上线后,准确率最高提升到55.6%。

经过与硬件厂商沟通确认,以及不断调整判定的算法及阈值,并及时与多方验证判定结果,进行预防性更换。改进之后的口径统一使得检测率提升到100%。

四、成果

根据上线后情况跟踪,已预防性更换60+块硬盘;连续10周,未出现慢盘故障影响集群业务跑批,参考20年同期数据量的情况下约每周出现1次慢盘故障。
提高集群服务水平的同时,慢盘预防性更换极大的改进了运维能力,原先一旦慢盘产生需要涉及多方配合且长周期的人工处理方式,完全由预防性更换代替,已无需人工定位慢盘位置及手动隔离故障节点,极大的降低了运维难度。

文章转载自数匠笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论