1

私はHBaseの初心者です。現在、HBaseのパフォーマンスに何が影響するのかわかりません。まず、Hbaseをスタンドアロンモードで実行しました。1台のマシンを使用してMapreduceプログラムを実行し、200万行のテキスト行を処理し、その結果をローカルファイルシステムに保存されているHBaseテーブルに出力しました。約1時間40分かかりました。次に、疑似分散モードに変更しました。その後、HtableファイルはHDFSに保存されます。プログラムを含む他のすべてのものは同じままです。それから3時間以上かかりました!! 私は完全に混乱しています。なぜこれが起こったのか誰か教えてもらえますか?

もう1つの質問ですが、あまり強力ではないLinuxマシン(8GRAM。3GHz4コアCPU)で仮想クラスターとして5台の仮想マシンを作成しているためです。1か月前にMapreduceプログラムを実行したとき、単一のマスターまたは5つ以上のスレーブで実行したときに大きな違いは見られませんでした。そのため、CPUがボトルネックになっている可能性があると思いましたが、それでもわかりません。私はオペレーティングシステムにあまり詳しくないので、誰かが確実に答えることができますか?IOのボトルネックなのかCPUのボトルネックなのかわかりません。そして、完全分散モードでHBaseテーブルにレコードを挿入するために、6台のマシンクラスターでプログラムを実行するだけです。遅すぎたので仕事をやめました。

4

1 に答える 1

2

あなたの質問の最初の部分について:

疑似分散モードの実行速度がスタンドアロンモードよりも遅くなることは明らかです。スタンドアロンでは、HBaseはローカルファイルシステムをストレージに使用します。疑似分散モードでは、HBaseはHDFS(ローカルファイルシステムを使用)を使用するため、IO用の追加のソフトウェアレイヤーがあります。さらに、疑似分散モードでは、同じマシンに複数のサーバースレッドがあり、スタンドアロンでは発生しないレプリケーション(すべてのデータが数回コピーされる)などを実行する場合があります。

一般に、(スタンドアロンのように)集中化されているほど、小さい(十分な)データのパフォーマンスが向上します。ただし、分散モードは大規模な場合に重要です。とにかく、いつの日か1台のマシンのスケーラビリティの限界に達するからです。次に、分散モードでは、レプリケーションなど、最終的に全体的なパフォーマンスを低下させるものに対処する必要があります。

質問の2番目の部分については、これらの設定で良好なパフォーマンスが期待できないはずです。HBase、HDFS、Java、仮想マシンなど、多くのソフトウェアレイヤーがあることを考慮する必要があります。これらの各レイヤーはオーバーヘッドを追加します。分散スレーブでは、すべてのサーバーが同じハードウェアを共有するため、これはさらに遅くなります。

パフォーマンスをいくらか向上させたい場合は、仮想マシンとしてではなく、LinuxOSでスタンドアロンモードを使用することを検討してください。次に、実際のクラスターで(仮想マシンではなく)実際の分散モードを使用します(可能な場合は、ネットワーク化された2台のコンシューマーコンピューターでも使用できます)。1秒あたり約1K〜3Kのプットを期待する必要があります。

于 2012-07-28T16:53:38.693 に答える