Hadoop、hive -> 获取 sql 的列表 运行 针对集群

Hadoop, hive -> get list of sql being run against the cluster

所以我们有一群人正在访问我们的集群,并且希望通过 hive/odbc 监控每个 SQL 语句 运行。工作历史服务器网页将给我 SQL 的一部分,但不是全部。有没有办法检索 运行 命令的完整 SQL?可以通过 Web GUI 或命令行。我想监控低效查询并向开发人员发出警告。

集群是 10 节点 MapR 集群运行在 yarn 模式下使用 Mapr 5.0

我找到了解决方案。 SSH 进入机器 运行 hiveserver2 并执行下面的命令。替换为您感兴趣的用户(或者 *,如果您想要它们)并将 hive-0.13 替换为您正在使用的配置单元版本。

cat /opt/mapr/hive/hive-0.13/logs/<user>/hive.log | grep "Starting command"

编辑:在我写这篇文章的那一年里,它似乎已更改为:

cat /opt/mapr/hive/hive-2.1/logs/<user>/hive.log | grep "Executing command"

EDIT Take 2. 以上不涉及 multi-line sql 并且仅显示第一行。对于许多查询,它只是显示“SELECT”,仅此而已。下面解决了这个问题。我有一个很好的 sed 解决方案,但由于某种原因它不能与 tail -f 一起使用,所以 Perl 是。对于 Perl 来说不寻常,但它实际上比 sed 解决方案更具可读性。

cat /opt/mapr/hive/hive-2.3/logs/<user>/hive.log | perl -ne 's/\r\n/ /g; print;' | grep "Executing command"