2011-01-20 2 views
0

擬似分散Hadoopクラスタを設定してテストしています(namenode、ジョブトラッカー、タスクトラッカー/データノードはすべて同じマシン上にあります)。私が実行しているボックスには、約4ギガバイトのメモリ、2 cpus、32ビットがあり、Red Hat Linuxを実行しています。これらのHadoopのセットアップ/クリーンアップ/実行時間は合理的ですか?

チュートリアルにあるサンプルgrepプログラムをさまざまなファイルサイズとファイル数で実行しました。私はgrepが1 mbファイルの場合は45秒、100 mbファイルの場合は60秒、1ギガファイルの場合は約2分かかることがわかりました。

また、すべてのロジックを完全に削除する独自のマップリダクションプログラムも作成しました。 map関数とreduce関数は空です。このサンプルプログラムは実行に25秒かかりました。

データノードを2台目のマシンに移動し、2台目のノードに追加しようとしましたが、数秒間の変更しか表示されません。特に、セットアップとクリーンアップの時間は、どの入力に関係なく、常に約3秒であることに気付きました。これはセットアップのために本当に長い時間がかかりそうです。

ハードウェア、設定、入力などによってこれらの時間が大きく変わることは知っていますが、もし私が期待していなければならないことがあれば教えてください。私はそれをかなり減らすことができます(例えば、grepは<を5秒間合計します)。

答えて

1

Hadoopは2つのCPUしか持たないため、Hadoopは、ネームノード用、データアノード用、タスクトラッカー用、ジョブトラッカー用に1つのJVMを多数(擬似分散モードで)生成します。ジョブパスの各ファイルについて、Hadoopはマッパータスクを設定し、タスクごとに新しいJVMを生成します。あなたの2つのコアは4-nアプリケーションを共有しています。あなたの時間は非標準ではありません。

Hadoopは、シーケンスファイルと同じくらい単純なテキストファイルではありません。 REALのスピードアップを得るには、テキストをシリアライズされたバイトコードに持ち込み、その上にハーフ・ストリームを流す必要があります。

1

いくつかの考え:

  • 分割を計算し、マップを実行し、雇用を減らすために、各ノードでJVMのを起動するためにあらゆるHadoopのジョブ実行のための一定の時間コストが常にあります。
  • 大量のデータを持つ複数のノードで実行を開始しない限り、UNIX grepに比べて実際のスピードアップはありません。 100MB-1Gのファイルでは、実際のグレープ処理よりも多くの時間を費やしてジョブを設定します。 1ギガバイト以上のデータを扱うことを期待していない場合、おそらくHadoopを使う価値はありません。
関連する問題