TDW是基于Hadoop生态圈研发的大数据处理平台,MapReduce计算引擎在TDW平台中承担了所有的离线数据计算,是TDW最重要的底层支撑平台之一。在TDW 平台中,除了MR程序会生成MapReduce作业外,被广泛应用的Hive、tPig等计算框架最终也会把查询语言翻译成MapReduce作业来进行计算,因此对MapReduce作业运行信息进行收集并提供给开发人员查询分析,是他们定位业务问题的最重要手段。不仅仅如此,基于收集的MapReduce作业运行信息,还能建立众多的监控指标来对整个MapReduce计算引擎的健康度进行监控。因此,收集MapReduce作业的运行信息对整个Hadoop平台的使用和稳定运行都是十分必要的。

HadoopDoctor介绍

HadoopDoctor,是TDW专门收集MapReduce作业运行信息的系统。HadoopDoctor不需要对集群的Hadoop代码进行修改,是TDW的外围系统,独立运行,与Hadoop自带的HistoryServer服务相比,HadoopDoctor支持作业信息的多维度查询和支持统计分析。

TDW的MapReduce计算引擎经历了MapReduce V1 -> Corona -> MapReduce V2三个阶段。从Corona开始,MapReduce架构便发生了巨大的变化,JobTracker不再是单点,新架构把集群资源调度和作业管理分开,实现了JobTracker的分散化。同样,HadoopDoctor的实现架构也经历了相应的变化。

HadoopDoctor的基本架构主要包括作业信息采集与存储、数据冷备、数据使用:

作业信息采集与存储

1、MapReduce V1架构下的HadoopDoctor

MapReduce V1是Master-Slaves架构,主节点JobTracker负责集群资源调度和作业运行管理,每道MR作业执行完成后会生成JobConf文件和JobHisotry文件在JobTracker的本地磁盘上,MapReduce V1架构下的HadoopDoctor作业信息采集是在JobTracker部署一个doctorparser程序,定时对各个作业的JobConf和JobHistory文件进行解析,将解析后的数据写到tPG数据库(tPG作为腾讯商业数据库的替代方案,基于开源软件PostgreSQL进行扩展,拥有与商业数据库类似的特性)。

2、Corona/MapReduce V2架构下的HadoopDoctor

从Corona架构开始,MapReduce便实现了JobTracker分散化功能,集群资源调度由ClusterManager(简称CM)实现,JobTracker作为进程运行在子节点CoronaTaskTracker(简称CTT)上面,只负责监控一个MR作业的运行管理。MapReduce V2也是实现了JobTracker分散化功能,集群的资源调度由ResourceManager(简称RM)实现,JobTracker抽象成ApplicaitonMaster(简称AM)作为一个Container运行在子节点NodeManager(简称NM)上面,只负责监控一个MR作业的运行管理。Corona/Mapreduce V2的MR作业同样会产生JobConf和JobHistory文件,但由于JobTracker分散化后,这两个文件也分布到各个子节点上面,因此作业信息采集需要分布到各个子节点上面进行。

新架构下的HadoopDoctor引入DoctorMaster新角色,其职责是从CM/RM获取子节点列表,定时、分批次地拉起子节点的doctorparser程序对作业的JobConf和JobHistory进行解析写到tPG,有效控制tPG的写并发量。

数据冷备

目前TDW每天运行的MR作业数超过1百万,Map Task超过7千万,Reduce Task超过8百万,如此庞大的数据会使得tPG服务器的存储压力过大,HadoopDoctor的历史数据必须要实现冷备功能。而TDW本身是数据仓库,因此用它来做HadoopDoctor的历史数据存储是最合适不过了。把历史数据从tPG导入到TDW的Hive表,不仅仅实现了数据冷备功能,还可以使用TDW-IDE编写SQL语句对数据进行统计分析。

数据使用

  • 提供前台页面供用户查询作业的详细信息。
  • 建立指标检测MapReduce计算引擎的健康度。

参考链接:http://mta.qq.com/mta/bigdata/?p=633

