Sparkの起動

Sparkの起動方法はインストールによって異なり、また、SparkモードまたはSearchAnalyticsモードで実行することが必要かどうかによっても異なります。

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

dse.yaml

dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/dse.yaml
tarボール・インストール installation_location/resources/dse/conf/dse.yaml
Sparkを起動する前に、DseClientToolオブジェクトのリモート プロシージャ呼び出し(RPC)の承認を構成します。
注: Sparkを実行するうえで、DseClientToolオブジェクトのRPCパーミッションが必要になります。これは、DseClientToolオブジェクトは、Sparkランチャーによって暗黙的に呼び出されるためです。
注: デフォルトでは、Sparkアプリケーションを実行するにはDSEFSが必要です。SparkがDSEノードで有効になっている場合は、DSEFSを無効にしないでください。DSEFSをデフォルトのファイル・システムとして使用しない確固たる理由がある場合は、別のファイル・システムを使用するようにSparkを再構成します。たとえば、ローカル・ファイル・システムを使用して、spark-daemon-defaults.confで次のプロパティを設定します。
spark.hadoop.fs.defaultFS=file:///
spark.hadoop.hive.metastore.warehouse.dir=file:///tmp/warehouse

Sparkの起動方法はインストールによって異なり、また、SparkモードまたはSearchAnalyticsモードで実行することが必要かどうかによっても異なります。

パッケージ・インストール:
SparkトラッカーをAnalyticsノードのクラスターで起動するには、/etc/default/dseファイルを編集してSPARK_ENABLEDを1に設定します。

DataStax Enterpriseをサービスとして起動すると、ノードがSparkノードとして起動されます。追加のコンポーネントを有効にすることができます。

モード /etc/default/dseのオプション 説明
Spark SPARK_ENABLED=1 Sparkモードでノードを起動します。
SearchAnalyticsモード

SPARK_ENABLED=1 SEARCH_ENABLED=1

SearchAnalyticsモードをプロダクション・クラスターで使用するには、その前に環境でテストする必要があります。 dse.yamlcql_solr_query_paging: driverが必要です。
tarボール・インストール:
SparkトラッカーをAnalyticsノードのクラスターで起動するには、-kオプションを使用します。
installation_location/bin/dse cassandra -k
注: スニッチのプロパティ・ファイルでデータ・センターを構成していない場合、-kを使用して起動されたノードはデフォルトのAnalyticsデータ・センターに自動的に割り当てられます。
追加のコンポーネントを有効にすることができます。
モード オプション 説明
Spark -k Sparkモードでノードを起動します。
SearchAnalyticsモード

-k -s

dse.yamlcql_solr_query_paging: driverが必要です。
例を次に示します。

ノードをSearchAnalyticsモードで起動するには、-kオプションと-sオプションを使用します。

installation_location/bin/dse cassandra -k -s

Sparkオプションを使用してノードを起動すると、dsetool ringコマンドの出力のAnalytics(SM)ワークロードによって示されるとおり、マスターとして指定されたノードが起動します。

dsetool ring
Address          DC                   Rack         Workload             Graph  Status  State    Load             Owns                 Token                                        Health [0,1]
                                                                                                                                      0
10.200.175.149   Analytics            rack1        Analytics(SM)        no     Up      Normal   185 KiB          ?                    -9223372036854775808                         0.90
10.200.175.148   Analytics            rack1        Analytics(SW)        no     Up      Normal   194.5 KiB        ?                    0                                            0.90
Note: you must specify a keyspace to get ownership information.
sudoを使用してDataStax Enterpriseを起動する場合は、クラスターを再起動する前に~./sparkディレクトリーを削除しておきます。
sudo rm -r ~/.spark

Sparkの起動

Sparkノードを起動した後で、dseコマンドを使用してSparkを起動します。

使用法:

パッケージ・インストール: dse spark

tarボール・インストール: installation_location/bin/ dse spark

Cassandra特有のプロパティを使用してSparkを起動することもできます。Sparkは、cassandra.yamlに指定されているlisten_addressにバインドします。

DataStax Enterpriseでは、以下のコマンドをDataStax Enterpriseコマンドラインで使用してSparkを起動できます。

dse spark
対話型のSparkシェルを起動して、基本的なオートコンプリートを提供します。

パッケージ・インストール: dse spark

tarボール・インストール: installation_location/bin/ dse spark

