他来啦,他来啦!大数据基础平台发布会中提到的智能运维平台,他来啦!

作为数据平台的用户们,下述问题一直困扰着我们:

  • 集群资源水位如何,利用率如何,是否需要扩容?
  • 队列为什么最近大量任务出现pending,什么原因造成?
  • 哪些任务占用了队列的大部分资源,是否合理,能否优化?
  • 任务运行为什么这么慢,哪里出现了问题?
  • 任务是否能优化,加快产出?
  • 任务或服务出现异常,能否自动运维处理?
    ... ...

我们针对上述问题,研发了一款自助式、智能化的监控诊断平台——EasyEagle。旨在达到如下目的:

  • 各层面的实时资源水位监控(集群、队列、任务、节点),包括申请以及实际使用;
  • 帮助平台管理员以及用户了解各自层面的资源使用状况,帮助用户更好的进行资源优化,提升资源利用率;
  • 对于队列的相关问题,能很快给出诊断结果,减少用户定位时间;
  • 对于任务的性能或异常,能很快给出诊断结果以及建议;
  • 通过对任务的诊断,能提出相关优化建议,进而加快任务的产出以及提高整体的资源利用率。

我们将会从集群队列视角、任务视角、资源治理以及全链路诊断,进行分篇介绍。给各层面的用户展现目前代表性的问题,以及如何使用EasyEagle去发现、解决。本篇将从集群视角和队列视角进行相关的介绍。

1集群视角

1.1 集群基础监控

集群这块,主要是针对平台管理员。他们主要关心的问题如下:

  • 集群资源水位如何?
  • 资源利用率如何?
  • 是否需要扩缩容等等

EasyEagle提供了集群实时资源监控,并能依据所选时间,给出时间段内资源水位的走势情况,依据此信息,管理员能清楚的知道集群闲置及繁忙的时间段,这能为合理的任务编排起到参考作用,例如将非基线任务从繁忙的基线时间段错开,将高资源消耗任务移至资源空闲的时间段调度等。

EasyEagle同时提供了集群任务量的汇总分析功能,以天为维度或以月为维度,可以清楚的了解到集群每天或每月的任务量数值变化,以此能够衡量最近业务的增长/降低情况,并结合资源水位进一步分析集群的可扩展性以及水位变化趋势,为集群资源扩容等操作提供了数据参考。

EasyEagle的集群概览界面,展示了如上介绍的相关指标数据。如下图例所示,展示了集群的实时资源及节点情况、集群任务数量汇总信息,以及集群资源水位等。

此外,作为EasyEagle的亮点之一,可以看到除了集群的内存和CPU的资源水位情况,我们还引入了集群的实际资源使用率(图中绿色的线)。简单来说,在集群分配给任务使用的资源中,有多少是真正的被任务利用到的呢?EasyEagle通过各个节点机器的实际负载和内存使用,汇集成为整个集群的维度的实际资源使用情况。若发现集群可分配资源已经满载,但实际负载却很低,那么就需要关注下,集群大规模的任务资源申请是否有浪费的嫌疑。

为了能够更加直观的展示出实际资源的利用率,EasyEagle将集群每台节点的资源利用率以散点图的形式进行展现,如下图例所示。每个点代表集群中的一个计算节点,横坐标和纵坐标分别是节点内存和CPU利用率。在理想的情况下,机器的内存使用率和cpu使用率应该较为平衡,体现在图中将会是所有点均匀分布在斜率为1的一条线附近。而在所示图例中,发现大多数机器节点cpu利用率明显偏高在40%左右;而内存利用率却不足15%。那么就需要关注,集群中每台计算节点配置和虚拟核及内存大小比例是否合理。

根据上述的实际案例,EasyEagle在此模块明显能告知管理员以下信息:

  • 集群资源水位情况,何时出现繁忙,任务应该如何安排调度时间
  • 资源的实际利用率如何,是否可以进一步优化,而不需要采购机器
  • 集群节点的cpu和内存配比是否正确,应该如何设置配比

总之,EasyEagle能够从集群整体维度入手,对集群资源水位,资源利用情况,任务量变化趋势,机器节点利用率等大数据平台运维人员最关心的点,进行展示与剖析。

1.2 集群队列大量任务pending诊断

针对平台管理员除了提供集群的基础监控分析外,目前EasyEagle还提供了针对集群各个队列运行状况的相关监控。

在我们对于hadoop平台的实践过程中,常遇到这样的现象:用户提交的任务,等待了很久,却发现迟迟调度不起来。这样的现象较普遍,经常会集中在某一个特定的时段,且每天都会周期性的发生。若pending的是非核心任务,非基线任务,或不关注时效性的离线任务,集群或队列发生的任务pending很多时候会不被人感知,从而误以为集群不存在这样的情况;但是如果是核心任务,那大量的pending将会影响业务的产出。

