Apache-spark-introduction
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の展開には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のさまざまなコンポーネントを示しています。
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を提供します。 また、この抽象化のために最適化されたランタイムも提供します。