dse spark-submit
spark-submitと同様に、クラスター上でアプリケーションを起動します。このインターフェイスを使用すると、アプリケーションごとに別々の構成を行わなくてもSparkクラスター・マネージャーを使用できます。パッケージ・インストールの構文は次のとおりです。
dse spark-submit --class class_name jar_file other_options
たとえば、dという名前のオプションを定義するクラスを作成する場合は、以下のようなコマンドを入力します。
dse spark-submit --class com.datastax.HttpSparkStream target/HttpSparkStream.jar -d $NUM_SPARK_NODES
注: JARファイルは、DSEFSディレクトリーに配置することができます。DSEFSクラスターがセキュリティで保護されている場合は、「DSEFS権限管理」で説明するように認証情報を提供します。

dse spark-submitコマンドは、Apache Sparkのspark-submit同じオプションをサポートします。たとえば、障害の発生時に再起動するために、superviseオプションを使用してクラスター・モードでアプリケーションを送信するには、次のようにします。

dse spark-submit --deploy-mode cluster --supervise --class com.datastax.HttpSparkStream target/HttpSparkStream.jar -d $NUM_SPARK_NODES
注: dse Sparkコマンドを実行するディレクトリーは、現在のユーザーが書き込み可能でなければなりません。

内部認証はサポートされています。

オプションの環境変数のDSE_USERNAMEDSE_PASSWORDを使用してセキュリティを強化し、ユーザー名とパスワードがSparkログ・ファイルやSpark Web UIのプロセス・リストに表示されないようにします。環境変数を使用してユーザー名とパスワードを指定するには、以下をご使用のBash .profileまたは.bash_profileに追加します。
export DSE_USERNAME=user
export DSE_PASSWORD=secret
こうした環境変数は、すべてのSparkおよびdse client-toolコマンドでサポートされています。
注: DataStaxでは、コマンドラインにユーザー認証情報を渡すのではなく、環境変数を使用することを推奨しています。

認証用の資格情報はさまざまな方法で提供できます。「認証のための資格情報」を参照してください。

Spark URLの指定

DSEでSparkジョブを起動する際、Sparkマスター・アドレスを指定する必要はありません。データ・センターのいずれかのSparkノードに接続する場合、DSEはマスター・アドレスを自動的に検出し、クライアントをマスターに接続します。

以下の形式を使用して、任意のSparkノードのURLを指定します。

dse://[Spark node address[:port number]]?[parameter name=parameter value;]...

デフォルトでは、URLはdse://?で、これはdse://localhost:9042に相当します。URLに設定するパラメーターは、DSEのSpark構成設定から読み取る構成をオーバーライドします。

workpool=ワーク・プール名をURLパラメーターとして追加することで、アプリケーションを実行するワーク・プールを指定できます。たとえば、「dse://1.1.1.1:123?workpool=workpool2」のように指定します。

有効なパラメーターは、CassandraConnectorConf設定で、spark.cassandra.プレフィックスが取り除かれています。たとえば、dse://?connection.local_dc=dc2を指定して、spark.cassandra.connection.local_dcオプションをdc2に設定します。

または、指定した接続点が停止している場合、可用性を高めるために複数のspark.cassandra.connection.hostアドレスを指定するには、dse://1.1.1.1:123?connection.host=1.1.2.2,1.1.3.3のようにします。

connection.hostパラメーターが指定されている場合、標準のURLで提供されているホストは、connection.hostで設定されているホストのリストの先頭に追加されます。標準のURLでポートが指定されている場合は、connection.portパラメーターで設定されているポート番号をオーバーライドします。

dse spark-submit使用時の接続オプションは、マスターURLから、Spark Cassandra Connectorオプション、そしてDSE構成ファイルという順序で取得されます。

Sparkアプリケーションの障害の検出

DSEにはSparkアプリケーションの障害検知機能があり、実行中のSparkアプリケーションがデッドかアライブかを検出します。アプリケーションに障害が発生した場合、アプリケーションはDSE Sparkリソース・マネージャーから削除されます。

障害検知機能は、DSE SparkノードからアプリケーションのSparkドライバーへのオープンTCP接続を保持することによって機能します。データは交換されませんが、通常のTCP接続キープアライブ制御メッセージは送受信されます。接続が中断されると、障害検知機能はappReconnectionTimeoutSecondsタイムアウト値(デフォルトでは5秒)の間、1秒ごとに接続の再取得を試行します。その時間内に接続の再取得に失敗した場合、アプリケーションは削除されます。

カスタム・タイムアウト値は、アプリケーションの送信時にマスターURIにappConnectionTimeoutSeconds=を追加することによって指定します。たとえば、タイムアウト値を10秒に設定します。

dse spark --master dse://?appReconnectionTimeoutSeconds=10