SparkとHadoopの違い
この記事は以下の記事の翻訳、要約、及び筆者が調べたことのまとめです。 www.scnsoft.com
両方ともApacheによるOSSである。2017年時点では歴史の長いHadoopがより多く使われているが、Sparkも爆発的に人気を上げていてパフォーマンスもよい。
主な違い
Sparkはインメモリデータベースを使用するが、HadoopのMapReduceはディスクから読み書きする。したがってSparkの方が格段に高速である。しかしHadoopのMapReduceの方がディスク上で大容量のデータを扱える。使用料金はHadoopの方が安く、比較するとSparkは高い。
Hadoop MapReduceが向いていること
ビッグデータの線形処理 大容量データの並列処理が可能である。大容量データを異なるノードで処理できるように小さく分割し、それぞれの結果を自動的に統合し一つの結果を返す。RAMの容量よりもデータセットの容量が大きい場合にSparkよりもパフォーマンスを発揮する可能性がある。
経済的に安く抑えたい場合。すぐに結果が必要でない場合 スピードを求めない場合。例えば一晩かけて処理を待ってもいい場合は、Hadoop MapReduceの方が経済的である。
Sparkが向いていること
反復処理 データに繰り返し処理を施す場合、SparkのRDDs(Resilient Distributed Datasets)はインメモリデータベースで複数処理行えるが、Hadoop MapReduceはディスクに書き込む必要がある。
グラフ処理 Sparkの計算モデルはグラフ処理の典型的な反復処理に向いている。Apache SparkにはGraphXというグラフ計算のAPIがある。
機械学習 SparkにはMLlibという機械学習用のライブラリがあるが、Hadoopはサードパーティのライブラリが必要である。MLlibはインメモリですぐに使用できるアルゴリズムを備えている。
データセットの結合 Sparkは全てにおいて高速だが、大容量のデータを何度もシャッフルしたり並べ替えたりする場合Hadoopの方が優れているかもしれない。
実際のアプリケーションの例
ScienceSoft社は以下のすべてのアプリケーションにおいてSparkの方が優れていると結論づけている。
顧客の細分化 顧客のふるまいやパターンを分析する場合。
リスクマネジメント
- リアルタイム詐欺検知 過去のデータを機械学習で学習することで、リアルタイムに異常を検知または予測する。
- システムの異常検知 機械の故障につながる異常をセンサーから集めたデータを元に、検知または予測する。