视频-《 EMR 集群运维与排障》|学习笔记(三)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习视频-《 EMR 集群运维与排障》

开发者学堂课程企业运维训练营之大数据 EMR 原理与实践视频-《 EMR 集群运维与排障》学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1242/detail/18464


EMR 集群运维与排障

五、EMR 诊断工具

在我们 EMR 产品的发展过程中,目前我们也是推出了 EMR 2.0,2.0一个重要的功能就是 EMR 全局的一个诊断工具, EMR Doctor 是提供了一站式的智能诊断和优化服务的,通过这个工具可以高效的运维我们的集群的健康状态,然后也提供了一个对集群的计算资源,包括存储资源的分析,使我们的运维同学可以针对输出的一些异常的报告来进行调整我们的集群服务。

图片1.png

这里 EMR Doctor 主要包含两个部分,一个是实时诊断,这个就是你即点即承的诊断我们可以来看一下。

回到我们的 EMR 集群这里提供了一个实时诊断,集群集群日报的方式。之前我是诊断过可以看一下它提供了一些哪些功能实时诊断可以实时分析你的计算任务的引擎这里可以看到有三个方面一个  Spark 任务的信息分析,为什么会需要这个分析?因为在此之前我们在任务、集群的分析过程运维过程中有一些比如说大的超额慢的任务,大量的占用了我们的资源,但是我们很难来进行实时的分析出来到底是哪个任务进行的占用。这里我们的 EMR doctor提供的实时的计算资源的分析,就可以从提交上来的任务来进行快速的获取到到底是哪个任务是不健康的状态,占用资源比较多,或者是资源比较少,耗时长的一个状态。我们通过这个页面就可以快速的获取到具体的任务是哪个任务,然后把这个任务反馈到数据开发的同学,让他进行SQL的一些调整等等这个是实时健康状态的一个探测。所以说实时任务的探测对于我们数据开发的同学是一个很好的功能,因为这样的话可以协助数据开发的同学去调整 MapReduce 的任务,比如说 HIVE 的任务或者是基于Tez 的任务,或者基于 Spark 任务SQL 的任务,或者是具体的 Spark 的任务来进行调优,最大化的调整资源的使用率。

除此之外也是提供了健康日报的方式

图片1.png

这个就是每天我们的 EMR Doctor 在集群上去分析获取 HDFS 资源的资源分析, HIVE 存储资源的分析以及 HBASE 资源的分析的情况具体到提供了哪些功能?应用到哪些方面我们可以从我们的控制台来具体看一下。

这是集群的昨日的报告,那对于HDFS资源它主要是分析什么?

图片1.png

这个过程主要是获取到 HDFS 存储资源所有的数据总量的分析。那这种情况下,比如我这个集群会用的就是小文件占比比较多,那小文件占比比较多,会会导致什么问题?我们大家都知道 HDFS 是默认的存储资源是一个Block,默认的是128兆,大量的小文件存储的话,就是虽然达不到128兆,几十K的文件这样进行存储,那导致文件的数量很多,在我们计算过程中去便利这些所有的存储的小文件的时候实际数据文件的时候会导致读取大量的文件,占用磁盘大量的 IO ,以及网络的占用等等,这些情况会导致我们的任务主要的耗时会放在磁盘的 IO和网络 IO 影响任务执行的耗时。所以对我们的运维来说,可以通过我们的  HDFS  存储资源的日报的情况,来快速的定位到我具体哪些资源是存储目录有大量的小文件等等这些异常信息来进行优化。

除了HDFS之外,还是有其他的 HIVE 的存储资源的,这个我们可以也可以看一下,

图片1.png

