ApacheSpark-はじめに

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

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

一般的な信念に反して、 Spark is not a modified version of Hadoop独自のクラスター管理があるため、実際にはHadoopに依存していません。Hadoopは、Sparkを実装する方法の1つにすぎません。

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

Apache Spark

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

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

ApacheSparkの進化

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

ApacheSparkの機能

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

  • Speed− Sparkは、Hadoopクラスターでアプリケーションを実行するのに役立ちます。メモリでは最大100倍、ディスクで実行すると10倍高速になります。これは、ディスクへの読み取り/書き込み操作の数を減らすことで可能になります。中間処理データをメモリに保存します。

  • Supports multiple languages− Sparkは、Java、Scala、またはPythonの組み込みAPIを提供します。したがって、さまざまな言語でアプリケーションを作成できます。Sparkには、インタラクティブなクエリ用の80の高レベル演算子が用意されています。

  • Advanced Analytics− Sparkは、「Map」と「reduce」をサポートするだけではありません。また、SQLクエリ、ストリーミングデータ、機械学習(ML)、グラフアルゴリズムもサポートしています。

SparkはHadoop上に構築されています

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

以下で説明するように、Sparkのデプロイには3つの方法があります。

  • Standalone− Sparkスタンドアロン展開とは、SparkがHDFS(Hadoop分散ファイルシステム)の最上位を占め、HDFSに明示的にスペースが割り当てられることを意味します。ここでは、SparkとMapReduceが並行して実行され、クラスター上のすべてのSparkジョブをカバーします。

  • Hadoop Yarn− Hadoop Yarnの展開とは、簡単に言うと、事前インストールやルートアクセスを必要とせずにSparkがYarnで実行されることを意味します。SparkをHadoopエコシステムまたはHadoopスタックに統合するのに役立ちます。これにより、他のコンポーネントをスタック上で実行できます。

  • Spark in MapReduce (SIMR)− MapReduceのSparkは、スタンドアロン展開に加えて、sparkジョブを起動するために使用されます。SIMRを使用すると、ユーザーはSparkを起動し、管理アクセスなしでそのシェルを使用できます。

Sparkのコンポーネント

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

Apache Spark Core

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

Spark SQL

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

Sparkストリーミング

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

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

MLlibは、分散メモリベースのSparkアーキテクチャにより、Sparkより上の分散機械学習フレームワークです。ベンチマークによると、これはMLlib開発者によってAlternating Least Squares(ALS)の実装に対して行われます。Spark MLlibは、Hadoopディスクベースバージョンの9倍の速度です。Apache Mahout (MahoutがSparkインターフェイスを取得する前)。

GraphX

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