Search on the blog

2016年6月12日日曜日

SparkとHadoop MapReduceの違い

-- Apache Hadoop logo and Spark log[1, 2] --

比較まとめ
Hadoop MapReduce
Spark
速度
高速 MapReduceの10-100倍高速
データ
ディスクに保存
ディスクIOに多くの時間を必要とし、レイテンシが大きい
メモリに保存
レイテンシが小さい
Real-Time分析
バッチ処理用に設計されているため、得意ではない ストリーミングデータの分散処理をサポート
Iterative Algorithm
iterationごとに、ディスクからの入力読込、ディスクへの出力書込が必要なため不向き 中間結果をキャッシュし、キャッシュに対して複数のiterationを走らせるため高速
Graph Algorithm
隣接ノードの情報をメッセージングする機構が備わっていない GraphXというグラフアルゴリズムライブラリが含まれている

速度
MapReduceはHadoopクラスタのメモリを有効活用できていなかった。
SparkではRDD(Resilient Distributed Datasets)を使うことで、データをメモリに保存することができ、必要な場合にのみディスクへの保存を行うことができる。
これにより、SparkはHadoopよりも格段に高速である。

データ
Hadoopはデータをディスクに保存するが、Sparkはメモリに保存する。
SparkはRDD(Resilient Distributed Datasets)とよばれるデータストレージモデルを用いる。RDDはnetwork IOを最小化するフォールトトレランスの機構を提供する。RDDの一部のデータが失われた場合、lineage(データに提供された処理の履歴)を元に再構築が行われる。このためフォールトトレランスのためのレプリケーションが不要となる。
これに対して、Hadoopはフォールトトレランスのためのレプリケーションを必要とする。

Real-timeデータ分析
Twitterのデータを分析する場合などは、毎秒数百万単位で発生するイベントを処理する必要がある。Sparkの利点の一つは、データストリーミングの分散処理をサポートしている点である。標準で提供されるSpark Streamingライブラリを利用することで、バッチジョブを書く場合と同じ方法でストリーミングジョブを書くことができる。
これに対してMapReduceはバッチ分散処理用にデザインされているため、Real-time分析が不得意である。

Iterative Algorithm
多くのデータ分析アルゴリズムはiterative algorithmとよばれる繰り返し処理を必要とする。例えば、k-means、LDA、PageRankなどがその例である。
Hadoopの場合、各iterationでの計算結果をディスクに書き込み、次のiterationで結果をディスクから読み込むという処理が必要なため、iterative algorithmを高速に実行することは困難である。
Sparkではiterationごとの結果をメモリ上に保存しておけるため、高速に計算することができる。またSparkではMLlibというMachine Learning系の処理を行うためのライブラリが標準で提供されている。

Graph Algorithm
グラフ構造のデータに提供するアルゴリズムの多くでは、隣接するノードの情報が必要となる。例えば、PageRankの場合は、自身のノードにリンクを張っているノードのPageRank値が計算に必要になる。
Hadoopの場合、隣接ノードの情報をメッセージ するための機能は提供されていない。これに対してSparkではGraphXという標準ライブラリを使うことで、グラフ系のアルゴリズムを効率的に計算することができる。Sparkは、NettyとAkkaのコンビネーションを使ってメッセージの配信を行っている。


参考URL
[1] Apache Hadoop logo, Apache Software Foundation - https://svn.apache.org/repos/asf/hadoop/logos/out_rgb/, Apache License 2.0
[2] Spark Logo, Spark project team - Spark open source project - UC Berkeley, Apache License 2.0
[3] Apache Spark vs Hadoop MapReduce
[4] What is the difference between Apache Spark and Apache Hadoop (Map-Reduce) ? - Quora

3 件のコメント:


  1. we have to share that the useful information i will be like this information

    Seo Training |
    Informatica Training |
    Angularjs Training |
    Tableau Training |
    Hadoop Training

    返信削除
  2. Marvelous blog with tons of valuable information. We also offers real time online training on Hadoop Admin Training | Devops Training | Data Science Training

    返信削除
  3. Your blog is very unique and interesting. I gathered some needful information through your blog. Big Data Training | Oracle DBA Online Training | SQL Server DBA Online Training

    返信削除