メインコンテンツまでスキップ

shared-data StarRocks with S3

共有データのためのS3の使用

SharedDataIntroからインポート、SharedDataCNconfからインポート、SharedDataUseIntroからインポート、SharedDataUseからインポート

アーキテクチャ

共有データのアーキテクチャ

共有データのStarRocksクラスターをデプロイする

共有データのStarRocksクラスターのデプロイは、共有無しのStarRocksクラスターのデプロイに似ています。唯一の違いは、共有データクラスターではBEではなくCNをデプロイする必要があることです。このセクションでは、共有データのStarRocksクラスターをデプロイする際に、FEとCNの構成ファイル(fe.confおよびcn.conf)に追加する必要がある追加の設定項目のみをリストアップしています。StarRocksクラスターをデプロイする詳細な手順については、StarRocksのデプロイを参照してください。

注意

このドキュメントの次のセクションで共有ストレージの設定が完了するまで、クラスターを起動しないでください。

共有データのStarRocksのFEノードを構成する

クラスターを起動する前に、FEノードとCNノードを構成してください。以下に例となる設定を紹介します。その後、各パラメータの詳細を説明します。

S3の例のFEの設定

これらは、FEノードのfe.confファイルに追加する共有データの例です。 使用しているAWSの認証方法によって例は異なります。

デフォルトの認証資格情報

run_mode = shared_data
cloud_native_meta_port = <meta_port>
cloud_native_storage_type = S3

# 例:testbucket/subpath
aws_s3_path = <s3_path>

# 例:us-west-2
aws_s3_region = <region>

# 例:https://s3.us-west-2.amazonaws.com
aws_s3_endpoint = <endpoint_url>

aws_s3_use_aws_sdk_default_behavior = true

# デフォルトでオブジェクトストレージに作成された
# ストレージを使用しない場合は、falseに設定します
enable_load_volume_from_conf = true

IAMユーザー認証情報

run_mode = shared_data
cloud_native_meta_port = <meta_port>
cloud_native_storage_type = S3

# 例:testbucket/subpath
aws_s3_path = <s3_path>

# 例:us-west-2
aws_s3_region = <region>

# S3オブジェクトの読み取り/書き込みのための資格情報
aws_s3_access_key = <access_key>
aws_s3_secret_key = <secret_key>

# デフォルトでオブジェクトストレージに作成された
# ストレージを使用しない場合は、falseに設定します
enable_load_volume_from_conf = true

インスタンスプロファイル

run_mode = shared_data
cloud_native_meta_port = <meta_port>
cloud_native_storage_type = S3

# 例:testbucket/subpath
aws_s3_path = <s3_path>

# 例:us-west-2
aws_s3_region = <region>

# 例:https://s3.us-west-2.amazonaws.com
aws_s3_endpoint = <endpoint_url>

aws_s3_use_instance_profile = true

# デフォルトでオブジェクトストレージに作成された
# ストレージを使用しない場合は、falseに設定します
enable_load_volume_from_conf = true

仮定されたロール

run_mode = shared_data
cloud_native_meta_port = <meta_port>
cloud_native_storage_type = S3

# 例:testbucket/subpath
aws_s3_path = <s3_path>

# 例:us-west-2
aws_s3_region = <region>

# 例:https://s3.us-west-2.amazonaws.com
aws_s3_endpoint = <endpoint_url>

aws_s3_use_instance_profile = true
aws_s3_iam_role_arn = <role_arn>

# デフォルトでオブジェクトストレージに作成された
# ストレージを使用しない場合は、falseに設定します
enable_load_volume_from_conf = true

外部アカウントからの仮定されたロール

run_mode = shared_data
cloud_native_meta_port = <meta_port>
cloud_native_storage_type = S3

# 例:testbucket/subpath
aws_s3_path = <s3_path>

# 例:us-west-2
aws_s3_region = <region>

# 例:https://s3.us-west-2.amazonaws.com
aws_s3_endpoint = <endpoint_url>

aws_s3_use_instance_profile = true
aws_s3_iam_role_arn = <role_arn>
aws_s3_external_id = <external_id>

# デフォルトでオブジェクトストレージに作成された
# ストレージを使用しない場合は、falseに設定します
enable_load_volume_from_conf = true

S3と共有ストレージに関連するFEのすべてのパラメータ

run_mode

StarRocksクラスターの実行モードです。有効な値:

  • shared_data
  • shared_nothing (デフォルト)

注意

StarRocksクラスターでは、shared_dataモードとshared_nothingモードを同時に使用することはできません。混合デプロイはサポートされていません。

クラスターがデプロイされた後にrun_modeを変更しないでください。そうしないと、クラスターが再起動に失敗します。shared-nothingクラスターからshared-dataクラスターまたはその逆の変換はサポートされていません。

cloud_native_meta_port

クラウドネイティブメタサービスのRPCポート。

  • デフォルト: 6090