除了 HDFS 之外,还是计算资源的检查日报,这主要是对于所有的 My SQL以及具体的队列包括 YARN 的队列使用情况的诊断,这里这边因为集群比较健康,所以没诊断出来什么信息。但是对于我们的运维同学计算的计算资源的监控,我们可以看到具体到每个 YARN 的队列的资源的使用情况,是否是要调整资源的大小,来来满足 YARN 队列的需求,可以通过计算资源的分析来进行获取到。所以整体来看 EMR Doctor 实现的功能是什么?相对于没有 EMR Doctor 的之前,我们对于任务的分析都是case相当于发现问题去找问题定位问题的一个过程。那有了 EMR Doctor 实时诊断或者是日报形式的诊断,我们就可以通过 EMR 输出的这个报告来直接定位到占有资源的任务,以及 YARN 队列资源的使用情况,以及小文件的情况来进行一个分析。所以是省了大量人力的,因为之前比如说我要一个小文件的问题,它过来是怎么过程,比如数据开发同学反馈了我这个任务越来越慢,为什么?反馈任务越来越慢,分析慢那就要分析比如说数据有没有精写,有没有大量小文件精写是一方面,大量小文件就会发现磁盘的 IO 比较高,这个文件在 HDFS 的存储表格数据是大量的小文件来呈现的,那存储 IO 比较高,磁盘压力比较大,然后耗时也比较多,网络负载也是比较高,那会导致这个任务执行慢这个情况。有了这个 EMR Doctor 之后,我们不需要通过数据开发的同学反馈过来,作为运维的同学,我直接获取日报或者截取日志,发现这个读写 IO 比较短同时我发现对任务读取的表格对应的存储目录有大量的小邮件的存在,严重影响了集群的健康状态,我就可以拿出去让运维开发的同学把这些数据进行合并一下。这个就是对于我们运维同学们运维过程中的一个很大的省劲的地方。 EMR 诊断是提供了一个整体的宏观的集群健康状态的诊断,包括给出了一个评分。

 

六、组件异常排查

在我们实际使用过程中,如果说出现组件异常的排查,我们要执行哪个思路

图片1.png

这也是我们开始讲的就是组件异常我们要怎么排查,或者对 EMR 来说有一个最好的实践来实现。我们先看一下组件的执行情况,比如说组的启动也可以通过控制台和API来进行操作,然后调用到我们管控后台的一个 Server,接收到之后下发到用户的客户集群来执行一个脚本,大体是这样一个操作。

我们可以看一下,从这里截图可以看到这个具体的执行的一个件执启动 HDFS 的流程。从这里可以看一下,回到一个我们的控制台,可以看一下具体这个命令它到底执行了什么东西因为平常我们 HADOOP 自己的集群是自己用命令的,换到我们的控制台,它流程是怎么样的,那我以 HDFS 为例,找一个 DataNode 的节点来停止启动一下,然后看一下它的脚本到底是怎么样的。触发一下停止,在这里操作日志中我们就可以判断你停止了 HDFS ,用两个 std,一个是err一个是out。翻过来看一下这个具体执行的逻辑首先是加载一些环境变量,包括参数一些对象,然后走到这之后主要关注的就是我们具体提出来是什么任务,把这个 HDFS 停掉了,可以看一下。这个 HDFS daemon在下发的指令stop datanode具体停止的指令就是这个为什么要关注这一点?因为在我们组件的维护过程中,很多情况下有可能会出现启动失败,或者是停止失败的一个情况,我们关注一下如果启动失败,这里会打印出来具体一些loading,如果loading不具体那怎么办?我们就可以把这个日志脚本复制过来,然后直接登录到我们的集群上,这个就是我的 NameNode 集群,把这个集群命令复制进去,实时看一下它的输出错误具体是什么,来方便来排查组件的异常。这个截图也是体现了可以将这个命令来进行我们实际体系上来进行执行,看主要的一个异常。除此之外,我们 EMR 也是提供了一些常用路径的展示,比如组件安装,我们所有组件是按照这个命令下的/opt/apps/组件日志的目录是在这个命令的/mnt/disk1/log/,配置文件目录是这个/ect/emr/我们可以实施具体的看一下,这里我是进入到我们 HIVE 组件之间的日志目录,我退出一下,这里是 EMR 所有组件的日志目录

