Sparkジョブ・サーバーの使用
DSEには、Sparkジョブを送信および管理するためのRESTインターフェイスであるSparkジョブ・サーバーが含まれています。
DataStax Enterpriseには、オープン・ソースのSparkジョブ・サーバーのバンドルされたコピー、Sparkジョブを送信および管理するためのオプションのコンポーネント、Sparkコンテキスト、およびDSE AnalyticsクラスターのJARが含まれています。このバージョンのDSEに含まれているSparkジョブ・サーバーのバージョンについては、リリース・ノートの「コンポーネント」を参照してください。
- ジョブ・サーバーを起動します。
dse spark-jobserver start [any_spark_submit_options]
- ジョブ・サーバーを停止します。
dse spark-jobserver stop
- パッケージ・インストール:/usr/share/dse/spark/spark-jobserver
- tarボール・インストール:installation_location/resources/spark/spark-jobserver
アップロードされたすべてのJAR、一時ファイル、およびログ・ファイルは、ユーザーの$HOME/.spark-jobserveディレクトリーに作成されます。これはSparkジョブ・サーバーを起動したときに最初に作成されるディレクトリーです。
Sparkジョブ・サーバーの有効なユース・ケースには、キャッシュされたデータの共有、キャッシュされたデータの繰り返しクエリー、およびジョブの起動時間の短縮などがあります。
1つのJVMで複数のSparkContext
インスタンスを実行することはお勧めしません。したがって、1つのSparkジョブ・サーバー・インスタンスで送信されたジョブごとに新しいSparkContext
を作成することはお勧めしません。次の2つのSparkジョブ・サーバーの使用法のいずれかをお勧めします。
- 永続コンテキスト・モード:すべてのジョブで共有される1つの事前作成された
SparkContext
。 - JVMごとのコンテキスト:各ジョブには、個別のJVMに独自の
SparkContext
があります。デフォルトでは、H2データベースはSparkジョブ・サーバー関連のメタデータの格納に使用されます。この設定でJVMごとのコンテキストを使用するには、追加の構成が必要です。詳細については、Sparkジョブ・サーバーのドキュメントを参照してください。
注: JVMモードごとのコンテキストでは、Sparkジョブ・サーバークラスパスに存在しないクラスのインスタンスをジョブ結果に含めてはなりません。不明な(サーバーへの)種類の戻り値に関する問題は、次のログ行で認識できます。Association with remote system [akka.tcp://JobServer@127.0.0.1:45153] has failed, address is now gated for [5000] ms. Reason: [<unknown type name is placed here>]
構成の詳細については、Sparkジョブ・サーバーのドキュメントを参照してください。
Sparkジョブ・サーバーからのアプリケーションの作成および送信方法の例については、DSEに付属しているspark-jobserver
デモを参照してください。
- パッケージ・インストール:/usr/share/dse/demos
- tarボール・インストール:installation_location/demos
ジョブ・サーバーとのSSL通信の有効化
ジョブ・サーバーとの接続時にSSL暗号化を有効にするには、サーバー証明書と証明書が含まれているトラストストアが必要です。Sparkジョブ・サーバー・ディレクトリーのdse.confファイルに、次の構成セクションを追加します。
spray.can.server {
ssl-encryption = on
keystore = "path to keystore"
keystorePW = "keystore password"
}
- パッケージ・インストール:/usr/share/dse/spark/spark-jobserver
- tarボール・インストール:installation_location/resources/spark/spark-jobserver
構成の変更を保存した後、ジョブ・サーバーを再起動します。