Apache Sparkは、フォールトトレラントな方法で維持される、マシンのクラスター上に分散された読み取り専用のデータ項目のマルチセットであるresilient distributed dataset(RDD)にアーキテクチャ基盤を持っています。 Dataframe APIは、RDDの上に抽象化としてリリースされ、その後にDataset APIがリリースされました。 スパーク1にて。x、RDDは主要なアプリケーションプログラミングインターフェイス(API)でしたが、Spark2の時点では。x Rdd APIは非推奨ではありませんが、Dataset APIの使用をお勧めします。 Rdd技術は依然としてDataset APIの基礎となっています。,
SparkとそのRddは、分散プログラムに特定の線形データフロー構造を強制するMapReduceクラスタコンピューティングパラダイムの制限に対応して2012年に開発されました。MapReduceプログラムは、ディスクから入力データを読み取り、データ全体に関数をマッピングし、マップの結果を減らし、ディスク上に縮小結果を格納します。 SparkのRDDsは、(意図的に)制限された形式の分散共有メモリを提供する分散プログラムのワーキングセットとして機能します。,
Sparkは、ループ内でデータセットを複数回訪問する反復アルゴリズムと、対話型/探索的データ分析、すなわちデータの繰り返しデータベーススタイルのクエリの実 このようなアプリケーションの待ち時間は、Apache Hadoop MapReduceの実装と比較して数桁短縮される可能性があります。反復アルゴリズムのクラスの中には機械学習システムのトレーニングアルゴリズムがあり、これはApache Sparkを開発するための最初の原動力となった。
Apache Sparkには、クラスタマネージャと分散ストレージシステムが必要です。, クラスター管理のために、Sparkはスタンドアロン(ネイティブSparkクラスター)をサポートしています。 これらのデーモンを単一のマシンで実行してテストすることも可能です)、Hadoop YARN、Apache MesosまたはKubernetes。 分散ストレージの場合、SparkはAlluxio、Hadoop Distributed File System(HDFS)、MapR File System(MapR-FS)、Cassandra、OpenStack Swift、Amazon S3、Kudu、Lustre file system、またはカスタムソリューションを実装することができます。, Sparkは擬似分散ローカルモードもサポートしており、通常は開発またはテスト目的でのみ使用され、分散ストレージは必要なく、代わりにローカルファイルシステ
Spark CoreEdit
Spark Coreはプロジェクト全体の基盤です。 分散タスクディスパッチ、スケジューリング、および基本的なI/O機能を提供し、アプリケーションプログラミングインターフェイス(Java、Python、Scala、.,NETおよびR)はRDD抽象化を中心としています(Java APIは他のJVM言語で利用可能ですが、JuliaなどのJVMに接続できる他の非JVM言語でも使用できます)。 “ドライバ”プログラムは、関数をSparkに渡すことによってRDD上でmap、filter、reduceなどの並列操作を呼び出し、クラスタ上で関数の並列実行をスケジュールします。 これらの操作、および結合などの追加の操作は、Rddを入力として受け取り、新しいRddを生成します。, フォールトトレランスは、データ損失の場合に再構築できるように、各RDDの”系統”(それを生成した操作のシーケンス)を追跡することによって達成されます。 Rddには、任意のタイプのPython、.NET、Java、Scalaオブジェクトを含めることができます。ブロードキャスト変数は、すべてのノードで利用可能である必要がある読み取り専用データを参照しますが、アキュムレータは命令型スタイルの削減をプログラムするために使用することができます。,
RDD中心の関数型プログラミングの典型的な例は、テキストファイルのセットに現れるすべての単語の頻度を計算し、最も一般的なものを印刷する 各map、flatMap(mapの変種)およびreduceByKeyは、単一のデータ項目(または項目のペア)に対して簡単な操作を実行する無名関数を受け取り、その引数を適用してRDDを新しいRDD,
Spark SQLEdit
Spark SQLは、構造化および半構造化データのサポートを提供するDataFramesと呼ばれるデータ抽象化を導入したSpark Coreの上のコンポーネントです。 Spark SQLは、Scala、Java、Python、または.NETでデータフレームを操作するためのドメイン固有言語(DSL)を提供します。 DataFramesにはRddによって提供されるコンパイル時の型チェックがありませんが、Spark2.0以降、厳密に型指定されたDataSetはSpark SQLでも完全にサポートされています。,
Spark StreamingEdit
Spark Streamingは、Spark Coreの高速スケジューリング機能を使用してストリーミング分析を実行します。 ミニバッチにデータを取り込み、それらのミニバッチのデータに対してRDD変換を実行します。 このデザインを同じアプリケーションコードの記述のためのバッチの分析で使用するストリーミング分析、リサイクルが容易です簡単な実装のラムダ仕様です。 ただし、この利便性には、ミニバッチ期間に等しいレイテンシのペナルティが伴います。, その他のストリーミングデータエンジンと工程イベントによるイベントではなくミニバッチなどの暴風のストリーミング成分Flink. Spark Streamingには、Kafka、Flume、Twitter、ZeroMQ、Kinesis、およびTCP/IPソケットから消費するための組み込みのサポートがあります。
スパーク2で。ストリーミングをサポートするために、より高いレベルのインターフェイスを持つ構造化ストリーミングと呼ばれるデータセット
Sparkは、従来のオンプレミスのデータセンターだけでなく、クラウドにも展開できます。,
MLlib Machine Learning LibraryEdit
Spark MLlibはSpark Coreの上にある分散機械学習フレームワークであり、大部分は分散メモリベースのSparkアーキテクチャによるものであり、Apache Mahoutが使用するディスクベースの実装と同じくらい高速である(MLlib開発者がals実装に対して行ったベンチマークによると、Mahout自体がSparkインターフェイスを得る前に行ったものである)。, などの潜在ディリクレ割り当て(LDA)を含む共同フィルタリング技術
Graphxedit
graphxは、apache spark上の分散グラフ処理フレームワークです。, これは不変であるRddに基づいているため、グラフは不変であるため、GraphXはグラフデータベースのようなトランザクション的な方法ではもちろん、更新する必 GraphXは、PageRankなどの超並列アルゴリズムを実装するための二つの別々のApiを提供しています:Pregel抽象化と、より一般的なMapReduceスタイルのAPIです。 Spark1.6で正式に廃止された前身のBagelとは異なり、GraphXはプロパティグラフ(プロパティをエッジと頂点にアタッチできるグラフ)を完全にサポートしてい,
GraphXは、HadoopディスクベースのMapReduceを利用したApache GiraphのSparkインメモリバージョンと見なすことができます。
Apache Sparkのように、GraphXは最初にUC BerkeleyのAMPLabとDatabricksで研究プロジェクトとして始まり、後にApache Software FoundationとSparkプロジェクトに寄付されました。
Leave a Reply