Hive增加打印日志定位问题

Hive提交查询到container去执行,需要在这个过程中的打印日志定位问题,container日志并不是在hive本地的日志,例如Hive表查询使用了哪个反序列化类来生成查询结果数据,使用的是表的反序列化类还是分区的反序列化类,需要打印日志来debug一下。

 

1.win10应用商店安装Ubuntu 18.04 LTS,系统初始化时创建用户hadoop,创建/home/hadoop/project目录

mkdir /home/hadoop/project

 

2.在/home/hadoop/project/目录下执行git拉代码命令,使用默认的matser分支

git clone https://git.yy.com/bigdata/dp/hiido-hive-2.1.0

 

3.编译打包hive工程前,先在Ubuntu本地maven仓库安装hadoop-sp.jar包

mvn -e install:install-file -Dfile='/home/hadoop/project/hiido-hive-2.1.0/ql/localjar/hadoop-sp.jar' -DgroupId='com.hiido' -DartifactId=hadoop-sp -Dversion='1.0.0' -Dpackaging=jar

 

4.在win10的ide编辑hive代码,增加打印日志语句,例如在MapOperator.java增加日志打印语句,看看使用了哪个反序列化类

LOG.info("wulidong:opCtx.deserializer:"+opCtx.deserializer);

 

5.用修改后的类文件到Ubuntu的hive代码路径替换对应的类

rm -f /home/hadoop/project/hiido-hive-2.1.0/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
cp /mnt/d/project/hiido/hiido-hive-2.1.0/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java /home/hadoop/project/hiido-hive-2.1.0/ql/src/java/org/apache/hadoop/hive/ql/exec/

 

6.在/home/hadoop/project/hiido-hive-2.1.0/目录下使用maven命令编译mvn -e install -DskipTests,编译后生成的hive-exec-2.1.0.jar包在

C:\Users\YY\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\hadoop\project\hiido-hive-2.1.0\ql\target

 

7.上传hive-exec-2.1.0.jar到HCAT测试环境10.21.117.136的/data/hcat.server-3.0.0/lib/,先备份一下当前的hive-exec-2.1.0.jar

mv /data/hcat.server-3.0.0/lib/hive-exec-2.1.0.jar /data/hcat.server-3.0.0/lib/hive-exec-2.1.0.jar.bak20200622

 

8.在10.21.117.136的/data/hcat.server-3.0.0/目录下使用hiidoagent用户重启HCAT

nohup ./bin/start-server.sh hiidoagent.xml &

 

9.win10本地thrift客户端发送测试请求到10.21.117.136的26122端口

String sql = "set hiido.scheduleid=6000083864;set hive.execution.engine=mr;USE freshman;select * from freshman.dremel_table_access_time_log5 where dt='2020-06-06' limit 5;";

 

10.请求被处理并生成任务ID:job_1591356806140_1328237,执行过程中发生报错

Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

 

11.访问history日志WEB页面,跟踪任务mapper的报错日志

http://hopc.hiido.net:19888/jobhistory/attempts/job_1591356806140_1328237/m/FAILED

 

12.如果上面url报java.io.FileNotFoundException,说明这个报错级别稍高没有生成历史日志,打开yarn日志WEB页面

http://yarnrm2:8088/cluster/app/application_1591356806140_1328237/

 

13.点击logs进入container日志页面,再点击syslog : Total file length is 56461 bytes.

http://hadoop-10-21-112-33:8042/node/containerlogs/container_1591356806140_1328237_01_000002/hiidoagent/syslog/?start=0

 

14.分析日志定位问题

Hive增加打印日志定位问题