因此,这样的现象应该需要引起注意并解决。EasyEagle对于集群所属队列的pending有如下的分析:

针对发生pending的原因,大致可以分为如下两种情况:

(1)队列资源充足,队列大量任务pending

  • 队列AM资源不足
  • Yarn调度性能不足

(2)队列资源不足,队列大量任务pending

  • 队列本身资源不足
  • 队列的父队列资源不足,或兄弟队列进行了资源抢占

分析出pending的原因后,会给出以下数据指标:

  • pending发生的队列
  • pending问题产生的实际队列
  • 配置时间段内,连续7天,pending问题产生的实际队列的资源使用率趋势
  • 配置时间段内,队列发生过pending的次数

如下图例所示,EasEagle能够默认展示集群在前一天中,有哪些队列发生过pending的情况,问题实际发生的队列,以及出现过pending的原因。

点击查看详情,能够进一步展示,问题产生的实际队列的资源利用率情况,更直观的展示出问题。如下图例所示,可以选择连续七天的队列资源利用率,图中标出的点,表示该时段发生了pending的现象。

综合上述的分析,此功能模块可以解决以下问题:

  • 集群中部分队列出现大量任务pending时,可以及时诊断,提前介入,减少用户感知以及前置处理时长;
  • 通过自动诊断,可以直接告知管理员队列出现大量任务pending的具体原因。

2队列视角

作为多租户的Hadoop集群,可以将整个集群的资源拆分成子队列的形式,以支持对多业务方共享使用集群资源,并使不同业务方之间资源隔离。在这种环境下,对于业务方,可能更偏向于了解自己业务所在队列。

  • 队列各时间段的资源水位如何,任务调度时间如何安排?
  • 队列资源的实际利用率如何,是否有优化空间,是否需要向平台申请新增资源?
  • 某时间段队列可用资源突然少了这么多,是哪个任务造成的?
  • 队列在某个时间段运行特别慢,部分任务提交不上去,出了什么问题?

上述问题是业务方经常会抛给底层开发以及运维人员的。下面将会演示如何通过EasyEagle回答上述问题。

队列资源监控

EasyEagle能够选择任意时段,提供队列内存,CPU的资源使用水位趋势,队列运行和pending的任务数量趋势,如下图例所示:

从上面的队列资源使用视图,业务方能很明确的获取到:

  • 什么时间段,该队列繁忙
  • 任务的编排,应该配置在哪个时间段

在这个队列资源使用视图的下方,EasyEagle还提供了一个可以指定时间段或时间点的任务列表。列表如下所示:

该任务列表中每个任务包含指定时间段或时间点的资源申请水平等信息,能帮忙业务方很快的定位出:

哪个时间段,哪个任务申请了较高的资源

和集群维度的实际资源使用类似,EasyEagle也提供了队列实际资源使用率。EasyEagle通过任务的实际资源使用情况,聚合为队列维度的实际资源使用。因此,某个队列出现实际资源利用率过低,也就代表了队列下的任务出现了资源浪费的情况。如下图所示,蓝色线表示了队列已经占用的资源水位,绿色线表示队列实际的资源使用水位。

若发现了队列资源出现的问题,如集群的资源水位很高,但资源利用率却很低,我们知道这一定是由于队列中大量的任务申请资源出现了浪费导致的。想要提高队列的资源利用率,就一定要从这些任务进行入手治理,通过一定的方式,将任务的资源利用率提高,以此提高队列,乃至整个集群的资源利用率。

在队列的资源分析模块,也非常详尽的提供了队列中资源消耗较高,但资源利用率低的任务列表。这个任务列表也相当于提供了优化收益最大的top任务信息。优先优化这些任务的资源消耗,提高利用率,可以获得最大的收益,并明显的反映在队列资源中。目前该列表返回的信息如下图例所示。

找到了待优化的任务列表,接下来就是针对单个任务的优化了,对于单个任务的资源的优化方式和策略,可以在下文中,任务资源治理功能中获得详细的说明。

总之,在队列资源监控这个模块里,我们能为业务方解决以下问题:

  • 通过获取各时间段队列的资源水位,协助业务方合理安排任务调度;
  • 获取队列资源的实际使用情况,并列出待资源优化任务列表,协助业务方提高队列资源利用率,降低成本;
  • 实时了解,队列大任务(资源方面或运行时长方面)的运行情况;
  • 为队列资源预估提供数据支撑。

3小结

本篇围绕着集群视角和队列视角进行相关介绍。上述两个视角主要是面向数据平台的管理员等角色,他们关心的内容主要是:集群的资源水位以及各队列运行状况,进而合理的调整任务编排以及资源配比。