HadoopDoctor:来自腾讯数据仓库TDW的MR诊断系统的更多相关文章

  1. 大规模Hadoop集群在腾讯数据仓库TDW的实践

    随着业务的快速增长,TDW的节点数也在增加,对单个大规模Hadoop集群的需求也越来越强烈.TDW需要做单个大规模集群,主要是从数据共享.计算资源共享.减轻运营负担和成本等三个方面考虑. 数据共享.T ...

  2. Hermes:来自腾讯的实时检索分析平台

    实时检索分析平台(Hermes)是腾讯数据平台部为大数据分析业务提供一套实时的.多维的.交互式的查询.统计.分析系统,为各个产品在大数据的统计分析方面提供完整的解决方案,让万级维度.千亿级数据下的秒级 ...

  3. 多个div并排显示的居中问题——来自腾讯的一道面试题

    前两天曲面了一下腾讯,被鄙视了... 自己太水了,且面试官对我可能也有点不爽,说什么还没叫我我就去了,可是尼玛写的面试时间是3点40,我特码进去的时候都3点50了,我还以为晚了呢,他妈的. 实现几个d ...

  4. 图片来自腾讯,未经授权不可引用,js解决方法

    问题记录,解决后来更新 js伪造Referer, 外链图片让用户浏览时,不发送 referer 字段给原网站的方法 A 网站引用了 B 站的 图片 <img src="b_url&qu ...

  5. 学生问的一道javascript面试题[来自腾讯]

    function Parent() { this.a = 1; this.b = [1, 2, this.a]; this.c = { demo: 5 }; this.show = function ...

  6. 大数据计算新贵Spark在腾讯雅虎优酷成功应用解析

    http://www.csdn.net/article/2014-06-05/2820089 摘要:MapReduce在实时查询和迭代计算上仍有较大的不足,目前,Spark由于其可伸缩.基于内存计算等 ...

  7. 腾讯云数据库团队:MySQL数据库的高可用性分析

    作者介绍:易固武,腾讯高级工程师,参与腾讯账号安全建设,腾讯数据仓库(TDW)优化改造,腾讯云数据库等项目,对大规模分布式存储和计算系统有浓厚的兴趣和经历 MySQL数据库是目前开源应用最大的关系型数 ...

  8. 【腾讯Bugly干货分享】OCS——史上最疯狂的iOS动态化方案

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/zctwM2Wf8c6_sxT_0yZvXg 导语 在 ...

  9. 【腾讯Bugly干货分享】微信mars 的高性能日志模块 xlog

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581c2c46bef1702a2db3ae53 Dev Club 是一个交流移动 ...

随机推荐

  1. Unity3D ShaderLab 各向异性高光

    Unity3D ShaderLab 各向异性高光 各向异性时一种模拟物体表面沟槽方向性的高光反射类型,它会修改或延伸垂直方向上的高光.当我们想模拟金属拉丝高光的时候,它非常适合.下面就一步一步实现. ...

  2. 【转】编写更好的CSS代码

    原文转自:http://blog.jobbole.com/55067/ 编写好的CSS代码,有助提升页面的渲染速度.本质上,引擎需要解析的CSS规则越少,性能越好.MDN上将CSS选择符归类成四个主要 ...

  3. NSNumber 、 NSValue 、 日期处理 、 集合类 、 NSArray(一)

    1 基本数据类型的封装 1.1 问题 我们所学的所有基本数据类型,如int.float.double.char等,都不是对象,不能向它们发送消息.然而,在Foundation中的许多类,如NSArra ...

  4. MariaDB exists 学习

    MariaDB exists 学习 exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就 ...

  5. JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助

    上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...

  6. CUDA 程序中的同步

    前言 在并发,多线程环境下,同步是一个很重要的环节.同步即是指进程/线程之间的执行顺序约定. 本文将介绍如何通过共享内存机制实现块内多线程之间的同步. 至于块之间的同步,需要使用到 global me ...

  7. vmware上的Linux获取uuid

    在挂载asm硬盘时需要硬盘的UUID 虚拟机配置中需要增加对UUID的支持. 在配置文件vmx文件中增加如下内容 disk.locking="FALSE" disk.EnableU ...

  8. Sqlserver 笔记 持续更新

    1.sp_spaceused : sp_spaceused table_name ----------------------------------------------------------- ...

  9. 67. Add Binary

    public class Solution { public String addBinary(String a, String b) { char[] aa=a.toCharArray(); cha ...

  10. Java 前端加密传输后端解密以及验证码功能

    目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...