メインコンテンツまでスキップ
バージョン: 3.16

パブリッククラウド環境への ScalarDB Analytics のデプロイ

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

このガイドでは、パブリッククラウド環境に ScalarDB Analytics をデプロイする方法について説明します。ScalarDB Analytics は 2 つの主要なコンポーネントで構成されています:ScalarDB Analytics サーバーと Apache Spark です。このガイドでは、Spark 環境として Amazon EMR または Databricks を選択できます。

詳細については、ScalarDB Analytics の設計を参照してください。

ScalarDB Analytics catalog server のデプロイ

ScalarDB Analytics には、メタデータとデータソース接続を管理する catalog server が必要です。Catalog server は、Kubernetes クラスター上で Helm チャートを使用してデプロイする必要があります。

詳細なデプロイ手順については、[TBD - Helm チャートデプロイメントガイド]を参照してください。

Catalog server をデプロイした後、Spark 設定のために以下の情報をメモしてください:

  • catalog server のホストアドレス
  • カタログポート(デフォルト:11051)
  • メータリングポート(デフォルト:11052)

Spark と ScalarDB Analytics のデプロイ

Catalog server をデプロイした後、マネージド Spark サービスを使用して Spark と ScalarDB Analytics を設定およびデプロイできます。

サポートされているマネージド Spark サービスとそのアプリケーションタイプ

ScalarDB Analytics は以下のマネージド Spark サービスとアプリケーションタイプをサポートしています。

パブリッククラウドサービスSpark ドライバーSpark ConnectJDBC
Amazon EMR (EMR on EC2)
Databricks

設定とデプロイ

パブリッククラウド環境を選択し、指示に従って Spark と ScalarDB Analytics を設定およびデプロイしてください。

Amazon EMR の使用

ScalarDB Analytics を通じて分析クエリを実行するために Amazon EMR(EMR on EC2)を使用できます。EMR クラスターを起動する基本については、AWS EMR on EC2 ドキュメントを参照してください。

ScalarDB Analytics の設定

ScalarDB Analytics を有効にするには、EMR クラスターを起動するときにソフトウェア設定に次の構成を追加する必要があります。括弧内の内容を必ず置き換えてください:

[
{
"Classification": "spark-defaults",
"Properties": {
"spark.jars.packages": "com.scalar-labs:scalardb-analytics-spark-all-<SPARK_VERSION>_<SCALA_VERSION>:<SCALARDB_ANALYTICS_VERSION>",
"spark.extraListeners": "com.scalar.db.analytics.spark.metering.ScalarDbAnalyticsListener",
"spark.sql.catalog.<CATALOG_NAME>": "com.scalar.db.analytics.spark.catalog.ScalarDBAnalyticsCatalog",
"spark.sql.catalog.<CATALOG_NAME>.server.host": "<CATALOG_SERVER_HOST>",
"spark.sql.catalog.<CATALOG_NAME>.server.catalog.port": "11051",
"spark.sql.catalog.<CATALOG_NAME>.server.metering.port": "11052"
}
}
]

括弧内の内容は以下のように変更してください:

  • <SPARK_VERSION>: Spark のバージョン(例:3.5 または 3.4
  • <SCALA_VERSION>: Spark のビルドに使用される Scala のバージョン(例:2.13 または 2.12
  • <SCALARDB_ANALYTICS_VERSION>: ScalarDB Analytics のバージョン(例:3.16.0
  • <CATALOG_NAME>: カタログの名前。これは ScalarDB Analytics サーバー上で作成されたカタログと一致する必要があります。
  • <CATALOG_SERVER_HOST>: ScalarDB Analytics サーバーのホストアドレス

詳細については、ScalarDB Analytics のセットアップのための Spark 設定を参照してください。

Spark ドライバーを介した分析クエリの実行

EMR Spark クラスターが起動した後、ssh を使用して EMR クラスターのプライマリノードに接続し、Spark アプリケーションを実行できます。Spark ドライバーアプリケーションの作成方法の詳細については、Spark ドライバーアプリケーションを参照してください。

Spark Connect を介した分析クエリの実行

Spark Connect を使用して、起動した EMR クラスターを使用して Spark アプリケーションをリモートで実行できます。

まず、Spark ドライバーアプリケーションと同じようにソフトウェア設定を構成する必要があります。また、Spark Connect を有効にするために次の設定も行う必要があります。

Spark Connect サーバーのインバウンドトラフィックを許可する
  1. Spark Connect サーバーのインバウンドトラフィックを許可するセキュリティグループを作成します(デフォルトはポート15001)。
  2. 「Amazon EMR サービスロール」のロールがセキュリティグループを EMR クラスターのプライマリノードにアタッチできるようにします。
  3. EMR クラスターを起動するときに、「追加のセキュリティグループ」としてセキュリティグループを EMR クラスターのプライマリノードに追加します。
ブートストラップアクションを介した Spark Connect サーバーの起動
  1. 次のように Spark Connect サーバーを起動するためのスクリプトファイルを作成します:
#!/usr/bin/env bash

set -eu -o pipefail

cd /var/lib/spark

sudo -u spark /usr/lib/spark/sbin/start-connect-server.sh --packages org.apache.spark:spark-connect_<SCALA_VERSION>:<SPARK_FULL_VERSION>,com.scalar-labs:scalardb-analytics-spark-all-<SPARK_VERSION>_<SCALA_VERSION>:<SCALARDB_ANALYTICS_VERSION>

括弧内の内容は以下のように変更してください:

  • <SCALA_VERSION>: Spark インストールに合わせた Scala のメジャーおよびマイナーバージョン(2.12 や 2.13 など)
  • <SPARK_FULL_VERSION>: 使用している Spark の完全なバージョン(3.5.3 など)
  • <SPARK_VERSION>: 使用している Spark のメジャーおよびマイナーバージョン(3.5 など)
  • <SCALARDB_ANALYTICS_VERSION>: ScalarDB Analytics のバージョン
  1. スクリプトファイルを S3 にアップロードします。
  2. 「Amazon の EMR 用 EC2 インスタンスプロファイル」のロールがS3にアップロードされたスクリプトファイルにアクセスできるようにします。
  3. EMR クラスターを起動するときに、アップロードされたスクリプトファイルを「ブートストラップアクション」に追加します。
分析クエリの実行

Spark Connect サーバーのリモート URL(sc://<PRIMARY_NODE_PUBLIC_HOSTNAME>:15001)を使用して、どこからでも Spark Connect を介して Spark アプリケーションを実行できます。

Spark Connect を使用した Spark アプリケーションの作成方法の詳細については、Spark Connect アプリケーションを参照してください。