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 |
DseClientTool
オブジェクトのリモート プロシージャ呼び出し(RPC)の承認を構成します。 DseClientTool
オブジェクトのRPCパーミッションが必要になります。これは、DseClientTool
オブジェクトは、Sparkランチャーによって暗黙的に呼び出されるためです。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.yamlにcql_solr_query_paging: driverが必要です。 - tarボール・インストール:
- SparkトラッカーをAnalyticsノードのクラスターで起動するには、-kオプションを使用します。
installation_location/bin/dse cassandra -k
注: スニッチのプロパティ・ファイルでデータ・センターを構成していない場合、-kを使用して起動されたノードはデフォルトのAnalyticsデータ・センターに自動的に割り当てられます。追加のコンポーネントを有効にすることができます。
例を次に示します。モード オプション 説明 Spark -k Sparkモードでノードを起動します。 SearchAnalyticsモード -k -s
dse.yamlにcql_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_USERNAME
とDSE_PASSWORD
を使用してセキュリティを強化し、ユーザー名とパスワードがSparkログ・ファイルやSpark Web UIのプロセス・リストに表示されないようにします。環境変数を使用してユーザー名とパスワードを指定するには、以下をご使用のBash .profileまたは.bash_profileに追加します。export DSE_USERNAME=user export DSE_PASSWORD=secretこうした環境変数は、すべてのSparkおよびdse client-toolコマンドでサポートされています。
認証用の資格情報はさまざまな方法で提供できます。「認証のための資格情報」を参照してください。
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