使用 Azure HDInsight 对 Apache Hive 进行故障排除
了解处理 Apache Ambari 中的 Apache Hive 有效负载时的最常见问题及其解决方法。
如何导出 Hive 元存储并将其导入另一个群集?
解决步骤
使用安全外壳 (SSH) 客户端连接到 HDInsight 群集。 有关详细信息,请参阅其他阅读材料。
在要从中导出元存储的 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 日志?
解决步骤
使用 SSH 连接到 HDInsight 群集。 有关详细信息,请参阅其他阅读材料。
若要查看 Hive 客户端日志,请使用以下命令:
/tmp/<username>/hive.log
若要查看 Hive 元存储日志,请使用以下命令:
/var/log/hive/hivemetastore.log
若要查看 Hive 服务器日志,请使用以下命令:
/var/log/hive/hiveserver2.log
附加阅读材料
如何在群集上使用特定配置启动 Hive shell?
解决步骤
启动 Hive shell 时,请指定配置键值对。 有关详细信息,请参阅其他阅读材料。
hive -hiveconf a=b
若要在 Hive shell 中列出所有有效配置,请使用以下命令:
hive> set;
例如,在控制台上使用以下命令启动已启用调试日志记录的 Hive shell:
hive -hiveconf hive.root.logger=ALL,console
附加阅读材料
如何在群集关键路径上分析 Apache Tez DAG 数据?
解决步骤
若要在群集关键图中分析 Apache Tez 有向无环图 (DAG),请使用 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 数据?
解决步骤
可使用两种方法收集 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。
- 选择“下载数据”。
附加阅读材料
后续步骤
如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:
- 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。