其他
火山引擎 DataLeap 计算治理自动化解决方案实践和思考
导读 本文旨在探讨火山引擎 DataLeap 在处理计算治理过程中所面临的问题及其解决方案,并展示这些解决方案带来的实际收益。
痛点 & 挑战
1. 现状概览
2. 痛点:手动调参常⻅问题
系统复杂度:
动态变化:
专业知识缺乏:
一致性与可重复性缺失:
3. 挑战:复杂的优化场景和目标
稳定性与健康度:提高稳定性通常意味着需要牺牲一些资源利用率以保障运行效率;而提升健康度则旨在追求较高的资源利用率,尽管可能会对运行效率产生一些影响。 成本优化:主要包括回收无效成本和最大化资源利用率两个方向。由于业务方常存在大量未被充分利用的资源,我们需要协助他们提升任务的运行效率和缩短产出时间。 解决阻塞:通过调整算力和内存等参数来缓解阻塞。若参数调优无法完全解决阻塞问题,就需要与用户协作,优化任务的调度时间。
4. 业务优化场景需求分析
稳定性优化:
队列阻塞解决:
计算健康分提升:
成本优化:
自动化解决方案
1. 解决方案:实时规则引擎
参数实时推荐与应用:该引擎能够实时收集 Yarn container、Spark event 和 Dtop status 等数据,通过基于 app ID 的聚合,统计所有核心与观测指标,并将数据记录至历史数据库中。在连续的 3-7 天观测期内,引擎会根据收集到的数据进一步优化参数推荐,最终将推荐参数推送到 Spark 等执行引擎,并实时监控任务的执行情况。 启发式规则的应用:利用基于规则树的启发式规则,针对不同的场景,我们可以设定不同的优化目标和阈值,为优化过程提供指导。 资源使用评估:通过分析最近 3-7 天的资源使用累积指标,实时规则引擎可以评估整体的资源波动情况,为进一步的优化提供数据支持。 稳定性与健康分策略:
2. 解决方案:实时监控 & 自适应调整
OOM 自适应处理:针对易发生 OOM 的任务,我们将其调度至独立的 executor,让其独享 container 资源,从而在不增加总资源的前提下,减缓 OOM 的发生,保障任务的稳定运行。 Shuffle 溢写分裂管理:我们设定了每个容器的 Shuffle 磁盘写入量阈值。一旦写入量超过阈值,系统会自动分裂出新的容器,避免单个容器的溢写,同时减轻 ESS 的压力。 Shuffle 分级限流机制:根据任务的优先级,分配不同的查询处理速率(QPS)。高优先级任务将获得更多的 QPS,而低优先级任务的 QPS 会相应限制,以防止 ESS 服务过载,确保高优先级任务的顺利执行。 节点黑名单优化:为了降低任务失败率,我们实现了节点黑名单机制。当节点因特定失败原因被标记时,任务会尽量避免在该节点上执行。我们还提供了设置黑名单节点数量上限的功能,防止过多节点被拉黑,影响整个集群的可用性。 失败回滚与参数管理:当任务实例失败时,系统会自动将参数回滚至上一个稳定版本。若连续失败两次,系统会自动抹除推荐参数并暂停优化,以避免对任务造成进一步的干扰。这种机制有助于降低业务波动对执行的风险,同时减少人工干预的成本。
3. DataLeap 一站式的治理解决方案
实践 & 收益
1. 优化实践:队列优化前后效果
2. 收益分析:队列优化收益指标
3. 收益概览:业务队列普通策略优化效果
4. 收益概览:增量小文件合并
结论 & 展望
1. 自动化方案优势 & 局限性
效率提升:通过运用先进的算法和实时监控机制,自动化方案能够迅速锁定最优参数组合,从而提升调优效率。 准确性增强:能够妥善处理参数间复杂的相互影响,为复杂系统呈现更为精准的调优结果,进一步提高调优的准确性。 人力成本节省:自动化方案减少了人力的投入,有助于降低企业及组织的运营成本。 实时监控与自适应调整:实时监控系统的状态和性能,根据数据的变化自动做出调整,确保系统始终运行在最佳状态。
算法依赖:方案的效果高度依赖于所选用的算法,选取合适的算法和优化策略成为关键。 可解释性与可控性的局限:自动化方案可能会在可解释性和可控性方面显示出一些限制,增加了在特定情况下对系统理解和调整的难度。 特定场景的应对困难:在某些特定的场景下,自动化方案无法完全取代人工调优,仍需专业人员的参与和经验。
2. 未来发展与挑战
分级保障:实现 Pontus 和 Dorado 之间的元数据通信,针对服务等级协议(SLA)和核心链路节点,确保高优先级的稳定性和及时性。 队列管理:明确在 Megatron 侧为各业务配置的资源使用规则:
分享嘉宾
INTRODUCTION
韩谋让
火山引擎数据治理专家
限时免费资料
往期优质文章推荐
往期推荐
点个在看你最好看