在后续的篇章中,我们将会以用户,即任务提交者的视角,进行相关的介绍。

有数大数据基础平台之智能运维平台EasyEagle介绍:集群队列篇的更多相关文章

  1. 支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)

    上篇文章<支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)>介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建.配置,运维.扩容等具体操作 集群搭建 ...

  2. 大数据HDFS相关的一些运维题

    1.在 HDFS 文件系统的根目录下创建递归目录“1daoyun/file”,将附件中的BigDataSkills.txt 文件,上传到 1daoyun/file 目录中,使用相关命令查看文件系统中 ...

  3. 大数据学习之旅2——从零开始搭hadoop完全分布式集群

    前言 本文从零开始搭hadoop完全分布式集群,大概花费了一天的时间边搭边写博客,一步一步完成完成集群配置,所以相信大家按照本文一步一步来完全可以搭建成功.需要注意的是本文限于篇幅和时间的限制,也是为 ...

  4. 流式大数据计算实践(3)----高可用的Hadoop集群

    一.前言 1.上文中我们已经搭建好了Hadoop和Zookeeper的集群,这一文来将Hadoop集群变得高可用 2.由于Hadoop集群是主从节点的模式,如果集群中的namenode主节点挂掉,那么 ...

  5. 支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)

    Redis作为一款性能优异的内存数据库,支撑着微博亿级社交平台,也成为很多互联网公司的标配.这里将以Redis Cluster集群为核心,基于最新的Redis5版本,从原理再到实战,玩转Redis集群 ...

  6. Elasticsearch 运维实战之1 -- 集群规划

    规划一个可用于生产环境的elasticsearch集群. 集群节点划分 整个集群的节点分为以下三种主要类型 Master nodes -- 负责维护集群状态,不保存index数据, 硬件要求: 一般性 ...

  7. 新闻网大数据实时分析可视化系统项目——3、Hadoop2.X分布式集群部署

    (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 1.基于Apache厂商的最原始的hadoop版本, 所有发行版均基于这个版本进行改进. 2.基于 ...

  8. hadoop大数据基础框架技术详解

    一.什么是大数据 进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB ...

  9. 学习大数据基础框架hadoop需要什么基础

    什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...

  10. 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

    从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...

随机推荐

  1. AIRIOT物联网低代码平台如何配置Modbus RTU协议?

    MBRTU即MODBUS RTU的简称,MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信.平台的MBRTU协议是建立在TCP协议之上的 ...

  2. Keil_MDK中无法打开map文件的解决办法

    如果在MDK中打开map文件 我们在STM32的开发过程中,经常会查看.map文件 .map文件是MDK在编译过程中生成的一个包含镜像文件信息的重要文件,在程序编译后自动生成,比方这里我的工程下自动将 ...

  3. 霍夫变换原理及实现(Opencv C++)

    已知一幅图像中的n个点,假设我们希望找到这些点中位于直线上的子集.一种可能的解决方法是,首先找到由每对点确定的所有直线,然后寻找靠近特定直线的那些点的所有子集.这种方法涉及寻找n(n-1)/2~n2条 ...

  4. 利用QEMU模拟大端序机器

    简介 当前我们安装虚拟机,一般小端机器比较多,有时候想模拟大端机器测试程序,这时就有模拟大端机器的需求. 参考:利用 QEMU USER 模式运行 mips 程序 - sinpo828 - 博客园 ( ...

  5. 使用C代码实现读取文件中的hex字符串,转换为字节数组

    举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...

  6. numpy基础--通用函数:快速的元素级数组函数

    以下代码的前提:import numpy as np 通用函数(即ufunc)是一种对narray中的数组执行元素级运算的函数.可以看作简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化 ...

  7. 2024-06-05:用go语言,给定三个正整数 n、x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况。 城市中存在一条额外的街道连接房屋 x 和房屋 y。 需要计算对于每个街道数(

    2024-06-05:用go语言,给定三个正整数 n.x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况. 城市中存在一条额外的街道连接房屋 x 和房屋 y. 需要计算对于每个街道数( ...

  8. OpenCV简单实现AR需用到的算法函数介绍

    目前的AR需求(想要达到的目标) 公司目前的需求是要能够指定一个物体开始追踪,将一张预先准备好的图像覆盖在被追踪的物体上, 然后镜头偏转缩放各类操作,再转回来仍然可以识别到,并且同样依旧覆盖图片到先前 ...

  9. kettle从入门到精通 第五十二课 ETL之kettle Avro output

    1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...

  10. linux系统下,安装mysql教程

    1.查看mysql是否安装 首先我们需要查看软件是否已经安装,或者说查看安装的软件包名称.如查找是否安装mysql rpm -qa | grep mysql 2.卸载查到的软件 rpm -e --no ...