「Apache Spark」の版間の差分
削除された内容 追加された内容
Inuwokaitai (会話 | 投稿記録) m バージョン情報の更新 |
accessdate が無いエラーに、本日の日付を記述。ref の位置を微調整。 |
||
21行目:
Apache Sparkはオープンソースのクラスタコンピューティングフレームワークである。カリフォルニア大学バークレー校のAMPLabで開発されたコードが、管理元のApacheソフトウェア財団に寄贈された。暗黙のデータ並列性と耐故障性を備えたクラスタ全体をプログラミングするためのインタフェースがある。
[[日経BP]]社が発表した「ITインフラテクノロジーAWARD 2015」において、Sparkは[[Docker]]に次ぐ準グランプリとされた<ref>[http://corporate.nikkeibp.co.jp/information/newsrelease/newsrelease20141224.shtml 日経BP社、「ITインフラテクノロジーAWARD 2015」を発表。グランプリに「Docker」、準グランプリに「Apache Spark」]</ref>。
== 概要 ==
[[フォールトトレラントシステム]]で管理され、複数マシンのクラスタに分散されたデータ項目の読み取り専用[[多重集合]]であるRDD(resilient distributed dataset)と呼ばれる[[データ構造]]を中心とするアプリケーションプログラミングインターフェイスを備えている。MapReduceは、分散プログラム上で特定の線形[[データフロー]]構造を強制するクラスタコンピューティング[[プログラミングパラダイム]]の制限に対応して開発された。MapReduceは、ディスクから入力データを読み込み、データ全体に関数をマップし、削減結果をディスクに格納する。SparkのRDDは、 分散[[共有メモリ]]の (意図的に)制限された形式で提供する分散プログラムの[[ワーキングセット]]として機能する
RDDの可用性は、ループ内で複数回データセットを参照する[[反復法 (数値計算)|反復法]]アルゴリズム、および対話型/探索型データ分析、データ反復のデータベースクエリの両方の実装を容易にする。このようなアプリケーションの[[レイテンシ]](Apache Hadoopスタックでは一般的であったMapReduce実装と比較して)は、桁違いに低下する可能性がある。反復アルゴリズムのクラスの中には、 機械学習のための訓練アルゴリズムがあり、Apache Sparkを開発の初期の刺激となった
クラスタマネージャと分散ストレージシステムが必要であり、クラスタ管理のためにスタンドアロン(ネイティブのSparkクラスタ)、Hadoop YARN、Apache Mesosに対応している。分散ストレージの場合、Hadoop分散ファイルシステム<ref>[https://amplab.cs.berkeley.edu/software/ Figure showing Spark in relation to other open-source Software projects including Hadoop]</ref>、[[マップアール]]ファイルシステム<ref>[http://doc.mapr.com/display/MapR/Ecosystem+Support+Matrix MapR ecosystem support matrix]</ref>、[[Apache Cassandra]]
=== Spark Core ===
プロジェクト全体の基盤であり、RDD[[抽象化 (計算機科学)|抽象化]]を中心とするアプリケーションプログラミングインターフェイス(Java、Python、Scala、R)を介して公開される分散タスクディスパッチ、スケジューリング、および基本I
RDD指向の機能的プログラミングスタイルの他に、共有変数の2つの制限形式がある。ブロードキャスト変数はすべてのノードで利用可能な読み取り専用データを参照し、アキュムレータは[[命令型プログラミング]]の削減をプログラムできる。
44行目:
wordFreq.sortBy(s => -s._2).map(x => (x._2, x._1)).top(10) // Get the top 10 words. Swap word and count to sort by count.
</source>
=== Spark SQL ===
Spark Coreより上位のコンポーネントで、構造化データや半構造化データをサポートするDataFramesというデータ抽象化を導入した。Scala、Java、PythonのDataFramesを操作するための[[ドメイン固有言語]](DSL)を提供しており、[[キャラクタユーザインタフェース]]と[[Open Database Connectivity]]/[[JDBC]]サーバーとのSQL言語サポートも実装している。DataFramesには、Spark 2.0のようにRDDによって提供されるコンパイル時型チェック機能はないが、強く型付けされたデータセットはSpark SQLでも完全にサポートされている。
62 ⟶ 63行目:
val countsByAge = df.groupBy("age").count() // Counts people by age
</source>
=== Spark Streaming ===
Spark Coreの高速スケジューリング機能を活用してストリーミング分析を実行する。ミニバッチでデータを取り込み、RDD変換を実行する。この設計により、バッチ分析用に記述されたアプリケーションコードセットを使用できるため、 ラムダアーキテクチャの実装が容易になる。 しかし、この利便性はミニバッチ持続時間に等しいレイテンシのペナルティを伴う。ミニバッチではなくイベント別にイベントを処理するその他のストリーミングデータエンジンには、StormとFlinkのストリーミングコンポーネントが含まれる。
=== MLlib Machine Learning Library ===
分散メモリベースのSparkアーキテクチャの大部分がApache Mahoutで使用されているディスクベースの実装の9倍速である、Spark Core上の分散マシン学習フレームワークである。多くの一般的な機械学習と統計アルゴリズムが実装され、大規模機械学習パイプラインを簡略化するMLlibに同梱されている。
=== GraphX ===
Apache Spark上の分散グラフ処理フレームワークを示す。不変のRDDに基づきグラフは不変であるため、グラフデータベースのようなトランザクション方式ではなく更新が必要な[[グラフ (データ構造)|グラフ]]には適していない。大規模並列アルゴリズム([[ページランク]]など)を実装するための2つの別個のAPI、Pregel抽象化、より一般的なMapReduceスタイルAPIを提供している
HadoopディスクベースのMapReduceを利用したApache GiraphのSparkインメモリ版として見ることができる
Apache Sparkと同様にUC BerkeleyのAMPLabとDatabricksで研究プロジェクトとして開始され、後にApacheソフトウェア財団とSparkプロジェクトに寄贈された
▲Apache Sparkと同様にUC BerkeleyのAMPLabとDatabricksで研究プロジェクトとして開始され、後にApacheソフトウェア財団とSparkプロジェクトに寄贈された。<ref>{{cite journal|first1=Joseph| last1=Gonzalez| first2=Reynold |last2=Xin| first3=Ankur| last3=Dave| first4=Daniel| last4=Crankshaw| first5=Michael| last5=Franklin| first6=Ion| last6=Stoica|title=GraphX: Graph Processing in a Distributed Dataflow Framework| conference=OSDI 2014|date=Oct 2014| url=https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-gonzalez.pdf}}</ref>
== 脚注 ==
<references/>
== 外部リンク ==
* {{Official website|https://spark.apache.org}}
{{apache}}
[[Category:クラウドコンピューティング]]
|