图片1.png

比如说 HIVE 启动异常,我们就可以从这里进 HIVE Server项目的日志,所以组件启动失败或者停失败或者组件服务的状态,其实这种场景下我们最佳的实践途径是首先第一点,我们要在控制台上看一下这个组件的监控状态,比如说我尝试启动一下,如果启动还是失败,就可以通过日志来分析挖掘日志具体什么报错,通知管理同时也可以在这里来进行查询的,这两个其实是同样的,只不过是一个在集群图上直接获取到看连贯,然后这里是通过SSL 方式通过关键字来进行查看。

我先演示我造一个报错,然后把它恢复了,演示一下这个快速排障的流程。我这里用 HIVE 来进行一个做报错的流程。 HIVE MetaStore HIVE MetaStore 是管理数据的,但是我这个集群是用的DRF的源数据,所以这里 MetaStore 其实没有用途的,它主要的用途是什么?就是提供给其他的Store按照指标的服务。 MetaStore 是有我们的集群初始上的配置,是数据库利用的集群上本地内置的 My SQL,课程管理员数据介绍过,那如果不用这个本数据,这里MySQL 的作用主要是什么?就是提供 HIVE ,就说还有还有 YARN 来使用存储这些相关的一些信息的。那我这里做个报错默认的数据库接口是3306,我写的3300,然后保存一下。保存完成之后,我将这个 HIVE MetaStore 的服务来重新启动一下。看一下错。 EMR 直接停止中,这个健康状态,因为是我们集群上监控组件的服务的有时间监控的,所以显示的并不是那么及时,所有的组件状态已经停止,我尝试把它启动一下。那在这里操作历史中就可以到我所有的组件包括配置的操作.

图片1.png

还没启动完我们来看一下他的日志,我可以从这里直接拖一下日志来进行看一下。可以看到时间应该是刚刚启动的,20:17启动的,这时候就是 MetaStore 其中的一个异常。我看一下 Caused by 通过什么原因导致的?可以看到这个报错是数据库连接的报错,因为我刚才修改了它端口,所以 HIVE MetaStore 启动的时候,连接这个本地 My SQL 的时候连接不上会导致报错。那这里是整个组件就是 HIVE Meta对于 HIVE MetaStore 来说其中异常排查的过程,对于其他的组件其实大概也是这样过程组件我发现异常之后,比如说其中的异常对应的日志下看一下具体的报错是什么,进行进一步的分析。在这里报错就可以听到 jdbc 连接的时候连接失败,也可以看到我们管控台发现 HIVE MetaStore 的一个异常我可以把它恢复过来另外在我们的日志管理中,我去看 HIVE 的日志也是可以看到的,过一段时间可以给他演示一下这个是看到 HIVE 日志,我们可以过一下 Caused by 。这里可以看到跟我们的组件服务节点组件服务的日志是一致的

图片1.png

连接数据库的异常这个排查的过程,其实都代表了我们组件服务异常的时候它的流程对于相对于自建 HADOOP 它也是有自己的日志的,包括你用命令起也可以实时的看到它的或者启动前台或者启动后台,都可以看到它的实时日志的这里和这两个 HADOOP 其实就是流程上是大致类似的。但是对于我们使用 HADOOP 的一个应用程序,其实我们要在刚才的研究之前,要把这些工作就做一个分析,这样的话就是找到具体的错误日志或者错误点之后,才能根据这个错误来判断到底是什么原因导致的。另外我们 EMR 也是提供了各个产品的一些空间的一个A&Q 包括异常的诊断等等,可以上 EMR 的官网来实时的匹配一下到底是有没有调优或者调参的一些手段。以上就是组件排查的过程或者是最佳的实践。
这里我也是举了几个其他组件的一些异常排查,比如这个 zk的异

图片1.png

