web-dev-qa-db-ja.com

MapReduceまたはSpark?

私はhadoopとmapreduceをclouderaでテストしましたが、かなりクールであることがわかりました。私は自分が最も関連性の高いBigDataソリューションだと思いました。しかし数日前、私はこれを見つけました: https://spark.incubator.Apache.org/

Hadoopクラスターの最上位で動作し、明らかにmapreduceを粉砕できる「超高速クラスターコンピューティングシステム」。 mapreduceよりもRAMで動作することがわかりました。1台のマシンで発生する可能性のあるI/Oの問題を解決するためにクラスターコンピューティングを行う必要がある場合、mapreduceは引き続き関連すると思います。 Sparkはmapreduceが行うジョブを実行でき、複数の操作でより効率的かもしれません、それはMapReduceの終わりではありませんか?または、MapReduceができること、またはMapReduceができることはありますか特定のコンテキストでSparkよりも効率的ですか?

26
Nosk

MapReduceは、本質的にバッチ指向です。そのため、HiveやPigなどのMR実装の上にあるフレームワークも、本質的にバッチ指向です。機械学習および対話型分析の場合のような反復処理の場合、Hadoop/MRは要件を満たしません。 ここ は、ClouderaのWhy Sparkこれは非常にうまくまとめられています。

MRの終わりではありません。この記事の執筆時点では、HadoopはSparkと比較すると非常に成熟しており、多くのベンダーがサポートしています。時間とともに変化します。ClouderaはSpark CDHおよび時間の経過とともに、ますます多くのベンダーがビッグデータの配布にそれを含め、商業的なサポートを提供するようになります。MRとSparkが近い将来見られるでしょう。

また、Hadoop 2(別名YARN)を使用すると、MRおよび他のモデル(Sparkを含む)を単一のクラスターで実行できます。そのため、Hadoopはどこにも行きません。

25
Praveen Sripati

何をしたいかによって異なります。

MapReduceの最大の強みは、大量の大きなテキストファイルを処理できることです。 Hadoopの実装は文字列処理を中心に構築されており、I/Oは非常に重いです。

MapReduceの問題は、人々が簡単な並列処理のハンマーを見て、すべてが釘のように見えるようになることです。残念ながら、大きなテキストファイルの処理以外のHadoopのパフォーマンスはひどいものです。適切な並列コードを記述する場合、Hadoopが最初のVMを生成する前に、しばしば終了させることができます。私は自分のコードで100倍の違いを見てきました。

Sparkは、すべてをI/Oに依存するなど、Hadoopの多くのオーバーヘッドを排除します。代わりに、すべてをメモリ内に保持します。十分なメモリがある場合は素晴らしいですが、ない場合はそれほど大きくありません。

SparkはHadoopの拡張機能であり、代替ではありません。Hadoopを使用してログを処理する場合、Sparkはおそらく役に立ちません。複雑で、おそらく密結合の問題であれば、Sparkが大いに役立ちます。また、SparkのScalaオンライン計算用のインターフェースが好きかもしれません。

33
Adam