如何获取Hive正在执行或者已结束的的MapReduce作业的SQL语句

时间:2022-05-06
本文章向大家介绍如何获取Hive正在执行或者已结束的的MapReduce作业的SQL语句,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.文档编写目的


当我们提交Hive SQL语句到YARN后,有时如果我们想监控某个SQL的执行情况,需要查看具体SQL语句,如果这个SQL语句比较长,无论是通过YARN的8088界面还是YARN的命令都无法看全这个SQL语句。

YARN的8088界面如下:

查看作业详情也无法看到完整SQL语句

yarn application -list同样无法看全SQL语句,如下:

本文主要介绍三种方式来获取Hive正在执行或者已结束的的MapReduce作业的SQL语句,一种是通过MapReduce API获取执行作业的xml配置文件,另一种是通过Cloudera Manager界面直接查看,第三种是通过Cloudera Manager的API来获取。

  • 测试环境

1.操作系统RedHat7.3

2.CM和CDH版本为5.13.1

3.集群已启用Kerberos

2.通过YARN执行作业的xml配置文件获取


1.使用fayson用户登录hue执行SQL查询

2.通过SQL的ApplicationID获取到作业的配置信息

curl -H "Accept: application/json" -X   
GET http://ip-172-31-16-68.ap-southeast-1.compute.internal:8088/proxy/application_1519613953021_0029/ws/v1/mapreduce/jobs/job_1519613953021_0029/conf > a.xml

(可左右滑动)

3.通过hive.query.string属性过滤查看a.xml文件

通过获取接口获取运行中Hive作业可以查看到Hive的SQL语句,该信息对应到HDFS的/user/$USER/.staging/$JOBID/job.xml文件中。

4.如果作业执行完成将接口改为JobHistory的API接口执行

curl -H "Accept: application/json" -X   
GET http://ip-172-31-16-68.ap-southeast-1.compute.internal:19888/ws/v1/history/mapreduce/jobs/job_1519613953021_0029/conf > b.xml

(可左右滑动)

通过JobHistory的API接口获取Hive历史作业执行的完整SQL语句,该信息对应到HDFS的/user/history/done/2018/02/26/000000/job_1519613953021_0029_conf.xml文件中

3.通过Cloudera Manager来获取


1.进入Yarn的“应用程序”页面

2.在“搜索”中选择“Hive应用程序”

过滤筛选Hive应用程序

3.选择某个Hive作业,点击箭头可以展开查看完整的SQL,并察看查询的基本统计信息

4.通过Cloudera Manager的API接口获取


1.在命令行执行如下命令获取作业详细信息

[root@ip-172-31-16-68 ~]# curl -u admin:admin "http://ip-172-31-16-68.ap-southeast-1.compute.internal:7180/api/v16/clusters/luster/services/yarn/yarnApplications"

(可左右滑动)

通过查看hive_query_string属性查看到我们运行的完整的SQL语句。

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操