Apache-spark-introduction

提供:Dev Guides
移動先:案内検索

Apache Spark-はじめに

業界では、Hadoopを広範囲に使用してデータセットを分析しています。 その理由は、Hadoopフレームワークは単純なプログラミングモデル(MapReduce)に基づいており、スケーラブルで柔軟性があり、フォールトトレラントで費用効果の高いコンピューティングソリューションを可能にするためです。 ここでの主な関心事は、クエリ間の待機時間とプログラム実行の待機時間に関して、大きなデータセットの処理速度を維持することです。

Sparkは、Hadoop計算コンピューティングソフトウェアプロセスを高速化するためにApache Software Foundationによって導入されました。

一般的な考え方に反して、 SparkはHadoop の修正バージョンではなく、独自のクラスター管理があるため、実際にはHadoopに依存していません。 Hadoopは、Sparkを実装する方法の1つにすぎません。

Sparkは2つの方法でHadoopを使用します。1つは storage で、もう1つは processing です。 Sparkには独自のクラスター管理計算があるため、Hadoopはストレージ目的にのみ使用されます。

Apache Spark

Apache Sparkは、高速計算用に設計された超高速クラスターコンピューティングテクノロジーです。 Hadoop MapReduceに基づいており、MapReduceモデルを拡張して、インタラクティブクエリやストリーム処理など、より多くの種類の計算に効率的に使用します。 Sparkの主な機能は、*インメモリクラスターコンピューティング*であり、アプリケーションの処理速度を向上させます。

Sparkは、バッチアプリケーション、反復アルゴリズム、インタラクティブクエリ、ストリーミングなどの幅広いワークロードをカバーするように設計されています。 それぞれのシステムでこれらすべてのワークロードをサポートするだけでなく、個別のツールを維持する管理負担を軽減します。

Apache Sparkの進化

Sparkは、2009年にUC BerkeleyのAMPLabでMatei Zahariaによって開発されたHadoopのサブプロジェクトの1つです。 2010年にBSDライセンスの下でオープンソース化されました。 2013年にApacheソフトウェア財団に寄付され、現在、Apache Sparkは2014年2月からトップレベルのApacheプロジェクトになりました。

Apache Sparkの機能

Apache Sparkには次の機能があります。

  • 速度-Sparkは、Hadoopクラスターでアプリケーションを実行し、メモリで最大100倍、ディスクで実行すると10倍高速になります。 これは、ディスクへの読み取り/書き込み操作の数を減らすことで可能です。 中間処理データをメモリに保存します。
  • 複数の言語をサポート-Sparkは、Java、Scala、またはPythonの組み込みAPIを提供します。 したがって、異なる言語でアプリケーションを作成できます。 Sparkには、インタラクティブなクエリのための80の高レベル演算子が用意されています。
  • 高度な分析-Sparkは「マップ」と「削減」のみをサポートしていません。 また、SQLクエリ、ストリーミングデータ、機械学習(ML)、グラフアルゴリズムもサポートしています。

Hadoopに組み込まれたSpark

次の図は、Hadoopコンポーネントを使用してSparkを構築する3つの方法を示しています。

Spark Built on Hadoop

以下に説明するように、Sparkの展開には3つの方法があります。

  • スタンドアロン-Sparkスタンドアロン展開とは、SparkがHDFS(Hadoop Distributed File System)の上にある場所を占有し、HDFSに明示的にスペースが割り当てられることを意味します。 ここでは、SparkとMapReduceが並行して実行され、クラスター上のすべてのSparkジョブをカバーします。
  • Hadoop Yarn -Hadoop Yarnの展開とは、事前インストールやルートアクセスを必要とせずに、単純にSparkがYarnで実行されることを意味します。 SparkをHadoopエコシステムまたはHadoopスタックに統合するのに役立ちます。 他のコンポーネントをスタック上で実行できます。
  • * MapReduceのスパーク(SIMR)*-MapReduceのスパークは、スタンドアロン展開に加えてスパークジョブを起動するために使用されます。 SIMRを使用すると、ユーザーは管理アクセスなしでSparkを起動し、そのシェルを使用できます。

Sparkのコンポーネント

次の図は、Sparkのさまざまなコンポーネントを示しています。

Sparkのコンポーネント

Apache Sparkコア

Spark Coreは、他のすべての機能が構築されているsparkプラットフォームの基礎となる一般的な実行エンジンです。 インメモリコンピューティングと外部ストレージシステムの参照データセットを提供します。

Spark SQL

Spark SQLは、Spark Coreの上にあるコンポーネントであり、SchemaRDDと呼ばれる新しいデータ抽象化を導入し、構造化データおよび半構造化データのサポートを提供します。

スパークストリーミング

Spark Streamingは、Spark Coreの高速スケジューリング機能を活用して、ストリーミング分析を実行します。 ミニバッチでデータを取り込み、それらのミニバッチでRDD(Resilient Distributed Datasets)変換を実行します。

MLlib(機械学習ライブラリ)

MLlibは、分散メモリベースのSparkアーキテクチャのため、Sparkの上の分散型機械学習フレームワークです。 ベンチマークによれば、MLlib開発者は代替最小二乗(ALS)実装に対して行います。 Spark MLlibは、 Apache Mahout のHadoopディスクベースバージョン(MahoutがSparkインターフェースを取得する前)の9倍の速度です。

GraphX

GraphXは、Sparkの上にある分散グラフ処理フレームワークです。 Pregel抽象化APIを使用してユーザー定義グラフをモデル化できるグラフ計算を表現するためのAPIを提供します。 また、この抽象化のために最適化されたランタイムも提供します。