AlwaysOn SQLサービスの使用
AlwaysOn SQLは、JDBCおよびODBCアプリケーションからのSQLクエリーに応答する高可用性サービスです。
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 |
dse.yaml
dse.yamlファイルの場所は、インストールのタイプによって異なります。| パッケージ・インストール | /etc/dse/dse.yaml |
| tarボール・インストール | installation_location/resources/dse/conf/dse.yaml |
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_msalwayson_sql_status_check_wait_time_mslog_dsefs_dirrunner_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;
