zoukankan      html  css  js  c++  java
  • hive 由于distcp导致执行sql慢

    HDP version: 3.x

    1、hive执行sql慢

    • 执行sql
      hive通过Tez引擎执行如下的sql语句:
    insert overwrite select ....
    

    整个执行过程消耗十分钟左右,平时任务2-3分钟可以完成,可以明显看到,任务调度出现问题了。

    • 分析
      上述的sql语句对应两个mapreduce,分别是查询数据的和插入数据的mapreduce,执行插入数据是使用的distcp的方式。
      通过对日志的分析:

    查询数据(select) 消耗4分钟左右。
    插入数据(distcp) 消耗6分钟,平时这个阶段一分钟左右就能完成,但是这次居然多消耗了五分钟。
    distcp其实在一分钟之内,map已经运行到100%,但是执行的容器或者任务居然一直卡了五分钟之久,如果是一个任务可能还是偶发性的,但是大量任务都出现这个问题,那说明集群应该是异常了。

    • 查看distcp任务对应的mapreduce日志信息:

    满屏的异步调度waitting。
    接着往下看应用程序日志

    可以看到sockettimeout 异常,fa发生这个异常的线程是ATS事件。

    • 解决
      发生这种情况是因为来自ATSv2的嵌入式HBASE崩溃。
      解决这个问题的方法需要重置ATsv2内嵌HBASE数据库(当然也可能是外部的hbase集群)
      解决方式1:
      我这边的问题是单节点的hbase,regionserver由于内存分配太低,导致内存崩溃,进程退出
      修改hbase-env.sh 增加对应的内存大小,重启服务
      解决方式2:

    停止yarn

    Ambari -> Yarn-Actions -> Stop
    

    删除Zookeeper上的ATSv2 Znode

    rmr /atsv2-hbase-unsecure或rmr /atsv2-hbase-secure(如果是kerberized集群)
    

    删除hbase的数据存储目录

    hdfs dfs -mv /atsv2/hbase/tmp/
    

    启动yarn

    Ambari - > Yarn-Actions- > Start
    

    借鉴:
    | https://www.cnblogs.com/fbiswt/p/12455364.html

  • 相关阅读:
    Python之推导式笔记
    利用ShardingSphere-JDBC实现分库分表--配置中心的实现
    利用ShardingSphere-JDBC实现分库分表
    MGR安装记录
    学习RadonDB源码(三)
    学习RadonDB源码(二)
    学习RadonDB源码(一)
    Spring Cloud学习笔记--Spring Boot初次搭建
    一次单核CPU占用过高问题的处理
    MySQL AutoCommit带来的问题
  • 原文地址:https://www.cnblogs.com/yjt1993/p/13963047.html
Copyright © 2011-2022 走看看