Sparkについて
Sparkのアーキテクチャーと機能に関する情報。
Sparkは、パッケージ型インストールで分析ノードを起動する場合のデフォルトのモードです。 Sparkは各ノードでローカルに実行され、可能な場合はメモリー内で実行されます。Sparkは複数の処理ではなく複数のスレッドを使用することで、1つのノードでの並列処理を実現し、複数のJVMでメモリー・オーバーヘッドが生じるのを防ぎます。
- Sparkストリーミング
- Spark Java APIのサポート
- Spark内のデータを操作するためのDataFrames API
- Spark SQLのサポート
Sparkアーキテクチャー
- Sparkワーカー:全ノードでアクティブ
- Cassandraファイル・システム(CFS)
- DataStax Enterpriseファイル・システム(DSEFS)
- Cassandra
Sparkマスターはワークフローを制御し、Sparkワーカーはエグゼキューターを起動します。これらのエグゼキューターは、Sparkマスターに送信されるジョブの一部の実行を担当します。SparkのアーキテクチャーについてはApacheのドキュメントで説明されています。
Sparkは複数のアプリケーションをサポートしています。1つのアプリケーションによって複数のジョブが生成される場合、これらのジョブは並列実行されます。アプリケーションは各ノードで一部のリソースを予約し、これらのリソースはアプリケーションが終了するまで解放されません。たとえば、Sparkシェルの各セッションは、リソースを予約するアプリケーションです。デフォルトで、スケジューラーは、最大数のノードにアプリケーションを割り当てようとします。たとえば、4つのコアが必要であることをアプリケーションが宣言している場合に、2コアずつ搭載したサーバーが10台あるとします。この場合、アプリケーションは、それぞれ異なるノードに置かれて1つのコアを消費する、4つのエグゼキューターを取得する可能性が大です。ただし、このアプリケーションは、それぞれ2つの異なるノードに置かれて2コアを消費する、2つのエグゼキューターを取得する可能性もあります。アプリケーション・スケジューラーは構成が可能です。SparkワーカーとSparkマスターは別々のプロセスとして生成され、非常に軽量です。ワーカーは、メモリーを大量に使用する、クエリー処理専用のその他のプロセスを生成します。それらの追加プロセスのメモリー設定は、管理者によって完全に管理されます。
デプロイ環境では、1つの分析ノードがSparkマスターを実行し、各分析ノードでSparkワーカーが実行されます。Sparkマスターには、自動高可用性機能が組み込まれています。Sparkエグゼキューターは、ネイティブ統合を使用して、オープン・ソースのSpark-Cassandra Connector経由でローカルCassandraノード内のデータにアクセスします。
Sparkを実行すると、Hadoop分散ファイル・システム(HDFS)またはCassandraファイル・システム(CFS)のどちらか一方のURLを使用して、そのファイル・システム内のデータにアクセスできます。
Spark Jobserver
dse spark-jobserver start [any_spark_submit_options] //Start the job server $ dse spark-jobserver stop //Stop the job server
Installer-Servicesおよびパッケージ・インストール | /usr/share/dse/resources/spark/spark-jobserver |
Installer-No Servicesおよびtarボール・インストール | install_location/resources/spark/spark-jobserver |
Spark Jobserverを使用すると便利な状況には、キャッシュ・データの共有、キャッシュ・データのクエリーの繰り返し、ジョブの起動の高速化などがあります。
Sparkマスターの高可用性
Sparkマスターの高可用性メカニズムは、dse_systemキースペースの特殊なテーブルを使用して、Sparkワーカーとアプリケーションのリカバリーに必要な情報を格納します。Sparkのドキュメントに記載されている高可用性メカニズムと異なり、DataStax EnterpriseではZooKeeperは使用されません。
元のSparkマスターで障害が発生した場合は、予備のSparkマスターが自動的に処理を継承します。現在のSparkマスターを検索するには、以下を実行します。
dse client-tool spark master-address
Cassandraでパスワード認証を有効にしている場合は、DataStax Enterpriseによって特別なユーザーが作成されます。Sparkマスター・プロセスは、Analyticsノードごとに1人いる、この特別なユーザーを介してCassandraにアクセスします。ユーザー名はノード名で始まり、エンコードされたノードIDがそれに続きます。パスワードは乱数で生成されます。これらのユーザーを削除したり、パスワードを変更したりしないでください。
DataStax EnterpriseはSparkマスター管理機能を備えています。
サポートされていない機能
- GraphX
- SparkからBLOBカラムへの書き込み
あらゆる型のカラムの読み取りがサポートされていますが、シリアライズする前に、BLOBのコレクションをバイト配列に変換しておく必要があります。