enable_load_volume_from_conf

FEの構成ファイルで指定されたオブジェクトストレージ関連のプロパティを使用して、StarRocksがデフォルトストレージボリュームを作成することを許可するかどうか。有効な値:

  • true (デフォルト) 新しい共有データクラスターを作成する際に、この項目をtrueとして指定すると、StarRocksはFEの構成ファイルのオブジェクトストレージ関連のプロパティを使用して、ビルトインストレージボリュームbuiltin_storage_volumeを作成し、これをデフォルトストレージボリュームとして設定します。ただし、オブジェクトストレージ関連のプロパティが指定されていない場合、StarRocksは起動に失敗します。
  • false 新しい共有データクラスターを作成する際に、この項目をfalseとして指定すると、StarRocksはビルトインストレージボリュームを作成せずに直接起動します。StarRocksでオブジェクトを作成する前に、手動でストレージボリュームを作成し、デフォルトストレージボリュームとして設定する必要があります。詳細については、デフォルトのストレージボリュームを作成するを参照してください。

v3.1.0以降でサポートされています。

注意

既存の共有データクラスターをv3.0からアップグレードする場合は、アップグレードの間、この項目をtrueのままにすることを強くお勧めします。この項目をfalseに指定すると、アップグレード前に作成したデータベースとテーブルは読み取り専用になり、データをロードすることはできません。

cloud_native_storage_type

使用しているオブジェクトストレージのタイプ。共有データモードでは、StarRocksはAzure Blob(v3.1.1以降でサポート)およびS3プロトコルに対応したオブジェクトストレージ(AWS S3、Google GCP、MinIOなど)にデータを格納することができます。有効な値:

  • S3 (デフォルト)
  • AZBLOB

aws_s3_path

データを格納するために使用するS3パス。S3バケットの名前とそれの下のサブパス(ある場合)で構成されます。

aws_s3_endpoint

S3バケットにアクセスするために使用されるエンドポイント。例: https://s3.us-west-2.amazonaws.com

aws_s3_region

S3バケットが存在するリージョン。例: us-west-2

aws_s3_use_aws_sdk_default_behavior

AWS SDKのデフォルトの認証プロバイダーチェーンを使用するかどうか。有効な値:

  • true
  • false (デフォルト)

aws_s3_use_instance_profile

S3へのアクセスにInstance ProfileおよびAssumed Roleを使用するかどうか。有効な値:

  • true
  • false (デフォルト)

S3へのアクセスにIAMユーザーベースの認証情報(アクセスキーとシークレットキー)を使用する場合は、この項目をfalseに設定し、aws_s3_access_keyaws_s3_secret_keyを指定する必要があります。

S3へのアクセスにインスタンスプロファイルを使用する場合は、この項目をtrueに設定する必要があります。

S3へのアクセスにAssumed Roleを使用する場合は、この項目をtrueに設定し、aws_s3_iam_role_arnを指定する必要があります。

外部のAWSアカウントを使用する場合、aws_s3_external_idを指定する必要があります。

aws_s3_access_key

S3バケットにアクセスするために使用されるAccess Key ID。

aws_s3_secret_key

S3バケットにアクセスするために使用されるSecret Access Key。

aws_s3_iam_role_arn

S3バケットに対して特権を持つIAMロールのARN。

aws_s3_external_id

S3バケットへのクロスアカウントアクセスに使用されるAWSアカウントの外部ID。

注意

共有データのStarRocksクラスターが作成された後、認証関連の設定項目のみを変更できます。元のストレージパス関連の設定項目を変更した場合、変更前に作成したデータベースとテーブルは読み取り専用になり、データをロードすることはできません。

クラスターが作成された後に手動でデフォルトストレージボリュームを作成する場合は、次の設定項目のみを追加する必要があります。

run_mode = shared_data
cloud_native_meta_port = <meta_port>
enable_load_volume_from_conf = false

共有データのStarRocksのCNノードを構成する

共有データのStarRocksクラスターの使用方法

以下は、IAMユーザーベースの認証情報(アクセスキーとシークレットキー)を使用して、AWS S3バケットdefaultbucketに対してストレージボリュームdef_volumeを作成し、ストレージボリュームを有効にし、デフォルトストレージボリュームとして設定する例です。

CREATE STORAGE VOLUME def_volume
TYPE = S3
LOCATIONS = ("s3://defaultbucket/test/")
PROPERTIES
(
"enabled" = "true",
"aws.s3.region" = "us-west-2",
"aws.s3.endpoint" = "https://s3.us-west-2.amazonaws.com",
"aws.s3.use_aws_sdk_default_behavior" = "false",
"aws.s3.use_instance_profile" = "false",
"aws.s3.access_key" = "xxxxxxxxxx",
"aws.s3.secret_key" = "yyyyyyyyyy"
);

SET def_volume AS DEFAULT STORAGE VOLUME;