1

データ セットの一部で最新の Hive をテストしています。カスタム SerDe を介して読み取っているのは、ほんの数 GB のログ ファイルです。

単純な Group By クエリ (4 つの MR ジョブ) を実行すると、次のようなログが取得されます。

  • マップ: 100%
  • 減らす: 0%
  • マップ : 85%
  • 減らす: 0%
  • マップ : 86%
  • 減らす: 0%

その間ずっと、8 コア サーバーで 1 つのコアのみを使用していました。なんか無駄…

並列オプションを有効にしましたが、それでも並列化されません。リデュース ジョブの数を 8 に設定しました。

私の期待は、私のデータセットが分割されている (=> 異なるファイル) ため、少なくとも一部の map-reduce フェーズをそれらのファイルで並行して実行できることです。

私の理解は間違っていますか?クエリを記述する特定の方法はありますか?

ありがとう

4

1 に答える 1

2

単純な GROUP BY しか実行しない場合、実際の処理は比較のみであり、それほど難しくありません。とはいえ、いくつのマッパーを実行していますか? タスクトラッカーは並列実行されません。むしろ、並列化するために実行されている複数のタスクトラッカー上の Hadoop バンクです。したがって、ノードごとに 1 つのマップ タスクのみを実行している場合は、何も表示されません。

もう1つの可能性は、GROUP BYを実行しているため、プロセッサではなくIOにバインドされているため、複数のコアを持ち込む必要がないことです。

于 2011-03-29T13:42:12.663 に答える