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に認証されたユーザーとして、ベースになるデータベースへのクエリーを実行し、セキュリティを強化します。
- DSE Analyticsノードが有効になっている、実行中のデータ・センター。
- データ・センターの各AnalyticsノードでAlwaysOn SQLが有効になっていること。
- 必要に応じて、すべてのAnalyticsノードのレプリケーション係数を変更しました。
- cassandra.yaml 内の
native_transport_address
を、AlwaysOn SQLクライアントがアクセスできるIPアドレスに設定します。このアドレスは、お使いのネットワーク・トポロジーおよびデプロイのシナリオによって決まります。 - 認証が有効になっている場合は、セキュリティについて構成済みのAlwaysOn SQL。
AlwaysOn SQLがAnalyticsデータ・センター内で有効になっている場合は、そのデータ・センター内のすべてのノードでAlwaysOn SQLが有効になっている必要があります。dsetool ringを使用して、データ・センター内のどのノードがAnalyticsノードかを検索します。
dse client-tool alwayson-sql
コマンドはサーバーを制御します。このコマンドは、--dc
オプションでデータ・センターを指定しない限り、ローカル・データ・センターに対して機能します。
dse client-tool alwayson-sql --dc datacenter_name command
AlwaysOn SQLの有効化
enabled
をtrue
に設定し、 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_RESTART
:stop
または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;