HIVE 故障排除

本文介绍处理 Apache Ambari 中的 HIVE 有效负载时遇到的最常见问题及其解决方法。

如何导出 Hive 元存储并将其导入另一个群集

问题:

需要导出 Hive 元存储并将其导入另一个 HDInsight 群集。

解决步骤:

  1. 使用安全外壳 (SSH) 客户端连接到 HDInsight 群集(请查看下面的“延伸阅读”部分)。
  2. 在要从中导出元存储的 HDInsight 群集上运行以下命令:
for d in `hive -e "show databases"`; do echo "create database $d; use $d;" >> alltables.sql ; for t in `hive --database $d -e "show tables"` ; do ddl=`hive --database $d -e "show create table $t"`; echo "$ddl ;" >> alltables.sql ; echo "$ddl" | grep -q "PARTITIONED\s*BY" && echo "MSCK REPAIR TABLE $t ;" >> alltables.sql ; done; done

此命令会生成名为 allatables.sql 的文件。

  • alltables.sql 文件复制到新的 HDInsight 群集,运行以下命令:
hive -f alltables.sql

此代码假设新群集上的数据路径与旧群集上的相同。 如果不同,可以手动编辑生成的
alltables.sql 文件以反映任何更改。

延伸阅读:

如何在群集上查找 Hive 日志

问题:

需要在 HDInsight 群集上查找 Hive 客户端、元存储和 hiveserver 的日志。

解决步骤:

  • 使用安全外壳 (SSH) 客户端连接到 HDInsight 群集(请查看下面的“延伸阅读”部分)。
  • 可在以下位置找到 Hive 客户端日志:
/tmp/<username>/hive.log 
  • 可在以下位置找到 Hive 元存储日志:
/var/log/hive/hivemetastore.log 
  • 可在以下位置找到 Hiveserver 日志:
/var/log/hive/hiveserver2.log 

延伸阅读:

如何在群集上使用特定的配置启动 Hive shell

问题:

启动时需要在 HDInsight 群集上替代或指定 Hive shell 配置。

解决步骤:

  • 启动 Hive shell 时指定配置键值对(请查看下面的“延伸阅读”部分):
hive -hiveconf a=b 
  • 使用以下命令在 Hive shell 中列出所有有效配置:
hive> set;

例如,在控制台上使用以下命令启动已启用调试日志记录的 Hive shell:

hive -hiveconf hive.root.logger=ALL,console 

延伸阅读:

如何在群集关键路径上分析 Tez DAG 数据

问题:

需要分析 Tez 有向无环图 (DAG) 信息,尤其是 HDInsight 群集中关键路径上的信息

解决步骤:

  • 使用安全外壳 (SSH) 客户端连接到 HDInsight 群集(请查看下面的“延伸阅读”部分)。

  • 在命令提示符下运行以下命令:

hadoop jar /usr/hdp/current/tez-client/tez-job-analyzer-*.jar CriticalPath --saveResults --dagId <DagId> --eventFileName <DagData.zip> 
  • 使用以下命令列出可用于分析 Tez DAG 的其他分析程序:
hadoop jar /usr/hdp/current/tez-client/tez-job-analyzer-*.jar

必须指定一个示例程序作为第一个参数。

有效的程序名称为:ContainerReuseAnalyzer:列显 DAG 中的容器重用详细信息;CriticalPath:查找 DAG 的关键路径;LocalityAnalyzer:列显 DAG 中的区域详细信息;ShuffleTimeAnalyzer:分析 DAG 中的随机排列时间详细信息;SkewAnalyzer:分析 DAG 中的偏斜详细信息;SlowNodeAnalyzer:列显 DAG 中的节点详细信息;SlowTaskIdentifier:列显 DAG 中的慢速任务详细信息;SlowestVertexAnalyzer:列显 DAG 中的最慢顶点详细信息;SpillAnalyzer:列显 DAG 中的溢出详细信息;TaskConcurrencyAnalyzer:列显 DAG 中的任务并发性详细信息;VertexLevelCriticalPathAnalyzer:查找 DAG 中顶点级别的关键路径

延伸阅读:

如何从群集下载 Tez DAG 数据

问题:

需要从 HDInsight 群集下载 Tez 有向无环图 (DAG) 信息。

解决步骤:

可使用两种方法收集 Tez DAG 数据。

  • 通过命令行:

    使用安全外壳 (SSH) 客户端连接到 HDInsight 群集。 在命令提示符下运行以下命令:

hadoop jar /usr/hdp/current/tez-client/tez-history-parser-*.jar org.apache.tez.history.ATSImportTool -downloadDir . -dagId <DagId> 
  • 或者,可以使用 Ambari Tez 视图:

转到 Ambari --> 转到 Tez 视图(隐藏在右上角的磁贴图标下面)--> 单击所需的 DAG --> 单击“下载数据”。

延伸阅读:

1) 使用 SSH 连接到 HDInsight 群集