写点什么

eBay Hadoop/Spark 自助分析系统实践

  • 2019-07-18
  • 本文字数:3249 字

    阅读完需:约 11 分钟

eBay Hadoop/Spark自助分析系统实践

eBay 一直倡导数据驱动业务。数据处理和分析的及时与深入与否,直接影响了业务的效益。因此,一站式的工作负载自助分析工具对数据处理工程师和平台的运维人员显得尤为重要。


“为什么处理作业要比平时运行得慢?”


“最近有哪些作业失败了?它们为什么失败?”


“哪个作业占用了平台最多的资源?”


”平台上是不是还能支撑更多的工作负载?“


这是数据处理工程师以及分析师和数据平台管理员之间经常发生的对话。我们亟需一个智能化的工作负载管理引擎提供自助分析体验使得管理员能轻松驾驭这些日常的问题,从而达到:


  • 帮助用户更快地进行应用程序排错

  • 对于应用程序的性能问题,可以很快给出有效建议

  • 通过应用程序优化,提高集群的整体利用率


在一个多租户的 Hadoop 环境中,首要解决的问题是如何有效实现系统资源的隔离和共享,并能最大化利用系统的资源。在提供 Workload Analytics System 能力之前,我们尝试了其他各种方法来解决集群的性能问题,但终究无法让我们深入了解集群。Workload Analytics System 为我们解决问题提供了详细的数据支撑,细粒度的作业、平台指标监控 - 给管理员、开发者、业务运维工程师提供近乎实时的平台运行洞察


下面将从 集群资源监控 用户作业监控 两方面入手详细阐述 eBay 大数据团队行之有效的解决方案

集群资源监控

首先,Workload Analytics System 提供的实时资源监控可以让管理员和普通用户了解整个集群的资源使用状况,或者是对应的资源池的资源使用情况,以便了解到集群通常的的闲置或者繁忙时段,那么相关的作业调度可以做适当的调整。在闲置时间的调度,可以让计算资源得到该有的保证;在繁忙时段的资源调度会出现大量的争用情况。集群的普通用户偶尔会发现自己的批处理作业似乎运行变慢了,首先要查看的是资源的调度情况是不是有变坏的迹象,然后再去查看是不是有其他的原因导致。


对于集群的管理员或者一个资源池的所属者,他不仅仅要知道集群或者队列的整体繁忙情况,通常也要针对繁忙的情况给集群或者队列的使用者合理的说明,哪些作业在某个时间段占用了集群绝大多数的资源。Workload Analytics System 提供了深度资源使用分析能力,可以让管理员很快地获取这些信息。如图例:



每个重要的集群都有资源的使用视图,不用的资源池占用的集群资源以不同的颜色标注,用户也可以选择不同粒度的资源池查看。在资源的使用视图上(Memory Usage)任意选择一个点,在下方的列表中就会显示在这个时间片段内使用资源最多的作业有哪些,默认是 5 分钟的间隔,用户可以根据自己的作业运行时长选择不同的时间段查看。


所有的资源表述都遵循 HCU(Hadoop Compute Unit,1 HCU=1 GB*Sec)的定义。每个集群在某个时间段的资源总量可以用 HCU 来衡量,每个作业运行所消耗的资源也可以用 HCU 来衡量。


在这个资源使用视图下方,Workload Analytics System 还提供了一些直观的准实时资源等待分析,包括有多少应用在等待被提交到 YARN; 对于已经提交在运行或者还未提交应用,还有多少资源请求尚未被提供。



总之,在 Workload Analyitics System 的资源使用视图中,管理员可以概览资源的实时使用状况,以及那些应用有可能过度占用了集群的资源,对于这些应用,我们可以快速进入它们的详细资源使用分析,以确定相应的优化方案,这部分我们稍后会有详细介绍。

用户作业监控

除了提供集群的资源使用分析外,Workload Analytics System 方便了用户的自助式排错或者优化体验,对作业的运行数据提供了全方位的分析,可以快速诊断作业的错误或者性能问题。


在 eBay 内部,ETL 的作业仍然占用了绝对多数的资源,而且从我们长期的监测结果来看,Memory 是系统的瓶颈所在,所以我们目前采用了 Memory*Second 来描述具体的资源。不管是 MapReduce 框架(包含 Hive),还是 Spark 作业,都是从 YARN 来分配资源的,每一个作业都有对应的资源(Memory)请求描述,已经占用资源的总体时间。


