16

はJavaで確率シミュレーションを作成しました。これは、ディスク上のいくつかのCSVファイル(合計約100MB)からデータをロードし、結果を別の出力ファイル(多くのデータではなく、ブール値といくつかの数値)に書き込みます。パラメータファイルもあり、さまざまなパラメータについて、シミュレーション出力の分布が変化すると予想されます。正しい/最適な入力パラメーターを決定するには、複数の入力パラメーター構成にわたって複数のシミュレーションを実行し、各グループの出力の分布を確認する必要があります。各シミュレーションは、パラメーターとランダム性に応じて0.1〜10分かかります。

私はHadoopについて読んでいて、それが多くのシミュレーションの実行に役立つかどうか疑問に思っています。近い将来、約8台のネットワーク化されたデスクトップマシンにアクセスできるようになるかもしれません。私が正しく理解していれば、map関数がシミュレーションを実行して結果を吐き出す可能性があり、レデューサーがIDである可能性があります。

私が心配しているのはHDFSです。これは、小さなCSVファイルの断片ではなく、巨大なファイルを対象としているようです(64MBの最小推奨ブロックサイズを構成するのに十分な大きさではありません)。さらに、各シミュレーションには、各CSVファイルの同一のコピーのみが必要です。

Hadoopは私にとって間違ったツールですか?

4

5 に答える 5

21

ここには、基本的に「いいえ、Hadoopはシミュレーション用に構築されていないため、シミュレーションに使用しないでください」という回答が多数あります。これはかなり近視眼的な見方であり、1985年に「ワープロにはPCを使用できません。PCはスプレッドシート用です!」と言っている人に似ていると思います。

Hadoopは、シミュレーションエンジンを構築するための素晴らしいフレームワークです。私はこの目的のために何ヶ月も使用しており、小さなデータ/大きな計算問題で大きな成功を収めています。シミュレーションのためにHadoopに移行した上位5つの理由は次のとおりです(シミュレーションの言語としてRを使用しています)。

  1. アクセス: Amazon Elastic Map Reduceを介してHadoopクラスターをリースでき、クラスターの管理に時間とエネルギーを投資する必要はありません。これは、組織で管理者の承認を得なくても、実際に分散フレームワークでシミュレーションを開始できることを意味します。
  2. 管理: Hadoopは、ノード障害などのジョブ制御の問題を目に見えない形で処理します。これらの条件をコーディングする必要はありません。ノードに障害が発生した場合、Hadoopは、そのノードにスケジュールされたシムが別のノードで実行されることを確認します。
  3. アップグレード可能: Hadoopの使用に慣れている場合に、後で大きなデータに関連する問題が発生した場合に、優れた分散ファイルシステムを備えたかなり一般的なマップリデュースエンジンであるため、新しいソリューションに移行する必要はありません。そのため、Hadoopは、(ほぼ)無料で大規模なデータプラットフォームに拡張できるシミュレーションプラットフォームを提供します。
  4. サポート:オープンソースであり、非常に多くの企業で使用されているため、Hadoopのオンラインとオフラインの両方のリソースの数は膨大です。これらのリソースの多くは「ビッグデータ」を想定して書かれていますが、それでもマップリデュースの方法で考えることを学ぶのに役立ちます。
  5. 移植性:私は、プロプライエタリツールを使用してプロプライエタリエンジンの上に分析を構築しました。後で転職して、同じ独自のスタックがない会社にいることに気付いたとき、新しいツールのセットと新しいシミュレーションスタックを学ぶ必要がありました。二度と。SASをRに、古いグリッドフレームワークをHadoopに交換しました。どちらもオープンソースであり、将来どのような仕事にも着手でき、すぐにツールを使ってケツを蹴り始めることができることを私は知っています。
于 2010-07-12T18:44:49.623 に答える
3

すでにHadoopクラスターがある場合は、Hadoopを使用してシミュレーションを実行できますが、これは、説明している種類のアプリケーションに最適なツールではありません。Hadoopは、ビッグデータでの作業を可能にするように構築されており、ビッグデータはありません。大きな計算があります。

私はこの種のことでGearman(http://gearman.org/ )が好きです。

于 2009-10-20T13:15:24.407 に答える
2

MapReduceをHadoopで使用することで取得できる場合もありますが、実行していることは、 CondorSunGridEngineなどのグリッド/ジョブスケジューラに適しているようです。Hadoopは、単一の(非常に大きな)入力を取得し、それをワーカーマシンが処理できるようにチャンクに分割し、それを減らして出力を生成するような処理に適しています。

于 2009-10-19T17:04:12.690 に答える
0

すでにJavaを使用しているので、GridGainを確認することをお勧めします。これは、問題に特に適していると思います。

于 2009-10-20T06:30:06.097 に答える
0

簡単に言うと、Hadoopはここで問題を解決する可能性がありますが、目的に適したツールではありません。

于 2009-10-21T06:32:10.410 に答える