Machine Morning

機械学習やWebについて学んだことを記録しています。

SparkとHadoopの違い

この記事は以下の記事の翻訳、要約、及び筆者が調べたことのまとめです。 www.scnsoft.com

両方ともApacheによるOSSである。2017年時点では歴史の長いHadoopがより多く使われているが、Sparkも爆発的に人気を上げていてパフォーマンスもよい。

主な違い

Sparkはインメモリデータベースを使用するが、HadoopMapReduceはディスクから読み書きする。したがってSparkの方が格段に高速である。しかしHadoopMapReduceの方がディスク上で大容量のデータを扱える。使用料金はHadoopの方が安く、比較するとSparkは高い。

Hadoop MapReduceが向いていること

  • ビッグデータの線形処理 大容量データの並列処理が可能である。大容量データを異なるノードで処理できるように小さく分割し、それぞれの結果を自動的に統合し一つの結果を返す。RAMの容量よりもデータセットの容量が大きい場合にSparkよりもパフォーマンスを発揮する可能性がある。

  • 経済的に安く抑えたい場合。すぐに結果が必要でない場合 スピードを求めない場合。例えば一晩かけて処理を待ってもいい場合は、Hadoop MapReduceの方が経済的である。

Sparkが向いていること

  • 高速なデータ処理 インメモリデータベースを使うため、HadoopMapReduceより早い。

  • 反復処理 データに繰り返し処理を施す場合、SparkのRDDs(Resilient Distributed Datasets)はインメモリデータベースで複数処理行えるが、Hadoop MapReduceはディスクに書き込む必要がある。

  • グラフ処理 Sparkの計算モデルはグラフ処理の典型的な反復処理に向いている。Apache SparkにはGraphXというグラフ計算のAPIがある。

  • 機械学習 SparkにはMLlibという機械学習用のライブラリがあるが、Hadoopサードパーティのライブラリが必要である。MLlibはインメモリですぐに使用できるアルゴリズムを備えている。

  • データセットの結合 Sparkは全てにおいて高速だが、大容量のデータを何度もシャッフルしたり並べ替えたりする場合Hadoopの方が優れているかもしれない。

実際のアプリケーションの例

ScienceSoft社は以下のすべてのアプリケーションにおいてSparkの方が優れていると結論づけている。

  • 顧客の細分化 顧客のふるまいやパターンを分析する場合。

  • リスクマネジメント

  • リアルタイム詐欺検知 過去のデータを機械学習で学習することで、リアルタイムに異常を検知または予測する。
  • システムの異常検知 機械の故障につながる異常をセンサーから集めたデータを元に、検知または予測する。