ソリューション技術
Apache Spark は、Hadoop 分散ファイル システム (HDFS) と直接連携する Hadoop アプリケーションを作成するための人気のプログラミング フレームワークです。 Spark は本番環境に対応しており、ストリーミング データの処理をサポートし、MapReduce よりも高速です。 Spark には、効率的な反復処理のために構成可能なメモリ内データ キャッシュがあり、Spark シェルはインタラクティブにデータを学習および探索できます。 Spark を使用すると、Python、Scala、または Java でアプリケーションを作成できます。 Spark アプリケーションは、1 つ以上のタスクを持つ 1 つ以上のジョブで構成されます。
すべての Spark アプリケーションには Spark ドライバーがあります。 YARN クライアント モードでは、ドライバーはクライアント上でローカルに実行されます。 YARN クラスター モードでは、ドライバーはアプリケーション マスター上のクラスターで実行されます。クラスター モードでは、クライアントが切断されてもアプリケーションは実行を継続します。
クラスター マネージャーは 3 つあります。
-
*スタンドアロン*このマネージャーは Spark の一部であり、クラスターのセットアップを容易にします。
-
*Apache Mesos。*これは、MapReduce やその他のアプリケーションも実行する一般的なクラスター マネージャーです。
-
*Hadoop YARN。*これは Hadoop 3 のリソース マネージャーです。
復元力のある分散データセット (RDD) は、Spark の主要コンポーネントです。 RDD は、クラスター内のメモリに保存されたデータから失われたデータや欠落したデータを再作成し、ファイルから取得された初期データやプログラムによって作成された初期データを保存します。 RDD は、ファイル、メモリ内のデータ、または別の RDD から作成されます。 Spark プログラミングでは、変換とアクションという 2 つの操作を実行します。変換では、既存の RDD に基づいて新しい RDD が作成されます。アクションは RDD から値を返します。
変換とアクションは、Spark データセットとデータフレームにも適用されます。データセットは、RDD (強力な型指定、ラムダ関数の使用) の利点と Spark SQL の最適化された実行エンジンの利点を兼ね備えた分散型データ コレクションです。データセットは JVM オブジェクトから構築し、関数変換 (map、flatMap、filter など) を使用して操作できます。 DataFrame は、名前付きの列に編成されたデータセットです。概念的には、リレーショナル データベースのテーブルまたは R/Python のデータ フレームと同等です。 DataFrames は、構造化データ ファイル、Hive/HBase 内のテーブル、オンプレミスまたはクラウド内の外部データベース、既存の RDD など、さまざまなソースから構築できます。
Spark アプリケーションには、1 つ以上の Spark ジョブが含まれます。ジョブはエグゼキュータ内でタスクを実行し、エグゼキュータは YARN コンテナ内で実行されます。各エグゼキュータは単一のコンテナ内で実行され、アプリケーションの存続期間中ずっと存在します。アプリケーションの起動後にエグゼキュータが固定され、YARN はすでに割り当てられているコンテナのサイズを変更しません。 Executor はメモリ内のデータに対してタスクを同時に実行できます。