Azure HDInsight を使用した Apache Hive のトラブルシューティング

Apache Ambari で Apache Hive ペイロードを操作するときに発生する主な質問とその解決策について説明します。

Hive metastore をエクスポートして別のクラスターにインポートする方法

解決手順

  1. Secure Shell (SSH) クライアントで HDInsight クラスターに接続します。 詳細については、「その他の情報」をご覧ください。

  2. metastore をエクスポートする 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 という名前のファイルが生成されます。

  3. 新しい HDInsight クラスターに alltables.sql ファイルをコピーし、次のコマンドを実行します。

    hive -f alltables.sql
    

この解決手順のコードでは、新しいクラスターのデータ パスが元のクラスターのデータ パスと同じであると想定しています。 データ パスが異なる場合は、生成された alltables.sql ファイルを手動で編集して、変更を反映できます。

その他の情報

クラスターにある Hive のログを特定する方法

解決手順

  1. SSH を使用して HDInsight クラスターに接続します。 詳細については、「その他の情報」をご覧ください。

  2. Hive クライアント ログを表示するには、次のコマンドを使用します。

    /tmp/<username>/hive.log
    
  3. Hive metastore ログを表示するには、次のコマンドを使用します。

    /var/log/hive/hivemetastore.log
    
  4. Hive サーバー ログを表示するには、次のコマンドを使用します。

    /var/log/hive/hiveserver2.log
    

その他の情報

クラスターで特定の構成を使って Hive シェルを起動する方法

解決手順

  1. Hive シェルの開始時に構成のキーと値のペアを指定します。 詳細については、「その他の情報」をご覧ください。

    hive -hiveconf a=b
    
  2. 次のコマンドを使用して、Hive シェルの効果的な構成をすべて一覧表示します。

    hive> set;
    

    たとえば、デバッグ ログの記録が有効になっている Hive シェルを開始するには、コンソールで次のコマンドを使用します。

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

その他の情報

クラスターのクリティカル パスで Apache Tez DAG データを分析する方法

解決手順

  1. クラスターのクリティカル パスで Apache Tez 有向非巡回グラフ (DAG) を分析するには、SSH を使用して HDInsight クラスターに接続します。 詳細については、「その他の情報」をご覧ください。

  2. コマンド プロンプトで、次のコマンドを実行します。

    hadoop jar /usr/hdp/current/tez-client/tez-job-analyzer-*.jar CriticalPath --saveResults --dagId <DagId> --eventFileName <DagData.zip> 
    
  3. 次のコマンドを使用して、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 データは次の 2 つの方法で収集できます。

  • コマンドラインから:

    SSH を使用して HDInsight クラスターに接続します。 コマンド プロンプトで次のコマンドを実行します。

    hadoop jar /usr/hdp/current/tez-client/tez-history-parser-*.jar org.apache.tez.history.ATSImportTool -downloadDir . -dagId <DagId>
    
  • Ambari Tez ビューを使用して:

    1. Ambari に移動します。
    2. Tez ビューに移動します (右上隅のタイル アイコンの裏に隠れています)。
    3. 表示する DAG をクリックします。
    4. [データのダウンロード] を選択します。

その他の情報

SSH を使用して HDInsight クラスターに接続する

次のステップ

問題がわからなかった場合、または問題を解決できない場合は、次のいずれかのチャネルでサポートを受けてください。

  • Azure コミュニティのサポートを通じて Azure エキスパートから回答を得る。

  • カスタマー エクスペリエンスを向上させるための Microsoft Azure の公式アカウントの @AzureSupport に連絡する。 Azure コミュニティで適切なリソース (回答、サポート、エキスパートなど) につながる。

  • さらにヘルプが必要な場合は、Azure portal からサポート リクエストを送信できます。 メニュー バーから [サポート] を選択するか、 [ヘルプとサポート] ハブを開いてください。 詳細については、「Azure サポート要求を作成する方法」を参照してください。 サブスクリプション管理と課金サポートへのアクセスは、Microsoft Azure サブスクリプションに含まれていますが、テクニカル サポートはいずれかの Azure のサポート プランを通して提供されます。