zoukankan      html  css  js  c++  java
  • HIVE-执行distribute by时报错的解决过程---之如何分析hive执行的错误并解决

    在执行一条HIVE语句的时候报了以下错误,重新检查了所有步骤,重启所有服务,发现没有问题。 但发现一个有趣的事情

    1,select sno,sname,sex,sage,sdept from student可以正常执行

    2,sno,sname,sex,sage,sdept from student distribute by(sname) 不可以执行报错

    在/tmp/用户名下查看系统hive.log,发现信息并不多。网上有其他方法可以查看更多日志,但太麻烦,速度很慢所以就没尝试。

    select sno,sname,sex,sage,sdept from student distribute by(sname) 
        > ;
    Query ID = root_20171108131253_43a3d026-0e04-44f2-8312-c92d1c0b6125
    Total jobs = 1
    Launching Job 1 out of 1
    Number of reduce tasks not specified. Defaulting to jobconf value of: 2
    In order to change the average load for a reducer (in bytes):
      set hive.exec.reducers.bytes.per.reducer=<number>
    In order to limit the maximum number of reducers:
      set hive.exec.reducers.max=<number>
    In order to set a constant number of reducers:
      set mapreduce.job.reduces=<number>
    Starting Job = job_1510116443491_0001, Tracking URL = http://server71:8088/proxy/application_1510116443491_0001/
    Kill Command = /usr/local/hadoop/bin/hadoop job  -kill job_1510116443491_0001
    Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 0
    2017-11-08 13:13:34,560 Stage-1 map = 0%,  reduce = 0%
    Ended Job = job_1510116443491_0001 with errors
    Error during job, obtaining debugging information...
    FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
    MapReduce Jobs Launched: 
    Stage-Stage-1:  HDFS Read: 0 HDFS Write: 0 FAIL

     原因分析

    上面1,2的区别表明了一件事情,单纯的select语句是不通过mapreduce的,加上distribute by后调用了yarn程序。打开8088端口的yarn端口

    可怕的是没有错误信息,非常高兴看到了下面错误,表明了两件事。

    1,刚才的sql用到了yarn,2,在使用yarn的时候无法启动container报错。这里需要了解yarn的基本知识。

    解决方法:百度后得知这个是因为namenode和datanode时间不一致导致。简单说就是几台虚拟机的时间不一致。

    用date查看四台机器,果然不一致。可能是因为某台曾经还原过快照,所以时间不一致。

    org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container.

    解决过程

    虽然知道了原因,但还不是很顺利,这也是很多人遇到的问题,我们的问题和其他人虽然是一个问题。但因为环境不同的原因,同样的方法并不好用。

    首先,我尝试了ntpdate pool.ntp.org,但这个命令无效,报了name server问题,后来明白我电脑不联网,而刚才命令是同步网络时间的。所以我需要找到直接修改时间的方法

    最后成功修改我的机器的时间的命令是下面的

    date -s 15:55:33 (15点55分33秒) 时间可以自己修改

    修改时间的其他方法,大家可以都尝试一下,问题关键在于修改了机器时间,把问题简化就是解决问题的基本步骤。

    http://www.xitongzhijia.net/xtjc/20150219/38844.html

    以上,希望对大家找到解决问题的思路有所帮助,问题有时候会让我们崩溃和绝望。但总是有解决办法的,比如终极方法:重装系统

  • 相关阅读:
    常用语句
    html引入ECharts的两种方式
    最新版Navicate破解激活
    买路由器篇
    关于java8(Stream)的一些用法
    Mybatis联合查询记录,左连接参数操作
    海淘转运事宜记录
    mysql where语句多条件查询是and和or联合使用bug
    关于mysql中GROUP_CONCAT函数的使用
    关于MySQL存入的时间和取出时间不一致的解决
  • 原文地址:https://www.cnblogs.com/kouryoushine/p/7805484.html
Copyright © 2011-2022 走看看