Workload Analytics System 的作业仪表盘是一个自助式的程序性能管理门户,它从管理员或者用户对作业的错误和性能问题出发,为开发人员提供了用于故障排除和优化应用程序性能的统一视图。这个统一视图,使大多数开发者能够在一个地方或者相关的应用信息,性能建议,以便开发人员轻松快速的提高应用性能,有效利用集群的资源,提供更好的多租户管理使用体验。如图例:



从问题出发,作业仪表盘分析了用户过去一天总共有多少应用失败,有多少应用占用了绝大多数的集群资源,有多少应用向系统申请的资源要远比实际使用的要多,有多少应用有严重的作业性能问题。Workload Analytics System 还呈现了资源使用的趋势图,以了解过去一段时间的作业优化对资源使用的优化结果,或者资源的异常使用情况,并作出下一步的详细分析。下面就作业错误诊断、作业性能分析、作业资源优化三个方面详细阐述。

【作业错误诊断】

Hadoop 和 Spark 的分布式作业处理提供了大规模数据处理的便利性,但与此同时也给作业诊断带来了一定的挑战。分布式计算的任务被分配到了大量不同的计算节点上,任务运行时的作业也都分不到不同的节点上。一旦发生应用程序的任务错误,分布式框架并没有把任务的运行日志集中进行分析。用户如果要知道一些具体的原因,通常要查看大量的任务运行日志,以确定问题的错误根源。作业错误诊断功能旨在提供快速的错误分析能力,尽量避免让用户去查看大量的原始日志信息,从而加快任务排错。如图例:



从作业仪表盘的错误应用视图出发,可以详细的罗列所有问题作业,包含它们的作业名,用户名(包括个人用户或者批处理账号),作业使用的资源池名称,等等。



进入作业的具体信息页面,Workload Analytics System 展现了最有可能的直接错误原因。诚然,这个错误诊断能力并不能完全分析出所有的错误直接原因,比如,应用经常会出现的 TimeoutException 或者 InterruptedException,但我们希望 95%的错误应用都可以通过错误诊断功能直接找到原因,还有一些错误,还需要用户综合多方面的日志信息,进行线下分析。高度自动的错误诊断能力着实降低了用户排错 Hadoop/Spark 任务的门槛,也极大压缩了错误诊断的时间,加快了应用的上线的频率。

【作业性能分析】

严重的作业性能问题不仅影响了作业自身的 SLA,同时也会影响集群或者同一资源池中其他作业的运行,或者是整个集群的性能,比如说作业的过量 RPC 操作降低了 NN 的 RPC 吞吐。在作业仪表盘视图中,Workload Analytics System 也突出了性能问题的应用,进入之后,我们为用户高亮了所有有待改善的应用程序列表,以及性能问题的严重性。如图例:



我们默认只显示了包含有严重级别以上的提示的作业,进入每一个具体的严重问题之后,Workload Analytics System 显示了详细的性能问题类别以及优化建议,同时给了了对应优化项的具体说明。


【作业资源优化】

在作业仪表盘中另外两个问题都和集群的资源使用相关,对每个应用,Workload Analytics System 都计算了它们的 HCU 消耗,包括实际使用的 HCU 消耗,以及申请的 HCU。


默认情况下,对于绝对资源使用超过集群 0.1%的作业,我们认为是过大的,这类作业是需要做针对性的优化的,比如是不是作业的任务数太多,任务的请求的资源过多,或者大量任务的执行时间过长。集群是一个多租户环境,每天都大几万个批处理在执行,任何一些大资源占用作业的运行都可能会影响集群的多租户能力提供。



对于绝对资源的使用我们要严格控制,这类作业通常要在业务逻辑上进行优化;另外我们也要控制资源的浪费,就是申请的 HCU 必须和实际的 HCU 使用值相近,因为 YARN 的资源分配是按照申请值来分配的,浪费的越多会造成系统的吞吐下降。默认情况下,对于资源的浪费比例超过 40%,并且浪费的绝对值超过集群整体万分之五的作业也是需要用户去做针对性优化的。


综上,Workload Analytics System 是我们追求卓越运营的必然产物,一方面增强了平台用户体验,自动排错诊断,性能预警;另一方面也降低了集群资源使用浪费的现象


本文转载自公众号 eBay 技术荟(ID:eBayTechRecruiting)


原文链接


https://mp.weixin.qq.com/s/nitBi7cvQZCnCv0RMFZnNw


2019-07-18 08:006431

评论

发布
暂无评论
发现更多内容

既然有了MySQL,为什么还要有MongoDB

Java你猿哥

Java MySQL 数据库 mongodb Java工程师

“ONE”有引力,4月21日见!

博睿数据

智能运维 博睿数据 发布会 Bonree ONE

龙智荣获Perforce公司颁发的2022年度销售与技术两项大奖

龙智—DevSecOps解决方案

版本控制

龙智被SmartBear评为2022年“最具动力营销团队”

龙智—DevSecOps解决方案

自动化测试 UI测试 UI测试自动测试

华大北斗高精度芯片助力上汽名爵MG7智能驾驶

江湖老铁

超实用VS Code for Windows快捷键

SEAL安全

vscode 企业号 4 月 PK 榜

慕了!17年阿里架构师把Spring Boot的精髓都总结出来了

Java你猿哥

Java spring Spring Boot Spring MVC Java工程师

〖产品思维训练白宝书 - 认知篇②〗- 破局高手都具备的一种底层认知就是产品思维

哈哥撩编程

#产品思维

AI大模型已经出现不可预测的能力

Baihai IDP

人工智能 深度学习 NLP 大模型 ChatGPT 企业号 4 月 PK 榜

【ChatGPT系列话题】金融行业大语言模型应用落地

易观分析

人工智能 金融 模型

软件测试/测试开发丨Web自动化测试中显式等待与隐式等待该怎么用

测试人

软件测试 自动化测试 测试开发

selenium源码通读·1 | 源码目录

Python 源码 自动化测试 selenium

你kin你擦!阿里终于肯把内部高并发编程高阶笔记开源出来了

Java你猿哥

Java nginx 高并发 SpringCloud 面经

如何打造企业专属A/B平台?火山引擎DataTester开放平台技术揭秘

字节跳动数据平台

大数据 AB testing实战 开放平台 企业号 4 月 PK 榜 企业增长

DAMS大会 | 博睿数据分享《一体化智能可观测平台建设之路》

博睿数据

可观测性 智能运维 博睿数据 Bonree ONE

户外LED显示屏对恶劣环境的防护措施!

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏

版本控制 | 告别繁琐,P4VJS带来全新的Diff体验

龙智—DevSecOps解决方案

版本控制 版本管理

Web2D工业组态工具软件——Sovit2D

2D3D前端可视化开发

web组态 组态编辑器 工业组态软件 web组态软件 2D组态

研发效能 | DevOps如何改变游戏公司工作方式?

龙智—DevSecOps解决方案

DevOps 游戏开发

免费可商用开源GPT模型问世,50G权重直接下载,性能不输GPT-3

Openlab_cosmoplat

开源项目 开源社区

Hive 和 Spark 分区策略剖析

vivo互联网技术

spark hive

机器学习实战系列[一]:工业蒸汽量预测(最新版本下篇)含特征优化模型融合等

汀丶人工智能

人工智能 数据挖掘 机器学习 LightGBM

以 100GB SSB 性能测试为例,通过 ByteHouse 云数仓开启你的数据分析之路

字节跳动数据平台

大数据 数据仓库 云原生 数据仓库服务 云数仓

Atlassian Server用户新选择 | 迁移到数据中心版前,您需要做这些准备(2)

龙智—DevSecOps解决方案

Atlassian Atlassian 云版 数据中心版 server版

集成华为运动健康服务干货总览

HarmonyOS SDK

HMS Core

一种元数据同步的方法

KaiwuDB

数据复制 KaiwuDB 元数据同步

又是一季金三银四,Spring之AOP知识要点总结

Java你猿哥

spring Spring Boot ssm aop

如何选择合适的云数据库架构与规格

NineData

数据库 阿里云 AWS RDS 数据库架构设计

HummerRisk 使用教程:镜像检测

HummerCloud

镜像安全 云原生安全

KaiwuDB 成为中国信通院数据库应用创新实验室-汽车行业工作组副组长单位

KaiwuDB

车联网 KaiwuDB 数据库行业标准制定 汽车工作组

eBay Hadoop/Spark自助分析系统实践_数据库_eBay技术荟_InfoQ精选文章