写点什么

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

评论

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

数据库的简述与常用操作指南

行者AI

数据库

企业在运营过程中需要解决的五项网络安全项目

九河云安全

5招教你实现多线程场景下的线程安全

华为云开发者联盟

Java 线程 多线程 线程安全

想聊天?自己搭建个聊天机器人吧!

百度开发者中心

人工智能 最佳实践 方法论 飞桨 语言 & 开发

TCP 三次握手

W🌥

计算机网络 TCP/IP 8月日更

「独立思考」的背后是一个残酷的世界

非著名程序员

提升认知 个人提升 独立思考 8月日更

对象存储手把手教四 | Bucket 生命周期管理

QingStor分布式存储

对象存储 分布式存储 生命周期 数据管理

波场DAPP钱包开发|波场DAPP特点

Geek_23f0c3

钱包系统开发 DAPP智能合约交易系统开发 波场DAPP 波场钱包

图谱可视化|手把手教你采集明星人物关系并进行图谱展示

Python研究者

知识图谱 8月日更

舍弃Kong和Nginx,Apache APISIX 在趣链科技 BaaS 平台的落地实践

API7.ai 技术团队

nginx 开源 网关 kong APISIX

使用FL studio中文版进行音乐合并和剪切

懒得勤快

跟我读论文丨ACL2021 NER BERT化隐马尔可夫模型用于多源弱监督命名实体识别

华为云开发者联盟

BERT 弱监督 隐马尔可夫 CHMM HMM模型

贡献者,是衡量开源项目的金指标

API7.ai 技术团队

开源 网关 APISIX

Redis扩展数据类型详解

码农参上

redis 8月日更

程序员投入时间和精力实现财富增长之道,这可能会伴随你程序员整个生涯(请不要连续点赞)

孙叫兽

程序员 赚钱 教程 引航计划 签约计划第二季

ipfs矿机挖币哪家最好?ipfs矿机公司实力排行如何?

ipfs矿机挖币哪家最好 ipfs矿机公司实力排行如何

连续霸榜丨EasyDL到底有多强?

百度大脑

人工智能 EasyDL

企业数字化转型第一步,云服务器的部署以及搭建

九河云安全

趁着课余时间学点Python(十)面向对象的理解(前奏)

ベ布小禅

8月日更

知乎李大海对话阿里云贾扬清:透视AI应用难题与未来趋势

阿里云大数据AI技术

Asop 之 消息处理机制

Qunar技术沙龙

android Linux 消息队列 安卓 epoll

大数据集群跨多版本升级、业务0中断,只因背后有TA

华为云开发者联盟

大数据 FusionInsight

高防服务器大数据时代下的最佳应用途径

九河云安全

高防云服务器服务器的价值会随着时间而扩展,从"成本效率"扩展到"新服务和技术"

九河云安全

YYDS《剑指Offer》再续新篇,百万程序员人手一册

博文视点Broadview

云服务器市场改变了行业市场的发展规模

九河云安全

一文带你了解大厂亿级并发下高性能服务器是如何实现的!

Linux服务器开发

事件驱动 多进程 Linux服务器开发 IO多路复用 高性能服务器

Karmada: 云原生多云容器编排平台

华为云原生团队

开源 容器 k8s多集群管理 多云管理平台 多云

7金5银,中国跳水梦之队背后的"黑科技"是什么?

百度大脑

人工智能 黑科技 跳水队

绝了!阿里甩出“源码阅读指南”,原来源码才是最经典的学习范例

Java 编程 架构 面试 程序人生

聊聊 PC 端自动化最佳方案 - WinAppDriver

星安果

Python 自动化 WinAppDriver

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