Apache Sparkとは?~背景から活用シーンまで~

Hadoopって便利そうだけど、敷居が高そう、Sparkを使えばビッグデータのリアルタイム処理が高速にできるらしい、けど実際どうなの、という方に送ります。

Apache Spark、その前に背景とおさらい

システムにおける データアクセスについて、ムーアの法則にあるように高速化は頭打ちでしたが、Hadoop の登場により、ボトルネックだったディスクIOの高速化が図れるようになりました。可用性やパフォーマンスの向上を図るためのスケールアップ(基本スペックの向上)には限界がありますが、台数を増やす、処理ノードを増やす、役割を分割する等のスケールアウト(分散化)にて高速化、可用性を向上させる、近年における分散技術の発展には目を見張るものがあります。
jtp_scaleout

Hadoop MapReduce の弱点

さて、分散処理基盤として現在最も使用されている(多分)Hadoop MapReduce の弱点 は、そもそも ディスクIOの並列化をベース としていることに起因します。そのため、いくら並列化をしたとしても、ディスクIOが都度都度発生するような 繰り返し処理リアルタイム処理 には、やはり 動作コストがかかってしまう、という悩みを潜在的にもっています。これらの操作は頻繁なデータ読み書きを繰り返し行うビッグデータ分析に関しては、非常に高コストな処理であり、Hadoop の利用価値向上を阻害していた原因の一つなのではないかと思います。

Hadoop においては、実際の処理系コンポーネントである Hadoop MapReduce がその部分を担っていますが、Hadoop MapReduce 自体は、処理途中の中間データをメモリ上に保持する機構を有していません。
hadoop_logo
Hadoop(http://15809-presscdn-0-93.pagely.netdna-cdn.com/wp-content/uploads/2016/02/MTIyMzAzNjEzMjc1MDQ2NTAy.png)

Apache Spark、その前に背景とおさらい

Apache Spark は日頃多方面にてお世話になっている、Apache プロジェクト におけるトップレベルプロジェクトの一つです。

■Apache Spark
http://spark.apache.org

上記 Hadoop MapReduce の弱点である 機械学習リアルタイム処理 といった オンタイムの処理をメモリ上に展開されたデータに対して行う ための 分散処理用フレームワーク です。

Hadoop MapReduce と、Apache Spark のデータ処理における大きな差別項目として着目すべき点は、

 1. データの入出力は ディスクIOを伴わないインメモリ で行うこと
    (Hadoop MapReduce のみを使用するより10倍から100倍高速!)

 2. データの 格納場所の選択肢が多い こと (HDFS, Cassandra, H Base, Amazon S3)

になります(出典:http://spark.apache.org/)。

また、Spark 自体は Scala言語 で構築されていますが、データの分析操作を記述するためのプログラミング言語としては、Scala の他、 Java、Python、Rを選択することが可能 です。日常使い慣れているプログラミング言語でデータ分析操作を記述できる、という点は開発者にとってはうれしい限りです。

spark_logoSpark(https://upload.wikimedia.org/wikipedia/commons/e/ea/Spark-logo-192x100px.png)

 

Hadoop MapReduce と Spark の活用シーン

 

続きはこちらから・・・

本コラムは、日本サード・パーティ株式会社(JTP)にて、執筆しています。

JTPは約30年に渡り、様々なベンダーのサポートを行う企業です。 そこで培われた技術・経験を備え、多くの日本初トレーニングをはじめ、 幅広いトレーニングをご提供しています。

JTP の IT教育サービスでは、クラウド、Hadoop関連技術など、OSS の最新技術 トレーニングを数多く実施しています。

また、経験豊富な講師陣により、毎週コラムを更新しており 多くのエンジニアの方にご覧いただいています。

 

▼JTP IT教育のページはこちらから!

http://edu.jtp.co.jp/

Be the first to comment

コメント投稿

Your email address will not be published.


*