Apache SparkとHadoopの使用例は何ですか


30

Hadoop 2.0とYARNを使用すると、Hadoopはもはやマップ削減ソリューションだけに縛られることはありません。その進歩により、Apache SparkとHadoopの両方がHDFSの上にあることを考慮したユースケースは何ですか?Sparkの導入ドキュメントを読みましたが、Hadoopと比較してSparkでより効率的で簡単に解決できる問題に遭遇した人がいるかどうか興味があります。

回答:


40

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を採用する必要があります)。CrunchCascadingはすでにMapReduceの上に同様の抽象化を提供しますが、これはまだSparkが優れている領域です。

最後に、SparkにはML、グラフ分析、およびストリーミング用のまだ若いが有望なサブプロジェクトがあり、同様の一貫したAPIを公開しています。MapReduceでは、このためにいくつかの異なるプロジェクト(Mahout、Giraph、Storm)を使用する必要があります。まだ「焼いた」わけではありませんが、1つのパッケージに入れておくと便利です。

なぜSparkを使用しないのですか?自分自身の言い換え

  • Sparkは主にScalaであり、Java APIが移植されています。MapReduceは、Javaベースの開発者にとってより使いやすく、よりネイティブである可能性があります
  • 現在、Sparkよりも多くのMapReduceの専門知識があります。
  • MapReduceが設計されたデータ並列のワンパスETLのようなジョブの場合、MapReduceはSparkの同等物と比較して軽量です
  • Sparkはかなり成熟しており、YARNも今では成熟していますが、Spark-on-YARNはまだかなり新しいものです。この2つはまだ最適に統合されていない可能性があります。たとえば、最近まで、Sparkはコアの数に基づいて割り当てをYARNに要求できないと思いましたか?つまり、MapReduceの方が理解、管理、調整が簡単な場合があります

説明をありがとう。データをメモリに保持することは、興味深い意味を持っているように聞こえます-SparkのResilient Distributed Datasetの概念をもう少し読み上げます。
idclark 14年

3
私のようなこの質問をした多くの人々のための本当に明確で有用な答えのために+1。
vefthym 14年

3
Sean Owenは、Sparkに関する新しいO'Reilly本の共著者であることに注意してください。:-)
シェルドンクレガー14

1

YARNについてはわかりませんが、データが計算ノードのメモリにうまく収まる場合、SparkはHadoop(100倍高速と宣伝されています)と比較して本当の違いがあると思います。単に、ハードディスクへのアクセスを避けるためです。データがメモリに収まらない場合でも、バッファリングのためにいくらかの利益があります。


0

良い情報@Sean Owen。さらに1つ追加しますか。Sparkは、共通レイヤーに書き込む機能を備えたバッチレイヤーとストリーミングレイヤーの両方に対応するLambdaアーキテクチャで統合データパイプラインを構築するのに役立つ場合があります。バッチとストリーミングの間でロジックを再利用することは大きな利点です。また、Spark1.3のストリーミングK-Meansアルゴリズムは、1.4の優れたジョブ監視とプロセスの視覚化とは別に、MLに追加されました。


0

Sparkと Hadoopの処理フレームワークであるMapReduce比較するのは公平でしょう。ほとんどの場合、SparkはMapReduceよりも優れている場合があります。前者は、インメモリデータ処理を可能にします。これにより、データを最大100倍高速に処理できます。このため、Sparkは、洞察をすばやく必要とする場合、たとえば、

  • 顧客分析を実行します。たとえば、顧客の行動を特定の顧客セグメントの行動パターンと比較し、特定のアクションをトリガーします。
  • リスクを管理し、考えられるさまざまなシナリオを予測します。
  • リアルタイムで不正を検出します。
  • 産業用ビッグデータ分析を実行し、異常やマシンの障害を予測します。

ただし、MapReduceは非常に大きなデータセットの処理に適しています(処理に必要な時間に問題がない場合)。その上、MapReduceはディスクの読み取り/書き込みを行うため、より経済的なソリューションです。また、ディスクは一般にメモリよりも安価です。


-1

機械学習は、spark-on-yarnの若い時代にもかかわらず、sparkベースのソリューションがmapreduceベースのソリューションよりも何年も先の問題タイプの良い例です。


2
私はこれが真実だとは思わないが、私はあなたが何を得ているか知っていると思う:インメモリは反復計算のためにずっと速く動作し、多くのMLは反復的である。
ショーンオーウェン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.