OSS紹介

Apache Spark

Apache Spark最新情報

NRIのOpenStandiaが提供するApache Spark最新情報

Apache Sparkの保守サポートサービスの内容はこちら Apache Sparkの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Apache Spark最新トピック

■2017-08-07
[ニュース・市場動向]データ分析の準備をAIで自動化、米GEのIoT基盤「Predix」
■2017-07-10
[ニュース・市場動向]Webtrends Infinity:顧客行動データの収集、保存、活用を支援する基盤
■2017-07-10
[その他][de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
■2017-06-20
[ニュース・市場動向]Lightbendのエンタープライズアーキテクト、Kiki Carter氏がETEでInfoQに語った
■2017-06-19
[ニュース・市場動向]エンタープライズデータウェアハウスと Apache Spark 統合の価値
■2017-06-12
[ニュース・市場動向]SparkとHadoopは何が違う? 混沌とするOSSを生かしたデータ分析基盤構築の勘所
■2017-06-12
[ニュース・市場動向]Microsoft、Apache Spark用機械学習ライブラリーをオープンソースで公開 - 大大規模なデータセットに活用可能
■2017-06-12
[ニュース・市場動向]ディープラーニングをApache Sparkのクラスターで分散化、サーバーレスでそれができるDatabricksのServerless Platform
■2017-06-05
[ニュース・市場動向]HadoopとSpark--分散データ処理基盤における5カ条
■2017-06-05
[ニュース・市場動向]Nikita Ivanov氏に聞く - Apache Igniteインメモリ・コンピューティング・プラットフォーム

すべてを見る

Apache Sparkバージョンアップ情報

■2017-05-28
[VerUP]Apache Spark Release 1.4.0

すべてを見る

更新日:2017-05-28

Apache Sparkの概要

Apache Sparkは、クラスターコンピューティング向けの分散処理フレームワークです。Sparkは2009年にカルフォルニア大学バークレー校のAMPLabで開発が開始され、現在はApacheソフトウェア財団のトッププロジェクトの1つとして管理、開発が継続されています。
Sparkが開発された目的としては、従来のMapReduceの処理速度が遅いことへの改善や、MapとReduceの反復を繰り返すスタイルにとらわれない柔軟な処理スタイルへの対応が挙げられます。
Sparkは分散処理フレームワークとして単体でも動作するためポストHadoopとして注目されている一方で、MapReduce,HDFS,YARNなどからなるHadoopコアシステム中のMapReduceの代替として利用することも可能となっています。

TOPに戻る

Apache Sparkの主な特徴

Sparkの大きな特徴として、Sparkの提供する簡素なAPIを使って柔軟な処理モデルを容易にプログラミング可能なこと、大規模データに対して従来のMapReduceに比べ遥かに短い時間で処理が行えることなどが挙げられます。

従来のMapReduceでは、処理モデルとしてMapとReduceを1セットで行なう必要があったために、Hadoop上で動くアプリケーションを開発するにはこのスタイルに沿って開発する必要がありました。そのため柔軟な処理モデルを開発することが難しいといった問題が存在しました。
さらに、MapReduceでは、1回のMapとReduce処理毎に処理結果のDisk への書込が発生し、処理速度の向上が難しいという問題が存在しました。これに対してSparkでは、メモリに読み込んだデータセット(RDD)に対して複数回のMap処理を連続して実行し、さらにReduceした結果をDiskへ書き込む事なくインメモリの状態で、更に次のMap処理をそのデータセットに対して行なうといった方法をとっているため、MapReduceに比べ最大で100倍以上の処理速度の向上が見られる場合もあるとされています(従来のMapRedudeのように処理結果をDiskへ書き込むことも可能)。

Sparkは、分散処理フレームワークとして下記のコンポーネントから成り立っています。

  • Spark Core (Scala, Java, Python, R API を含む)
  • Spark SQL + DataFrames
  • Spark Streaming
  • MLlib
  • GraphX

Spark Core

Sparkでは、処理対象のデータをRDD(Resilient Distributed Dataset)という形式で保持します。
RDDは不変且つ並列実行可能なコレクションで、分散された各コンピュータ上に配置されます。
Sparkを使ったプログラミングモデルでは、このRDDに対してSpark Coreで提供されている各種メソッドを適応しながら処理を行っていきます。Spark Coreの提供するAPIを通してRDDを操作する際には、開発者は分散されたデータを意識することなく分散処理を実現することができます。
これは、Sparkの特徴の1つの柔軟な処理を容易にプログラミング出来るとされる点です。
Spark Coreで提供されるAPIですが、Sparkの開発言語であるScala以外にもJava,Python,Rと言った言語から呼び出し可能なAPIが標準で提供されています。また、3rd-Partyライブラリの中にはScalaと同じくJavaVM上で動く関数型言語のClojureからSpark APIを呼び出すためのライブラリも存在しており、更に他の言語のSpark APIへの対応も広がっていくことが予想されます。

Spark SQL + DataFrames

Sparkでは、Sparkが提供するAPIを通じでRDDを操作する方法以外にも、Spark SQLというSQLライクな言語を使ってDataFramesというデータベースのテーブルのよう名前カラムを持つ抽象化したデータセットを操作することが可能です。
これは、Scala,Java,Python,Rと言った言語を習得していないユーザでも、SQLの知識があればSpark SQLを通して、Sparkを使ってデータの処理を行うことを可能とするインターフェイスです。

Spark Streaming

Sparkで絶えず送られてくるStreamingデータに対してリアルタイム分散処理を可能とするための機能を提供するエンジンです。
同じくストリーミングデータを処理するフレームワークとしては、Apache Stormが存在します。Apache Stormがストリーミングデータの処理に特化して作られたフレームワークであるのに対してSpark StreamingはSparkでリアルタイムデータを処理するためのエンジンとしての機能です。
他には、Apache Flinkというストリーミング処理フレームワークも存在します。こちらは、バッチ処理も可能な上に、機械学習ライブラリやグラフ処理ライブラリなども存在するため、Sparkにかなり似通った構成になっており、Sparkの対抗馬とされています。

Apach Storm
http://storm.apache.org/

Apache Flink
http://flink.apache.org/introduction.html

MLlib

Sparkの機械学習ライブラリです。Sparkの柔軟な処理スタイルで機械学習を行なうプログラムを記述することが出来ます。
機械学習のライブラリとしては、先に、Hadoopと連携して機械学習を行なうMahoutというソフトウェアが存在しました、しかし、Hadoop+Mahoutでは、MapReduceのプログラミングモデルを使って機械学習プログラムを作らなければならないために、処理速度の低下という問題が有りました。
それに比べSparkは、Hadoopよりも高速に処理を行なうことが出来るために、SparkとSparkが提供するMLlibを使った機械学習の方が効率がよいということで注目が高まっています。

Apache Mahout
http://mahout.apache.org/

GraphX

GraphXは、Sparkを通じてグラフデータの並列処理を行なうためのAPIを提供しています。
Sparkの特徴である高速な処理速度でグラフデータのの並列処理が可能な点が特徴です。

上記で説明したSparkを形成するコンポーネントの中にはストアレッジに分類されるものは存在しません。
Sparkでは、読込書込として既存の各種ストアレッジを利用することが出来ます。下記は、Sparkと連携可能なストアレッジの一部です。(3rd-partyのライブラリ利用を含む)

HDFS, Cassandra, HBase, S3, MongoDB, Couchbase, Riak, Neo4j, OrientDB

また、読込可能なデータソースとしては、CSVやXMLなどのファイルから、Solr, Elasticsearchなどの検索エンジンなど多岐に渡ります。

Sparkと各種データソースとの連携パッケージ一覧
https://spark-packages.org/?q=tags%3A%22Data%20Sources%22

上記に上げた、各種データソースとの連携を可能にするパッケージ以外にも既存のSpark ECOシステムを拡張するための、各種パッケージが提供されています。これらのパッケージはSparkPackageとして下記サイトで公開されています。

https://spark-packages.org/

TOPに戻る

Apache Sparkの動作環境

Spark が動作保証しているのは、下記のOSになります。また、稼働させるにはJavaがインストールしてある必要があります。

主要なLinuxディストリビューション

  • Window
  • MacOSX

Sparkが提供するAPIがサポートするバージョンは下記です。

  • Java 7 以上
  • Python 2.6以上/3.4以上
  • R 3.1 以上.
  • Scala 2.11  Spark 2.1.1

特にSparkの開発言語であるScalaのバージョンとSparkのバージョンの関連性はシビアでSparkのマイナーバージョンレベルで対応するScalaのバージョンが変わってきます。

TOPに戻る

Apache Sparkのライセンス

SparkはApacheのトップレベルプロジェクトの1つです。ライセンスはApache License 2.0となっており、ユーザーはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。

TOPに戻る

Apache Sparkのサポート

現在、OpenStandiaではApache Sparkのサポート提供は行っておりません。

TOPに戻る

Apache Sparkの参考情報

Spark公式サイト
https://spark.apache.org/

Spark公式ドキュメント
https://spark.apache.org/docs/latest/

Sparkコミュニティサイト
(Spark開発者たちが立ち上げたdatabricksという会社により提供されています。)
https://sparkhub.databricks.com/

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気OpenAM
  • 注目MongoDB
  • OpenIDM
  • Corosync
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • BIND
  • Apache Struts
  • PostgreSQL
  • Pentaho
  • Spring Framework
  • Apache Tomcat
  • Solr
  • Dovecot
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Liferay
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • BIND
  • OpenDJ
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • sendmail
  • Courier-IMAP
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO
?
<--!-->