写点什么

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:006356

评论

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

Redis 数据结构介绍

一个大红包

七日更 3月日更

紫霞仙子:区块链的十二连问

悟空聊架构

Java 比特币 区块链 架构 分布式

BGP的那些事

鬼才|闲鱼PMO的年终总结

闲鱼技术

新思科技网络安全研究中心发现Jetty Web服务器存在漏洞

InfoQ_434670063458

新思科技 Jetty Web

职场的信任危机

ES_her0

28天写作 3月日更

为什么 HashMap 的加载因子是0.75?我研究源码发现一个重大秘密。。。

程序员 架构 面试

翻译:《实用的Python编程》04_03_Special_methods

codists

Python

2021最新腾讯面经分享:Java面试核心点/技术笔记/学习视频(春招必备)

比伯

Java 编程 程序员 架构 面试

多线产品作战,奔疲于不确定的路上

boshi

创业 产品策略 七日更

c++编程思路

张鹤羽

28天写作 3月日更

话说 AQS

木子的昼夜

Java AQS

Oracle 是如何处理异常的?

xiezhr

oracle 异常处理 3月日更 PLSQL

并行编程首篇

shun123456789

开发语言 基础知识

常见 git 需求整理(持续更新中)

blueju

git 大前端 工具 npm

如果延迟退休势在必行,区块链如何助力“养老助老”?

CECBC

养老

第五.需求评审与产品发布 (承上启下的作用)

让我思考一会儿

网点数字化也要适老化 浦发银行为老年人跨越“数字鸿沟”制定服务范本

CECBC

数字鸿沟

每日打卡1:删除字符串中的所有相邻重复项

有梦想的tester

七日更 3月日更

神了!华为18级专家把困扰我多年的操作系统与网络,讲明白了

程序员 架构 计算机

初学者思维 - 找到解决问题的新方法

石云升

程序员 思维模型 28天写作 3月日更 初学者思维

区块链:热追背后需冷静 技术应用要同步

CECBC

区块链

黑客之XSS注入练手:XSS Challenges通关指南

BigYoung

黑客 信息安全 XSS

Wireshark数据包分析学习笔记Day6

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

调整好心态

Nydia

两会引爆数字经济 银行与科技公司找到合作新赛道

CECBC

数字经济

高盛:机构需求量巨大,比特币年内或有望涨至10万美元

CECBC

比特币

第二章-利益相关方分析

阿珍爱上阿强

利益相关者

“数”看2021年“3•15征集令”

百分点大数据团队

SICP 习题解答 1.11

十元

Vue源码学习 | 4个实用的javascript技巧

devpoint

Vue vuejs stringify

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