zk主要是使用选取的像我们在可用集群的情况下,作为result managee,或者 Name Node 同步选取信息都会遇到,可以结合这个日志来看一下就是 zk将它的本地磁盘的目录写满了,也会导致zk的启动失败,这个过程其实也是一样的,就是我们启动失败之后去对应的zk的目录去找一下,或者是ssh找一下具体影响或者可以启动的报错,然后根据这个报错来进行下一步的操作

那这里 YARN 也是提供了一个排查方法,这里是resourcemanager的一个异常

图片1.png

那我通过日志具体的拿到具体的resourcemanager的日志去看,就是发现这个端口被可能被其他的应用占用了,导致了这个resourcemanager其中的一个异常,这个端口可能是一个无关紧要进程,我就把它杀掉,然后把这个resourcemanager重新拉起来。

那以上就是组织要排查的一个异常,所以对于我们运维的同学来看,我们只需要哪些功能?首先第一点来说,第一点就是我要对于整个集群所有使用组件有一个了解,第二点就是我可以对于这些关心的组件配置的告警。第三点如果说组件出现异常,我通过这个告警来快速的定位,位到报错就是刚才的流程,可以通过组件的异常进入抓取具体组件服务的日志,比如说这个resourcemanager,或者通过sslresourcemanager的报错是什么,或者一些开源的方式方法快速的修复进行服务。组件运行的异常量,这是总结了一个最佳的排查方案。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
运维 Prometheus 监控
OceanBase 的运维与监控最佳实践
【8月更文第31天】随着分布式数据库解决方案的需求日益增长,OceanBase 作为一种高性能的分布式数据库系统,在众多场景下得到了广泛应用。为了确保 OceanBase 集群的稳定运行,合理的运维与监控是必不可少的。本文将探讨 OceanBase 的日常运维管理与监控策略,并提供相应的代码示例。
186 2
|
5月前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之如何访问周期任务运维
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
44 0
|
SQL 消息中间件 运维
联通 Flink 实时计算平台化运维实践
联通数科实时计算团队负责人、Apache StreamPark Committer 穆纯进在 Flink Forward Asia 2022 平台建设专场的分享
5362 6
联通 Flink 实时计算平台化运维实践
|
SQL 弹性计算 资源调度
视频-《 EMR 集群运维与排障》|学习笔记(二)
快速学习视频-《 EMR 集群运维与排障》
149 0
视频-《 EMR 集群运维与排障》|学习笔记(二)
|
SQL 存储 弹性计算
视频-《 EMR 集群运维与排障》|学习笔记(一)
快速学习视频-《 EMR 集群运维与排障》
174 0
视频-《 EMR 集群运维与排障》|学习笔记(一)
|
弹性计算 资源调度 运维
视频-《 EMR 集群运维与排障》|学习笔记(四)
快速学习视频-《 EMR 集群运维与排障》
201 0
视频-《 EMR 集群运维与排障》|学习笔记(四)
|
运维 Kubernetes 容器
《腾讯云多Kubernetes集群高可用运维实践》电子版地址
腾讯云多Kubernetes集群高可用运维实践
268 0
《腾讯云多Kubernetes集群高可用运维实践》电子版地址
|
运维 监控 DataWorks
DataWorks 运维中心介绍及实践 | 学习笔记
快速学习 DataWorks 运维中心介绍及实践,介绍了 DataWorks 运维中心介绍及实践系统机制, 以及在实际应用过程中如何使用。
DataWorks 运维中心介绍及实践 | 学习笔记
|
人工智能 运维 分布式计算
5.DataWorks 运维中心介绍及实践|学习笔记
快速学习5.DataWorks 运维中心介绍及实践
5.DataWorks 运维中心介绍及实践|学习笔记
|
SQL 存储 弹性计算
EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器
E-MapReduce 推出面向开源大数据集群的智能运维诊断系统 E-MapReduce Doctor,有效提升大数据集群运维效率,辅助 EMR 用户完善集群监控体系。
3529 0
EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器