AlwaysOn SQLサービスの使用

AlwaysOn SQLは、JDBCおよびODBCアプリケーションからのSQLクエリーに応答する高可用性サービスです。

dse.yaml

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

cassandra.yaml

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

spark-alwayson-sql.conf

AlwaysOn SQLを使用する場合のspark-alwayson-sql.confファイルのデフォルトの場所:
パッケージ・インストール /etc/dse/spark/spark-alwayson-sql.conf
tarボール・インストール installation_location/resources/spark/conf/spark-alwayson-sql.conf

AlwaysOn SQLは、JDBCおよびODBCアプリケーションからのSQLクエリーに応答する高可用性サービスです。AlwaysOn SQLは、デフォルトで無効になっています。Spark SQL Thriftserverの上に構築されていますが、単一障害点がないようにインスタンス間のフェールオーバーとキャッシングを提供します。AlwaysOn SQLは、DSEの残りの部分と同じユーザー管理を利用して、AlwaysOn SQLに認証されたユーザーとして、ベースになるデータベースへのクエリーを実行し、セキュリティを強化します。

AlwaysOn SQLを実行するには、以下のことが必要です。

Lifecycle Managerを使用すると、管理されているクラスターでAlwaysOn SQLを有効にし、構成することができます。

AlwaysOn SQLがAnalyticsデータ・センター内で有効になっている場合は、そのデータ・センター内のすべてのノードでAlwaysOn SQLが有効になっている必要があります。dsetool ringを使用して、データ・センター内のどのノードがAnalyticsノードかを検索します。

注: AlwaysOn SQLは、同じサーバー上で複数のDSEインスタンスを持つDSEマルチインスタンスまたはその他のデプロイメントを使用する場合にはサポートされません。

dse client-tool alwayson-sqlコマンドはサーバーを制御します。このコマンドは、--dcオプションでデータ・センターを指定しない限り、ローカル・データ・センターに対して機能します。

dse client-tool alwayson-sql --dc datacenter_name command

AlwaysOn SQLの有効化

enabledtrueに設定し、 dse.yaml内のAlwaysOn SQLオプションのコメントを解除します。

AlwaysOn SQLの構成

alwayson_sql_optionsセクション(dse.yaml内)には、「AlwaysOn SQLオプション」で詳しく説明しているように、ポート、タイムアウト値、ログの場所、およびその他のSparkまたはHiveの構成設定が含まれています。その他の構成オプションはspark-alwayson-sql.confにあります。

AlwaysOn SQLは、cassandra.yaml内のnative_transport_addressにバインドされます。

AlwaysOn SQLの実行中に、dse.yaml 内の構成設定を変更した場合は、次のように入力して、サーバーに新しい構成を選択できます。

dse client-tool alwayson-sql reconfig
reconfigを使用して、次の設定を変更できます。
  • reserve_port_wait_time_ms
  • alwayson_sql_status_check_wait_time_ms
  • log_dsefs_dir
  • runner_max_errors

enabledオプション以外の、他のオプションを変更するには、restartが必要です。AlwaysOn SQLを有効または無効にするには、DSE を再起動する必要があります。

この spark-alwayson-sql.conf ファイルには、プロパティとしてSparkとHiveの設定が含まれています。AlwaysOn SQLを起動すると、dse spark-submitで起動された他のSparkアプリケーションと同様に、Sparkプロパティに関してspark-alwayson-sql.conf がスキャンされます。spark.hiveで始まるプロパティは、--hiveconfを使用してプロパティとして送信され、spark.プレフィックスが削除されます。

たとえば、 spark-alwayson-sql.conf に次の設定がある場合:

spark.hive.server2.table.type.mapping CLASSIC

この設定は、AlwaysOn SQLが起動されると、--hiveconf hive.server2.table.type.mapping=CLASSICに変換されます。

DSE Analytics Soloデータ・センターでのAlwaysOnSQLの構成

