パブリッククラウド環境への ScalarDB Analytics のデプロイ
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、パブリッククラウド環境に ScalarDB Analytics をデプロイする方法について説明します。ScalarDB Analytics は2つの主要なコンポーネントで構成されています: ScalarDB Analytics サーバーと Apache Spark です。このガイドでは、Spark 環境として Amazon EMR または Databricks を選択できます。
詳細については、ScalarDB Analytics の設計を参照してください。
ScalarDB Analytics server のデプロイ
ScalarDB Analytics には、メタデータとデータソース接続を管理する catalog server が必要です。Catalog server は、Kubernetes クラスター上で Helm Chart を使用してデプロイする必要があります。
詳細なデプロイ手順については、AWS Marketplace を通じて Scalar 製品をインストールする方法を参照してください。
Catalog server をデプロイした後、Spark 設定のために以下の情報をメモしてください:
- catalog server のホストアドレス
- カタログポート (デフォルト: 11051)
- メータリングポート (デフォルト: 11052)
Spark と ScalarDB Analytics のデプロイ
Catalog server をデプロイした後、マネージド Spark サービスを使用して Spark と ScalarDB Analytics を設定およびデプロイできます。
サポートされているマネージド Spark サービスとそのアプリケーションタイプ
ScalarDB Analytics は以下のマネージド Spark サ ービスとアプリケーションタイプをサポートしています。
| パブリッククラウドサービス | Spark ドライバー | Spark Connect | JDBC |
|---|---|---|---|
| Amazon EMR (EMR on EC2) | ✅ | ✅ | ❌ |
| Databricks | ✅ | ❌ | ✅ |
設定とデプロイ
パブリッククラウド環境を選択し、指示に従って Spark と ScalarDB Analytics を設定およびデプロイしてください。
- Amazon EMR
- Databricks
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.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.3)<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 サーバーのインバウンドトラフィックを許可する
- Spark Connect サーバーのインバウンドトラフィックを許可するセキュリティグループを作成します (デフォルトはポート15001)。
- 「Amazon EMR サービスロール」のロールがセキュリティグループを EMR クラスターのプライマリノードにアタッチできるようにします。
- EMR クラスターを起動するときに、「追加のセキュリティグループ」としてセキュリティグループを EMR クラスターのプライマリノードに追加します。
ブートストラップアクションを介した Spark Connect サーバー の起動
- 次のように 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 のバージョン
- スクリプトファイルを S3 にアップロードします。
- 「Amazon の EMR 用 EC2 インスタンスプロファイル」のロールがS3にアップロードされたスクリプトファイルにアクセスできるようにします。
- EMR クラスターを起動するときに、アップロードされたスクリプトファイルを「ブートストラップアクション」に追加します。
分析クエリの実行
Spark Connect サーバーのリモート URL (sc://<PRIMARY_NODE_PUBLIC_HOSTNAME>:15001) を使用して、どこからでも Spark Connect を介して Spark アプリケーションを実行できます。
Spark Connect を使用した Spark アプリケーションの作成方法の詳細については、Spark Connect アプリケーションを参照してください。
Databricks の使用
ScalarDB Analytics を通じて分析クエリを実行するために Databricks を使用できます。
Databricks は Apache Spark の修正版を提供しており、オリジナルの Apache Spark とは異なる動作をすることに注意してください。
ScalarDB Analytics ライブラリ JAR を読み込むための init script の準備
-
Maven リポジトリから ScalarDB Analytics ライブラリ JAR ファイルをダウンロードします。Spark、Scala、ScalarDB のバージョンに基づいて適切な JAR ファイルを選択してください:
-
JAR ファイルを Databricks ワークスペースにアップロードします。
-
以下のような init script を作成し、
<PATH_TO_YOUR_JAR_FILE_IN_WORKSPACE>を Databricks ワークスペース内の JAR ファイルのパスに置き換えてください:#!/bin/bash
# Target directories
TARGET_DIRECTORIES=("/databricks/jars" "/databricks/hive_metastore_jars")
JAR_PATH="<PATH_TO_YOUR_JAR_FILE_IN_WORKSPACE>"
# Copy the JAR file to the target directories
for TARGET_DIR in "${TARGET_DIRECTORIES[@]}"; do
mkdir -p "$TARGET_DIR"
cp "$JAR_PATH" "$TARGET_DIR/"
done -
init script を Databricks ワークスペースにアップロードします。
Databricks コンピュートの起動
ScalarDB Analytics は Databricks の汎用コン ピュートで動作します。コンピュートを起動する際、ScalarDB Analytics を有効にするために以下のようにコンピュートを設定する必要があります:
-
ComputeメニューでCreate computeを選択します。 -
PolicyドロップダウンメニューからUnrestrictedを選択します。 -
Spark 3.4 または 3.5 をサポートする適切な Databricks ランタイムバージョンを選択します。
-
Advancedセクションに移動します。Access modeタブで、アクセスモードとしてManualを選択し、No isolation sharedを選択します。 -
Advancedセクションで、Sparkタブを選択し、Spark configに以下の設定を入力します:spark.extraListeners com.scalar.db.analytics.spark.metering.ScalarDbAnalyticsListener
spark.sql.catalog.<CATALOG_NAME> com.scalar.db.analytics.spark.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プレースホルダーを置き換えてください:
<CATALOG_NAME>: カタログの名前。これは ScalarDB Analytics サーバー上で作成されたカタログと一致する必要があります。<CATALOG_SERVER_HOST>: ScalarDB Analytics サーバーのホストアドレス
-
Advancedセクションで、init scriptsタブを選択し、アップロードしたワークスペース内の init script のパスを指定します。 -
Createを選択します。
Spark ドライバーを介した分析クエリの実行
適切に設定された Databricks コンピュートで Spark アプリケーションを Databricks Notebook または Databricks Jobs で実行して、ScalarDB Analytics 内のテーブルにアクセスできます。Spark アプリケーションを実行するには、Pyspark、Scala、または Spark SQL アプリケーションを Databricks Notebook に移行するか、Databricks Jobs を使用して Spark アプリケーションを実行できます。ScalarDB Analytics は Notebook、Python、JAR、および SQL のタスクタイプで動作します。
Databricks Jobs の使用方法の詳細については、Databricks ジョブのドキュメントを参照してください。
JDBC ドライバーを介した分析クエリの実行
Databricks はコンピュート上で SQL ジョブを実行するための JDBC をサポートしています。コンピュートが起動した後、Advanced > JDBC/ODBC タブでコンピュートの JDBC URL を取得できます。JDBC を使用してコンピュートに接続するには、アプリケーションの依存関係に Databricks JDBC ドライバーを追加する必要があります。例えば、Gradle を使用している場合は、使用したい Databricks JDBC ドライバーのバージョンで <DRIVER_VERSION> を置き換えて、build.gradle ファイルに以下の依存関係を追加できます:
implementation("com.databricks:databricks-jdbc:<DRIVER_VERSION>")
その後、JDBC アプリケーションで一般的なように、JDBC URL (<YOUR_COMPUTE_JDBC_URL>) を使用して JDBC でコンピュートに接続できます。
Class.forName("com.databricks.client.jdbc.Driver");
String url = "<YOUR_COMPUTE_JDBC_URL>";
Connection conn = DriverManager.getConnection(url);
Databricks で JDBC を使用する方法の詳細については、Databricks JDBC ドライバードキュメントを参照してください。