このトピックでは、Hive のよくある問題をまとめています。
待機状態のジョブ
問題を特定するには、次の手順に従います:
- E-MapReduce コンソールで、[アクセスリンクとポート] ページに移動し、YARN UI のリンクをクリックします。
- アプリケーション ID をクリックします。
- [Tracking URL] をクリックします。このページには、待機状態の複数のジョブが表示されます。
- 左側のナビゲーションウィンドウで、[Scheduler] をクリックします。[Application Queues] セクションで、各キューのキャパシティと使用率を確認し、リソースの制約を特定します。キューに制約がある場合は、ジョブをアイドル状態のキューに移動することを検討してください。そうでない場合は、コードの最適化が必要になることがあります。
マップステージにおける小規模ファイル
問題を特定するには、次の手順に従います:
- E-MapReduce コンソールで、[アクセスリンクとポート] ページに移動し、YARN UI のリンクをクリックします。
- アプリケーション ID をクリックします。これにより、マップタスクの詳細ページが開き、各マップタスクによって読み取られたデータ量が表示されます。例えば、タスクがわずか 2 バイトのレコードを読み取る場合があります。ほとんどのマップタスクが非常に少量のデータを処理している場合は、小規模ファイルの結合を検討する必要があります。
各マップタスクのログを確認して、より詳細な情報を得ることもできます。
Reduce タスクにおけるデータスキュー
問題を特定するには、次の手順に従います:
- E-MapReduce コンソールで、[アクセスリンクとポート] ページに移動し、YARN UI のリンクをクリックします。
- アプリケーション ID をクリックします。
- Reduce タスクのページで、タスクを完了時刻の降順でソートし、最も実行時間の長いタスクを見つけます。[State] 列を確認してタスクのステータスを確認します。次に、[Successful Attempt]、[Shuffle Finish Time]、[Merge Finish Time]、[Finish Time] の各列を確認して、各フェーズで費やされた時間を分析し、データスキューが発生しているかどうかを判断します。
- 実行時間の長いタスクの名前をクリックします。
- タスク詳細ページで、左側のナビゲーションウィンドウにある [Counters] をクリックします。
[Map-Reduce Framework] セクションを見つけます。[Reduce input records] と [Reduce shuffle bytes] の値を確認します。これらの値が他のタスクと比較して著しく大きい場合、データスキューを示しています。