• 会員限定
  • 2015/08/12 掲載

Sparkの登場でHadoopは不要になるのか? スループットとレイテンシを両立

Sparkとは何か(前編)

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
記事をお気に入りリストに登録することができます。
最近ビッグデータ処理基盤として急速に注目を集めているのが「Apache Spark」です。Sparkは、Hadoopと比較されることも多く、Hadoopよりも高速かつ高機能な分散処理基盤だと言われています。Sparkとはいったい、どのようなソフトウェアなのでしょうか? 今年6月にSparkのコミッタに就任したNTTデータの猿田浩輔氏に聞きました。

Publickey 新野淳一

Publickey 新野淳一

ITジャーナリスト/Publickeyブロガー。大学でUNIXを学び、株式会社アスキーに入社。データベースのテクニカルサポート、月刊アスキーNT編集部 副編集長などを経て1998年退社、フリーランスライターに。2000年、株式会社アットマーク・アイティ設立に参画、オンラインメディア部門の役員として2007年にIPOを実現、2008年に退社。再びフリーランスとして独立し、2009年にブログメディアPublickeyを開始。現在に至る。

 以下は猿田氏から伺ったSparkの紹介をまとめたものです。また、後編では猿田氏がコミッタになった経緯などもインタビューしました。

Hadoopでは複雑な処理に時間がかかる

photo
NTTデータ
基盤システム事業本部 システム方式技術事業部 OSSプロフェッショナルサービス 主任
猿田 浩輔氏
 Sparkとはなにかの前に、まずはHadoopの話から始めさせてください。

 Hadoopとは、ざっくり言うと分散処理フレームワーク「MapReduce」と分散ファイルシステム「HDFS」の組み合わせです。最近ではYARNと呼ばれるクラスタ管理システムが加わるなど変わってきていますが、従来はこの組み合わせでした。

 これまで、Hadoopの多くのユースケースではこの仕組みで事足りていましたが、複雑な業務処理の場合には1回のMapReduce処理では終わらずに多段処理が必要です。その多段処理は、一段ごとに中間データをHDFSに書き出して、次の段で読み込んで、という作りになることが多くありました。

 こうした多段処理は、複雑なものだと数十段から百段以上になることもあり、また最近はMapReduceの上位でデータ処理を記述するApache Hiveのようなソフトウェアも、数十段もの多段処理を自動生成します。

 しかし多段処理では毎回中間データを書き出し、読み込んでいるので、その分レイテンシが発生します。これが数十段、数百段と積み重なると処理全体のレイテンシは非常に大きなものになります。

 また、段ごとにMapReduceのジョブを起動するので、そのたびにメモリなど計算リソースの確保やJavaVMの起動などが行われます。ここでもレイテンシが発生します。

 Hadoopはもともとスループットを向上させることに最適化されていましたのでレイテンシは重視されてこなかったとはいえ、処理が複雑化するにつれて、レイテンシも重視されるケースで従来のMapReduceの課題が明るみになってきました。

スループットとレイテンシの両立を目指したSpark

 その中で、スループットとレイテンシを両立させるものとして開発されたのがSparkです。


 Sparkの仕組みをイメージするとしたら、巨大な配列の各部分がクラスタにまたがっていて、それを一斉に分散処理する仕組みを持つといえます。

 Sparkでの処理にはMapReduceでのMapやReduceといった区分けはなく、処理の途中で中間データの生成のような無駄なI/Oがなるべく発生しないようにスケジューラが処理を組み立ててくれます。また、機械学習のように何度もデータを繰り返して処理するものでは、キャッシュしたデータを使い回すことでもレイテンシを小さくしてくれます。


 Sparkはインメモリの分散処理基盤と説明されることが多いのですが、内部でのレイテンシをできるだけ小さくするための手段としてインメモリ処理が使われている、ということで、それ以外にも中間データをできるだけ排除したり、何度もジョブの起動をしなくて済むといったこともレイテンシの改善に大きく効いています。

 Sparkの登場で、もうHadoopは使わずにSparkだけあればいいとも思われがちです。しかしクラスタのメモリ量の10倍、100倍といった大規模データの処理には、やはりHadoopの方が安定していて堅実な処理ができます。

 つまり大規模なデータを処理して絞り込むのはHadoopで行い、絞られたデータを基に機械学習などを行うのにSparkを用いるのが現在は適しているのではないかと思います。

【次ページ】 Scala、Java、R、Pythonなどに対応

関連タグ

関連コンテンツ

あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます