0

私は実際に、Hive on CDH 5.0 with Yarn を使用して、Hadoop でソリューションを実装しようとしています。したがって、私のアーキテクチャは次のとおりです: 1 Namenode 3 DataNode

私のノードは 2vCPU @2.27 と 8 GO RAM で仮想化されています

それで、いくつかのリクエストを試してみたところ、いくつかの結果が得られました。その後、結果を比較するために、同じデータセットを使用して基本的な MySQL で同じリクエストを試しました。

実際、MySQL は Hive よりも非常に高速です。だから私はその理由を理解しようとしています。ホストのせいでパフォーマンスが悪いことはわかっています。私の主な質問は次のとおりです。私のクラスターは適切にサイジングされていますか?

この量のデータに対して同じ DataNode を追加する必要がありますか (私の意見ではそれほど膨大ではありません)。

また、誰かがほぼ同じアーキテクチャでリクエストを試みた場合は、結果を共有してください。

ありがとう !

4

1 に答える 1

0

私は21列で〜1億2300万行をクエリしています[...]私の意見ではそれほど巨大ではありません

それはまさに問題であり、大したことではありません。Hive はビッグデータ ソリューションであり、使用しているような小さなデータ セットで実行するようには設計されていません。フォークリフトを使って台所のゴミを出そうとするようなものです。確かにうまくいきますが、おそらく手で取り出した方が速いでしょう。

以上のことから、従来の RDBMS に近いリアルタイム パフォーマンスが必要な場合は、いくつかのオプションがあります。

  • TEZ、ORC、および応答時間を大幅に改善する他の多くの最適化を使用するHive 0.13+
  • MapReduce を完全にバイパスするImpala (CDH ディストリビューションの一部) ですが、ファイル形式のサポートはより制限されています。

編集:

2 つのデータノードを使用すると、3 つの場合と同じパフォーマンスが得られると言っています。

それはまったく驚くべきことではありません。Hive は MapReduce を使用してクエリ演算子 (join、group by など) を処理するため、MapReduce に伴うすべてのコストが発生します。このコストは、データのサイズやデータノードの数に関係なく、ほぼ一定です。

100 行のデータセットがあるとします。処理時間の 98% が MapReduce の初期化に、2% が実際のデータ処理にかかる場合があります。データのサイズが大きくなるにつれて、MapReduce に関連するコストは、かかる合計時間と比較して無視できるようになります。

于 2014-04-28T22:28:10.423 に答える