(原文地址:http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/troubleshooting/Troubleshooting.html
        本章描写叙述怎样解决HAWQ系统中常见的错误和问题。

一、查询性能问题

        问题:查询慢。
        原因:一个查询执行缓慢可能有多个原因。

比如,数据分布的位置。虚拟段的数量。查询使用的主机数量等都可能影响查询性能。

下面过程描写叙述怎样排查查询性能问题。

        一个查询不像预期执行的那么快。

下面是怎样调查慢的可能原因。

  1. 检查集群健康状况:(1)是否有DataNode、segment或其它节点宕机?(2)是否有非常多失效磁盘?
  2. 检查表统计。查询中的表是否已经分析过?
  3. 检查查询计划并执行EXPLAIN ANALYZE确定瓶颈。

    有时。对某些操作没有足够的内存。比方Hash Join。或使用了溢出文件。假设一个操作不能全部在分配给它的内存中执行,它将数据缓存到磁盘上的溢出文件里。相对于不使用溢出文件。查询会慢得多。

  4. 使用EXPLAIN ANALYZE检查数据本地化统计。或者检查日志文件。每一个查询的数据本地化情况也可在HAWQ日志中找到。

    统计信息參见Data Locality Statistics

  5. 检查资源队列状态。

    你能够查询pg_resqueue_status视图。检查目标队列是否已经为查询分派了资源,或者目标队列缺少资源。

    參见Checking Existing Resource Queues

  6. 分析资源管理器状态的转储,查看很多其它资源队列状态。參见Analyzing Resource Manager Status

二、拒绝查询资源请求

        问题:HAWQ资源管理器拒绝了查询的资源分配请求。

        原因:出现下面情况时,HAWQ资源管理器拒绝查询的资源分配请求:

  • 太多物理段不可用。
    
    

    HAWQ资源管理器期望$GPHOME/etc/slaves文件里列出的物理段均已注冊,并能够从gp_segment_configuration表查询到。假设资源管理器确定未注冊的或不可用的HAWQ物理段数量大于hawq_rm_rejectrequest_nseg_limit。那么资源管理器直接拒绝查询的资源请求。拒绝查询的目的是要保证查询执行在完整的集群中。这让查询性能问题的诊断更easy。hawq_rm_rejectrequest_nseg_limit的缺省值为0.25。就是说假设发现不可用或未注冊的数量大于0.25 * $GPHOME/etc/slaves文件里所列的段数。资源管理器拒绝查询的资源请求。

    比如,假设slaves文件里有15个段,资源管理器计算不可用的段不能超过4(0.25 * 15)。大多数情况下,你不须要改动该此缺省值。

  • 为查询分配虚拟段的物理段中有未使用的。
    
    

    超过了hawq_rm_tolerate_nseg_limit中定义的限制。

  • 物理段之间分派的虚拟段太不均匀。

    
    

    为保证最佳查询性能,HAWQ资源管理器试图尽可能均匀地在物理段间为查询分配虚拟段。

    可是可能存在分配偏差。当偏差大于hawq_rm_nvseg_variance_amon_seg_limit设置的值,HAWQ拒绝查询的资源分配请求。比如。一个查询引起2个物理段分派9个虚拟段。假设一个段分配7个虚拟段,还有一个分配2个虚拟段。段间偏差是5。

    假设hawq_rm_nvseg_variance_amon_seg_limit的设置为缺省值1,那么为此查询的资源分配被拒绝。并将在以后分配。但假设一个物理段分配5个虚拟段,还有一个物理段是4个,则接收此资源分配。

        解决方式:检查集群中节点的状态。

假设有必要。重新启动或新增节点。

改动hawq_rm_nvseg_variance_amon_seg_limit(虽然这会影响查询性能)。

三、VMEM使用超高引起的查询取消

        问题:使用太多虚拟内存的特定查询被取消。实例错误消息:

ERROR: Canceling query because of high VMEM usage. Used: 1748MB, available 480MB, red zone: 9216MB (runaway_cleaner.c:135) (seg74 bcn-w3:5532 pid=33619) (dispatcher.c:1681)

        原因:当一个段上虚拟内存的使用超过了由runaway_detector_activation_percent配置的虚拟内存百分比阈值,就会发生此错误。

        假设一个物理段使用的虚拟内存总量超过计算阈值。HAWQ開始基于内存使用终止查询,从消耗最大内存量的查询開始。直到虚拟内存使用低于指定的百分比才停止对查询的终止。

        解决方式:暂时加大hawq_re_memory_overcommit_max的值,同意特性查询无误执行。

        检查pg_log文件,得到会话和QE进程使用内存的很多其它细节。HAWQ记录查询终止信息。如内存分配历史、上下文信息,以及查询计划操作符的内存使用信息。这些信息被发送到master和segment实例的日志文件里。

四、segment没在gp_segment_configuration中出现

        问题:段启动成功,但没有出如今gp_segment_configuration表中。
        原因:你的段可能分配了同样的IP地址。

        有些软件和项目具有使用自己主动配置IP地址的虚拟网卡。

这可能引起HAWQ的段获得同样的IP地址。资源管理器的容错服务组件只能识别具有同样IP地址的段中的一个。

        解决方式:启动HAWQ集群前,改动网络配置,禁止IP地址同样。

五、调查标记为Down的segment

        问题:HAWQ容错服务(fault tolerance service,FTS)在gp_segment_configuration文件夹表中标记一个段为down。
        原因:当段碰到严重错误时,FTS标记该段为down。比如,由于硬件问题导致段上的暂时文件夹失效。其它原因可能包含网络或通信错误、资源管理器错误。或简单的心跳超时等。段通过心跳报告向主节点报告一个严重故障。
        解决方式:依赖于不同的原因,须要存取不同的恢复操作。

有些情况下。段不过被暂时标记为down,直到心跳周期再次检查段的状态。为了调查段被标记为down的原因,从gp_configuration_history文件夹表查找相应的原因。容错服务将段标记为down的各种原因。參见Viewing the Current Status of a Segment的描写叙述。

六、处理segment资源碎片

        不同HAWQ资源队列的虚拟段资源限额能够不同,由此可能导致资源碎片。比如,一个HAWQ集群有4GB内存可用于当前排队的查询。可是资源队列被配置为在4个不同的段上分裂成四个512MB的内存块。

它不可能分配两个1GB内存的虚拟段。

        在独立资源模式中,全部段资源为HAWQ所独占。

当段的配额不是虚拟段资源限额的倍数时。就可能出现资源碎片。

比如。一个段有15GB的内存配额。可是虚拟段资源限额设置成2GB。一个段最多能够消耗14GB内存。

因此,你应该配置段的资源配额为全部虚拟段资源限额的倍数。

        YARN模式里,资源从YARN资源管理器分配。HAWQ资源管理器通过一个vcore获得一个YARN容器。比如。假设YARN报告一个段为YARN应用配置了64GB内存和16个vcore,HAWQ通过4GB内存和1个vcore请求YARN容器。

照此方法,HAWQ资源管理器按需获取YARN容器。假设YARN容器的配额不是虚拟段资源限额的倍数。可能发生资源碎片。比如,YARN容器的资源配额为3GB内存和1个vcore,每一个段能够有1个或3个YARN容器用于HAWQ执行查询。

在这样的情况下,假设虚拟段的资源限额为2GB内存。那么HAWQ总有1GB内存不能利用。

因此。推荐细致配置YARN模式的资源配额,使YARN容器资源限额是全部虚拟段资源限额的倍数。

另外,确认你的CPU、内存比率是yarn.scheduler.minimum-allocation-mb配置的倍数。很多其它信息參见Setting HAWQ Segment Resource Capacity in YARN

        假设出现资源碎片。排队的请求不被处理,直到一些执行的查询返还资源,或者全局资源管理器提供了很多其它的资源。假设你碰到资源碎片,你应该检查资源队列设置的配额。找到为不论什么错误的配置。比如,可能的一个错误是。全局资源容器的内存核数比率,不是虚拟段资源限额的倍数。

HAWQ技术解析(十八) —— 问题排查的更多相关文章

  1. HAWQ技术解析(八) —— 大表分区

    一.HAWQ中的分区表        与大多数关系数据库一样,HAWQ也支持分区表.这里所说的分区表是指HAWQ的内部分区表,外部分区表在后面"外部数据"篇讨论. 在数据仓库应用中 ...

  2. HAWQ技术解析(四) —— 启动停止

            前面已经完毕了HAWQ的安装部署,也了解了HAWQ的系统架构与主要组件,以下開始使用它. HAWQ作为Hadoop上的一个服务提供给用户,与其他全部服务一样.最主要的操作就是启动.停止 ...

  3. HAWQ取代传统数仓实践(十八)——层次维度

    一.层次维度简介 大多数维度都具有一个或多个层次.例如,示例数据仓库中的日期维度就有一个四级层次:年.季度.月和日.这些级别用date_dim表里的列表示.日期维度是一个单路径层次,因为除了年-季度- ...

  4. 会员卡管理系统技术解析(十八)Timer定时监听

    会员卡管理系统技术解析(十八)Timer定时监听 在web应用中,有时候客户须要一些定时程序.不须要客户自己去操作.而是由应用程序自行触发(代理)运行某些操作. 这个时候监听与定时器的配合使用就基本能 ...

  5. WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]

    原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过ServiceMetadataBehavior实现了基于WS-ME ...

  6. WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化

    原文:WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化 [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制 ...

  7. Alink漫谈(十八) :源码解析 之 多列字符串编码MultiStringIndexer

    Alink漫谈(十八) :源码解析 之 多列字符串编码MultiStringIndexer 目录 Alink漫谈(十八) :源码解析 之 多列字符串编码MultiStringIndexer 0x00 ...

  8. Python之路【第十八篇】:Web框架们

    Python之路[第十八篇]:Web框架们   Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...

  9. ComicEnhancerPro 系列教程十八:JPG文件长度与质量

    作者:马健邮箱:stronghorse_mj@hotmail.com 主页:http://www.comicer.com/stronghorse/ 发布:2017.07.23 教程十八:JPG文件长度 ...

随机推荐

  1. picker鼠标上下拖动选择内容

    上次写这个的时候的博客:http://hiuman.iteye.com/blog/2324929 上次是网上搜的,这次是自己写的. 无论多少个input都可以点击-但是只有一种内容(弹出的内容),可以 ...

  2. python Nosql-redis 连接、管道

    非关系型数据库和关系型数据库的差别: 非关系型数据库的优势: 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高. 可扩展性同样也是因为基于 ...

  3. django自带的orm增删改

    # 转载请留言联系 模型管理器 模型管理器:objects属性 每个模型类默认都有一个叫 objects 的类属性,它由django自动生成 我们把 objects 称为 模型管理器,其类型为: dj ...

  4. Selenium2+python自动化60-异常后截图(screenshot)【转载】

    前言 在执行用例过程中由于是无人值守的,用例运行报错的时候,我们希望能对当前屏幕截图,留下证据. 在写用例的时候,最后一步是断言,可以把截图的动作放在断言这里,那么如何在断言失败后截图呢? 一.截图方 ...

  5. 正则表达式、re、常用模块

    阅读目录 正则表达式 字符 量词 . ^ $ * + ? { } 字符集[][^] 分组 ()与 或 |[^] 转义符 \ 贪婪匹配 re 总结 正则 re 常用模块 namedtuple deque ...

  6. CentOS 7 安装PHP7+Nginx+Mysql5.7开发环境

    安装PHP&PHP-FPM 首先更新一下CentOS7系统,对系统软件做一下升级,这里不升级内核. //使用root权限,注意这里使用upgrade,而不是update(它会升级内核,这里我们 ...

  7. [bzoj3218]a + b Problem 网络流+主席树优化建图

    3218: a + b Problem Time Limit: 20 Sec  Memory Limit: 40 MBSubmit: 2229  Solved: 836[Submit][Status] ...

  8. ASP.NET中怎样将页面设为首页,加入收藏

    1.文字js脚本事件:<span onClick="var strHref=window.location.href;this.style.behavior=’url(#default ...

  9. HDU 2553 N皇后问题【棋盘型DFS】

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  10. (转) C#解惑:HashSet<T>类

    HashSet<T>是一个相对“冷门”的类型,平时在项目中用得不多,但是在特定的业务中可以大用. 先来了解下HashSet<T>类,主要被设计用来存储集合,做高性能集运算,例如 ...