微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数据平台任务监控

写在前面

监控的概念

监控是收集和分析数据以确定业务应用程序的性能,运行状况和可用性及其依赖的资源的行为。 有效的监控策略可帮助用户了解应用程序组件的详细进程,还可以通过主动通知关键问题来避免错误发生,以便在问题发生之前解决问题。

宏观上看,监控的内容可以总结为下图:

这里写图片描述

Ref: https://www.digitalocean.com/community/tutorials/an-introduction-to-metrics-monitoring-and-alerting

大数据平台的开源监控工具

大数据平台的大部分通用的监控内容可以通过以下方式获取

  1. Yarn、Cloudera Manager 等集成组件的监控页面

    这里写图片描述

  2. 开源组件的REST API

  3. @H_502_36@
    • MapReduce REST APIs: MapReduce Application Master REST API’sMapReduce History Server REST API’s
    • YARN REST APIs:ResourceManager REST API’sNodeManager REST API’s
    • Spark REST APIs
      Spark REST APIs踩坑说明Spark REST APIs文档中有如下说明,For the history server, they would typically be accessible at http://<server-url>:18080/api/v1, and for a running application, at http://localhost:4040/api/v1.意为历史任务的REST API在Spark History Server上http://server-url:18080/api/v1 接入, 正在运行的任务的REST API在Spark Drive 节点上http://localhost:4040/api/v1 接入。 实际操作过程中有以下几点需要注意:
      a.历史任务监控端口: CDH会对默认的端口进行修改,其中就包括Spark History Server端口,由18080改为18088,需要注意。
      b. 正在运行的任务监控地址和端口:用Yarn提交Spark任务时,Spark Driver是由Yarn决定的,所以要拿到正在运行的任务的REST API需要先从Yarn的日志中找到Driver节点,而且4040端口也会被Yarn配置为随机端口,需要注意。
      通过Yarn的日志拿到了地址和端口组成链接host:port/api/v1/applications,但是通过浏览器查看该链接会发生跳转跳转后就无法在跳转链接中输入REST信息,反复修改比较麻烦,可以使用Postman等工具进行监控。

    开源监控工具的局限

    1. 权限管理困难。
      不同业务部门对不同的业务内容进行监控、进行不同级别的监控是大型平台系统监控的需求,依靠开源的组件难以实现。虽然一些第三方提供了一些权限管理的产品,但其力度难以满足大多数大型企业的要求。使用开源产品的商业发行版,也是一种办法,不过始终是不如企业原生系统在这方面的支持。(参考企业数据分析工作的任务、工具及挑战
    2. 具体业务的状态监控,需要对开源监控工具的功能进行补充。
      下图是我列举的一些具体的监控内容。以其中交互式进度获取为例,Hive执行查询任务时,如果查询引擎是MapReduce且查询任务比较复杂时,一个查询任务会被划分成多个application(具体划分方法与hive任务划分stage有关,可以用Hive Explain命令查看),此时查看单个application的进度是没有意义的,因为用户希望获取的是整个查询任务的进度。因此需要在开源工具的基础上做二次开发。

      这里写图片描述

    3. @H_502_36@

      开发监控组件例子

      考虑到上述局限,个性化的监控组件是大数据平台常见的需求,开发监控组件是大数据平台软件开发的一个重要环节。不同的应用场景有不同的需求,需要对监控组件的开发思路也各有不同。这里提供些个获取REST API内容并消费的经典样例(Spring REST Client with RestTemplate: Consume RESTful Web Service Example for XML and JSONHow to read XML file in Java – (DOM Parser)),读者可根据需求对REST API上的内容进行组装或二次开发。

      版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