使用 Azure HDInsight 对 Apache Hive 进行故障排除Troubleshoot Apache Hive by using Azure HDInsight

了解处理 Apache Ambari 中的 Apache Hive 有效负载时的最常见问题及其解决方法。Learn about the top questions and their resolutions when working with Apache Hive payloads in Apache Ambari.

如何导出 Hive 元存储并将其导入另一个群集?How do I export a Hive metastore and import it on another cluster?

解决步骤Resolution steps

  1. 使用安全外壳 (SSH) 客户端连接到 HDInsight 群集。Connect to the HDInsight cluster by using a Secure Shell (SSH) client. 有关详细信息,请参阅其他阅读材料For more information, see Additional reading.

  2. 在要从中导出元存储的 HDInsight 群集上运行以下命令:Run the following command on the HDInsight cluster from which you want to export the metastore:

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 的文件。This command generates a file named allatables.sql.

  1. 将 alltables.sql 文件复制到新的 HDInsight 群集,并运行以下命令:Copy the file alltables.sql to the new HDInsight cluster, and then run the following command:
hive -f alltables.sql

解决方法步骤中的代码假设新群集上的数据路径与旧群集上的相同。The code in the resolution steps assumes that data paths on the new cluster are the same as the data paths on the old cluster. 如果数据路径不同,可以手动编辑生成的 alltables.sql 文件以反映任何更改。If the data paths are different, you can manually edit the generated alltables.sql file to reflect any changes.

其他阅读材料Additional reading

如何在群集上查找 Hive 日志?How do I locate Hive logs on a cluster?

解决步骤Resolution steps

  1. 使用 SSH 连接到 HDInsight 群集。Connect to the HDInsight cluster by using SSH. 有关详细信息,请参阅其他阅读材料For more information, see Additional reading.

  2. 若要查看 Hive 客户端日志,请使用以下命令:To view Hive client logs, use the following command:

    /tmp/<username>/hive.log 
    
  3. 若要查看 Hive 元存储日志,请使用以下命令:To view Hive metastore logs, use the following command:

    /var/log/hive/hivemetastore.log 
    
  4. 若要查看 Hiveserver 日志,请使用以下命令:To view Hiveserver logs, use the following command:

    /var/log/hive/hiveserver2.log 
    

其他阅读材料Additional reading

如何在群集上使用特定配置启动 Hive shell?How do I launch the Hive shell with specific configurations on a cluster?

解决步骤Resolution steps

  1. 启动 Hive shell 时,请指定配置键值对。Specify a configuration key-value pair when you start the Hive shell. 有关详细信息,请参阅其他阅读材料For more information, see Additional reading.

    hive -hiveconf a=b 
    
  2. 若要在 Hive shell 中列出所有有效配置,请使用以下命令:To list all effective configurations on Hive shell, use the following command:

    hive> set;
    

    例如,在控制台上使用以下命令启动已启用调试日志记录的 Hive shell:For example, use the following command to start Hive shell with debug logging enabled on the console:

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

其他阅读材料Additional reading

如何在群集关键路径上分析 Apache Tez DAG 数据?How do I analyze Apache Tez DAG data on a cluster-critical path?

解决步骤Resolution steps

  1. 若要在群集关键图中分析 Apache Tez 有向无环图 (DAG),请使用 SSH 连接到 HDInsight 群集。To analyze an Apache Tez directed acyclic graph (DAG) on a cluster-critical graph, connect to the HDInsight cluster by using SSH. 有关详细信息,请参阅其他阅读材料For more information, see Additional reading.

  2. 请在命令提示符处运行以下命令:At a command prompt, run the following command:

    hadoop jar /usr/hdp/current/tez-client/tez-job-analyzer-*.jar CriticalPath --saveResults --dagId <DagId> --eventFileName <DagData.zip> 
    
  3. 若要列出可用于分析 Tez DAG 的其他分析程序,请使用以下命令:To list other analyzers that can be used to analyze Tez DAG, use the following command:

    hadoop jar /usr/hdp/current/tez-client/tez-job-analyzer-*.jar
    

    必须提供一个示例程序作为第一个参数。You must provide an example program as the first argument.

    有效的程序名称包括:Valid program names include:

    • ContainerReuseAnalyzer:列显 DAG 中的容器重用详细信息ContainerReuseAnalyzer: Print container reuse details in a DAG
    • CriticalPath:查找 DAG 的关键路径CriticalPath: Find the critical path of a DAG
    • LocalityAnalyzer:列显 DAG 中的区域详细信息LocalityAnalyzer: Print locality details in a DAG
    • ShuffleTimeAnalyzer:分析 DAG 中的随机排列时间详细信息ShuffleTimeAnalyzer: Analyze the shuffle time details in a DAG
    • SkewAnalyzer:分析 DAG 中的偏斜详细信息SkewAnalyzer: Analyze the skew details in a DAG
    • SlowNodeAnalyzer:列显 DAG 中的节点详细信息SlowNodeAnalyzer: Print node details in a DAG
    • SlowTaskIdentifier:列显 DAG 中的慢速任务详细信息SlowTaskIdentifier: Print slow task details in a DAG
    • SlowestVertexAnalyzer:列显 DAG 中的最慢顶点详细信息SlowestVertexAnalyzer: Print slowest vertex details in a DAG
    • SpillAnalyzer:列显 DAG 中的溢出详细信息SpillAnalyzer: Print spill details in a DAG
    • TaskConcurrencyAnalyzer:列显 DAG 中的任务并发性详细信息TaskConcurrencyAnalyzer: Print the task concurrency details in a DAG
    • VertexLevelCriticalPathAnalyzer:在 DAG 中查找顶点级别的关键路径VertexLevelCriticalPathAnalyzer: Find the critical path at vertex level in a DAG

其他阅读材料Additional reading

如何从群集下载 Tez DAG 数据?How do I download Tez DAG data from a cluster?

解决步骤Resolution steps

可使用两种方法收集 Tez DAG 数据:There are two ways to collect the Tez DAG data:

  • 通过命令行:From the command line:

    使用 SSH 连接到 HDInsight 群集。Connect to the HDInsight cluster by using SSH. 在命令提示符下运行以下命令:At the command prompt, run the following command:

    hadoop jar /usr/hdp/current/tez-client/tez-history-parser-*.jar org.apache.tez.history.ATSImportTool -downloadDir . -dagId <DagId> 
    
  • 使用 Ambari Tez 视图:Use the Ambari Tez view:

    1. 转到 Ambari。Go to Ambari.
    2. 转到 Tez 视图(隐藏在右上角的磁贴图标下面)。Go to Tez view (under the tiles icon in the upper-right corner).
    3. 选择想要查看的 DAG。Select the DAG you want to view.
    4. 选择“下载数据”。Select Download data.

其他阅读材料Additional reading

使用 SSH 连接到 HDInsight 群集Connect to an HDInsight cluster by using SSH

后续步骤Next steps

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道以获取更多支持:If you didn't see your problem or are unable to solve your issue, visit the following channel for more support:

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。If you need more help, you can submit a support request from the Azure portal.