回答:
Hadoopとは、HDFS、YARN、MapReduce、その他多くのことを意味します。Spark vs MapReduceを意味しますか?SparkはHadoop上で/とともに実行されるため、これがポイントです。
Sparkを使用する主な理由は速度のためです。これは、MapまたはReduceの後で常に実行をHDFSに戻すのではなく、ステージ間でデータをメモリに保持できるためです。この利点は、それぞれが同じデータに触れる数十のステージを持つ反復計算で非常に顕著です。これは、物事が「100倍」高速になる可能性がある場所です。MapReduceが設計された単純なワンパスETLのようなジョブの場合、一般的に高速ではありません。
Sparkを使用するもう1つの理由は、MapReduceと比較して優れた高レベル言語であるということです。これは、Scalaを模倣したプログラミングのような機能的なビューを提供します。これは、MapReduceコードを記述するよりもはるかに優れています。(ただし、Scalaを使用するか、Spark用にやや開発が遅れたJavaまたはPython APIを採用する必要があります)。CrunchとCascadingはすでにMapReduceの上に同様の抽象化を提供しますが、これはまだSparkが優れている領域です。
最後に、SparkにはML、グラフ分析、およびストリーミング用のまだ若いが有望なサブプロジェクトがあり、同様の一貫したAPIを公開しています。MapReduceでは、このためにいくつかの異なるプロジェクト(Mahout、Giraph、Storm)を使用する必要があります。まだ「焼いた」わけではありませんが、1つのパッケージに入れておくと便利です。
なぜSparkを使用しないのですか?自分自身の言い換え:
Sparkと Hadoopの処理フレームワークであるMapReduceを比較するのは公平でしょう。ほとんどの場合、SparkはMapReduceよりも優れている場合があります。前者は、インメモリデータ処理を可能にします。これにより、データを最大100倍高速に処理できます。このため、Sparkは、洞察をすばやく必要とする場合、たとえば、
ただし、MapReduceは非常に大きなデータセットの処理に適しています(処理に必要な時間に問題がない場合)。その上、MapReduceはディスクの読み取り/書き込みを行うため、より経済的なソリューションです。また、ディスクは一般にメモリよりも安価です。
機械学習は、spark-on-yarnの若い時代にもかかわらず、sparkベースのソリューションがmapreduceベースのソリューションよりも何年も先の問題タイプの良い例です。