AlwaysOn SQLがDSE Analytics Soloデータ・センターで使用されている場合は、spark-alwayson-sql.conf を変更して、DSE Analytics Soloデータ・センターを使用してSparkを構成します。次の例では、トランザクション・データ・センター名はdc0で、DSE Analytics Soloデータ・センターはdc1です。

spark.masterの下で、DSE Analytics Soloデータ・センターに接続するようにSpark URIを設定します。

spark.master=dse://?connection.local_dc=dc1

spark.cassandra.connection.local_dcプロパティをspark-alwayson-sql.conf に追加し、トランザクション・データ・センターの名前に設定します。

spark.cassandra.connection.local_dc=dc0

AlwaysOn SQLの起動と停止

AlwaysOn SQLを有効にした場合は、クラスターの起動時に起動します。AlwaysOn SQLが有効で、DSE が再起動されると、AlwaysOn SQLの以前の状態に関係なくAlwaysOn SQLが起動されます。構成を変更する場合など、サーバーが停止している場合にのみ、サーバーを明示的に起動する必要があります。

AlwaysOn SQLサービスを開始するには、次のようにします。

dse client-tool alwayson-sql start

特定のデータ・センターでサーバーを起動するには、--dcオプションを使用してデータ・センター名を指定します。

dse client-tool alwayson-sql --dc dc-west start

AlwaysOn SQLサービスを完全に停止するには、次のようにします。

dse client-tool alwayson-sql stop

stopコマンドを発行した後で、サーバーを手動で起動する必要があります。

実行中のサーバーを再起動するには、次のようにします。
dse client-tool alwayson-sql restart

AlwaysOn SQLのステータス・チェック

AlwaysOn SQLのステータスを検索するには、dse-client-toolを使用してstatusコマンドを発行します。

dse client-tool alwayson-sql status

また、http://ノード名またはIPアドレス:AlwaysOn SQL Web UIポートにアクセスして、Webブラウザーでステータスを表示することもできます。デフォルトでは、ポートは9077です。たとえば、AlwaysOn SQLが有効になっているAnalyticsノードのIPアドレスが10.10.10.1である場合は、http://10.10.10.1:9077に移動します。

返されるステータスは、次のいずれかです。

  • RUNNING:サーバーが実行中で、クライアントの要求を受け入れる準備が整っています。
  • STOPPED_AUTO_RESTART:サーバーは起動されていますが、クライアントの要求を受け入れる準備はまだできていません。
  • STOPPED_MANUAL_RESTARTstopまたはrestartコマンドによってサーバーが停止されました。サーバーにrestartコマンドが発行され、 サーバーを再び起動すると、ステータスがSTOPPED_AUTO_RESTARTに変わります。
  • STARTING:サーバーは実際に起動していますが、クライアントの要求を受け入れる準備はまだできていません。

Spark SQLクエリー内のテーブルのキャッシング

パフォーマンスを向上させるには、CACHE TABLEディレクティブを使用してRAMにキャッシュするテーブルを指定できます。永続的なキャッシュされたテーブルは、サーバーの再起動時に再キャッシュされます。

クライアントを介してCACHE TABLE Spark SQLコマンドを発行することで、既存のテーブルをキャッシュできます。

CACHE TABLE keyspace_name.table_name;
CACHE TABLE keyspace_name.table_name AS select statement;

一時キャッシュ・テーブルは、作成されたセッションに対してのみ有効であり、サーバーの再起動時には再作成されません。

CREATE CACHE TABLEディレクティブとSELECTクエリーを使用して、永続的キャッシュ・テーブルを作成します。

CREATE CACHE TABLE keyspace_name.table_name AS select_statement;

キャッシュされたテーブルは、UNCACHE TABLEおよびCLEAR CACHEディレクティブを使用して破棄できます。

UNCACHE TABLE keyspace_name.table_name;

CLEAR CACHEディレクティブを使用して、キャッシュされたすべてのテーブルを削除します。

CLEAR CACHE;