機能サポート: データレイク分析
v2.3以降、StarRocksは外部カタログを介して外部データソースの管理とデータレイク内のデータ分析をサポートしています。
このドキュメントでは、外部カタログの機能サポートと関連する機能のサポートバージョンについて説明します。
共通機能
このセクションでは、External Catalog 機能の共通機能をリストアップしています。これには、ストレージシステム、ファイルリーダー、認証情報、権限、および Data Cache が含まれます。
外部ストレージシステム
| ストレージシステム | サポートバージョン |
|---|---|
| HDFS | v2.3+ |
| AWS S3 | v2.3+ |
| Microsoft Azure Storage | v3.0+ |
| Google GCS | v3.0+ |
| Alibaba Cloud OSS | v3.1+ |
| Huawei Cloud OBS | v3.1+ |
| Tencent Cloud COS | v3.1+ |
| Volcengine TOS | v3.1+ |
| Kingsoft Cloud KS3 | v3.1+ |
| MinIO | v3.1+ |
| Ceph S3 | v3.1+ |
上記のストレージシステムに対するネイティブサポートに加えて、StarRocksは以下のタイプのオブジェクトストレージサービスもサポートしています:
- COS Cloud HDFS、OSS-HDFS、OBS PFSなどのHDFS互換オブジェクトストレージサービス
- 説明: BEの設定項目
fallback_to_hadoop_fs_listにオブジェクトストレージのURIプレフィックスを指定し、クラウドベンダーが提供する.jarパッケージをディレクトリ /lib/hadoop/hdfs/ にアップロードする必要があります。fallback_to_hadoop_fs_listに指定したプレフィックスを使用して外部カタログを作成する必要があります。 - サポートバージョン: v3.1.9+, v3.2.4+
- 説明: BEの設定項目
- 上記にリストされていないS3互換オブジェクトストレージサービス
- 説明: BEの設定項目
s3_compatible_fs_listにオブジェクトストレージのURIプレフィックスを指定する必要があります。s3_compatible_fs_listに指定したプレフィックスを使用して外部カタログを作成する必要があります。 - サポートバージョン: v3.1.9+, v3.2.4+
- 説明: BEの設定項目
圧縮フォーマット
このセクションでは、各ファイルフォーマットがサポートする圧縮フォーマットのみをリストしています。各外部カタログがサポートするファイルフォーマットについては、対応する外部カタログのセクションを参照してください。
| ファイルフォーマット | 圧縮フォーマット |
|---|---|
| Parquet | NO_COMPRESSION, SNAPPY, LZ4, ZSTD, GZIP, LZO (v3.1.5+) |
| ORC | NO_COMPRESSION, ZLIB, SNAPPY, LZO, LZ4, ZSTD |
| Text | NO_COMPRESSION, LZO (v3.1.5+) |
| Avro | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+) |
| RCFile | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), GZIP (v3.2.1+) |
| SequenceFile | NO_COMPRESSION (v3.2.1+), DEFLATE (v3.2.1+), SNAPPY (v3.2.1+), BZIP2 (v3.2.1+), GZIP (v3.2.1+) |
Avro、RCFile、および SequenceFile のファイルフォーマットは、StarRocks 内のネイティブリーダーではなく、Java Native Interface (JNI) によって読み取られます。そのため、これらのファイルフォーマットの読み取りパフォーマンスは、Parquet および ORC よりも劣る可能性があります。
管理、認証情報、およびアクセス制御
| 機能 | 説明 | サポートバージョン |
|---|---|---|
| Information Schema | 外部カタログのための Information Schema をサポートします。 | v3.2+ |
| データレイクアクセス制御 | 外部カタログのために StarRocks のネイティブ RBAC モデルをサポートします。外部カタログ内のデータベース、テーブル、およびビュー(現在、Hive ビューと Iceberge ビューのみ)の権限を、StarRocks のデフォルトカタログ内のものと同様に管理できます。 | v3.0+ |
| Apache Ranger 上の外部サービスの再利用 | アクセス制御のために Apache Ranger 上の外部サービス(Hive Service など)の再利用をサポートします。 | v3.1.9+ |
| Kerberos 認証 | HDFS または Hive Metastore のための Kerberos 認証をサポートします。 | v2.3+ |
Data Cache
| 機能 | 説明 | サポートバージョン |
|---|---|---|
| Data Cache (Block Cache) | v2.5以降、StarRocks は CacheLib を使用して実装された Data Cache 機能(当時は Block Cache と呼ばれていました)をサポートし、その拡張性のための最適化の可能性が限られていました。v3.0以降、StarRocks はキャッシュ実装をリファクタリングし、Data Cache に新機能を追加し、各バージョンでより良いパフォーマンスを実現しました。 | v2.5+ |
| ローカルディスク間のデータ再バランス | データの偏りが10%未満に制御されるようにするためのデータ再バランス戦略をサポートします。 | v3.2+ |
| Block Cache を Data Cache に置き換え | パラメータの変更 BE 設定:
| v3.2+ |
| Data Cache を監視する API の新しいメトリクス | Data Cache を監視する個別の API をサポートし、キャッシュ容量とヒットを含みます。Data Cache メトリクスは、インターフェース http://${BE_HOST}:${BE_HTTP_PORT}/api/datacache/stat を介して表示できます。 | v3.2.3+ |
| Data Cache のためのメモリトラッカー | Data Cache のためのメモリトラッカーをサポートします。メモリ関連のメトリクスは、インターフェース http://${BE_HOST}:${BE_HTTP_PORT}/mem_tracker を介して表示できます。 | v3.1.8+ |
| Data Cache ウォームアップ | CACHE SELECT を実行することで、リモートストレージから必要なデータを事前にキャッシュに積極的に取り込み、最初のクエリがデータを取得するのに時間がかかりすぎないようにすることができます。CACHE SELECT はデータを表示したり計算を行ったりしません。データを取得するだけです。 | v3.3+ |
Hive Catalog
メタデータ
Hive カタログを通じて Hive データに対してクエリを実行する際、StarRocks はテーブルメタデータをキャッシュし、リモートストレージへの頻繁なアクセスによるコストを削減します。このメカニズムは、非同期リフレッシュと有効期限ポリシーを通じてデータの新鮮さを維持しながら、クエリパフォーマンスを保証します。
キャッシュされたメタデータ
StarRocks はクエリ中に以下のメタデータをキャッシュします:
-
テーブルまたはパーティションレベルのメタデータ
- 内容:
- テーブル情報: データベース、テーブルスキーマ、列名、パーティションキー
- パーティション情報: パーティションリスト、パーティションの場所
- 影響: テーブルの存在を検出する(テーブルが削除または再作成されたかどうか)
- カタログプロパティ:
enable_metastore_cache: メタストアキャッシュを有効にするかどうかを制御します。デフォルト値:true。metastore_cache_refresh_interval_sec: キャッシュされたメタデータが新鮮と見なされる時間間隔を制御します。デフォルト値:60。単位: 秒。
- 場所: Metastore (HMS または Glue)
- 内容:
-
パーティション名リスト
- 内容: パーティションを見つけて剪定するために使用されるパーティション名のリスト。パーティション名リストは上記のセクションでパーティション情報として収集されていますが、特定の状況下でこの機能を有効または無効にするための別の設定があります。
- 影響: パーティションの存在を検出する(新しいパーティションがあるか、パーティションが削除または再作成されたかどうか)
- カタログプロパティ:
enable_cache_list_names: パーティション名リストキャッシュを有効にするかどうかを制御します。デフォルト値:true。metastore_cache_refresh_interval_sec: キャッシュされたメタデータが新鮮と見なされる時間間隔を制御します。デフォルト値:60。単位: 秒。
- 場所: Metastore (HMS または Glue)
-
ファイルレベルのメタデータ
- 内容: パーティションフォルダー内のファイルへのパス。
- 影響: 既存のパーティションにデータをロードする。
- カタログプロパティ:
enable_remote_file_cache: リモートストレージ内のファイルのメタデータキャッシュを有効にするかどうかを制御します。デフォルト値:true。remote_file_cache_refresh_interval_sec: ファイルメタデータが新鮮と見なされる時間間隔を制御します。デフォルト値:60。単位: 秒。remote_file_cache_memory_ratio: ファイルメタデータキャッシュに使用できるメモリの割合を制御します。デフォルト値:0.1(10%)。
- 場所: リモートストレージ (HDFS または S3)
非同期更新ポリシー
以下の FE 構成項目は、非同期メタデータ更新ポリシーを制御します:
| 構成項目 | デフォルト | 説明 |
|---|---|---|
| enable_background_refresh_connector_metadata | true in v3.0false in v2.5 | 定期的なメタデータキャッシュのリフレッシュを有効にするかどうか。これが有効になると、StarRocks はメタストアをポーリングし、頻繁にアクセスされる外部カタログのキャッシュされたメタデータをリフレッシュしてデータの変更を認識します。true は Hive メタデータキャッシュのリフレッシュを有効にし、false はそれを無効にします。この項目は FE 動的パラメータ です。ADMIN SET FRONTEND CONFIG コマンドを使用して変更できます。 |
| background_refresh_metadata_interval_millis | 600000 (10 分) | 2回の連続したメタデータキャッシュリフレッシュの間隔。単位: ミリ秒。この項目は FE 動的パラメータ です。ADMIN SET FRONTEND CONFIG コマンドを使用して変更できます。 |
| background_refresh_metadata_time_secs_since_last_access_secs | 86400 (24 時間) | メタデータキャッシュリフレッシュタスクの有効期限。アクセスされた外部カタログについて、指定された時間以上アクセスされていない場合、StarRocks はそのキャッシュされたメタデータのリフレッシュを停止します。アクセスされていない外部カタログについては、StarRocks はそのキャッシュされたメタデータをリフレッシュしません。単位: 秒。この項目は FE 動的パラメータ です。ADMIN SET FRONTEND CONFIG コマンドを使用して変更できます。 |
メタデータキャッシュの動作
このセクションでは、メタデータの更新とクエリ中のメタデータの動作をデフォルトの動作を使用して説明します。
デフォルトでは、テーブルがクエリされると、StarRocks はテーブル、パーティション、およびファイルのメタデータをキャッシュし、次の24時間アクティブに保ちます。この24時間の間に、システムは少なくとも10分ごとにキャッシュがリフレッシュされることを保証します(10分はメタデータリフレッシュラウンドの推定時間です。保留中のメタデータリフレッシュが多すぎる場合、全体のメタデータリフレッシュ間隔は10分以上になる可能性があります)。テーブルが24時間以上アクセスされていない場合、StarRocks は関連するメタデータを破棄します。言い換えれば、24時間以内に行われたクエリは、最悪の場合、10分前のメタデータを使用します。

詳細:
- 最初のクエリがテーブル
AのパーティションP1を含むと仮定します。StarRocks はテーブルレ ベルのメタデータ、パーティション名リスト、およびP1の下のファイルパス情報をキャッシュします。キャッシュはクエリが実行される間に同期的に生成されます。 - キャッシュが生成されてから60秒以内に2番目のクエリが提出され、テーブル
AのパーティションP1にヒットした場合、StarRocks はメタデータキャッシュを直接使用し、この時点で StarRocks はすべてのキャッシュされたメタデータを新鮮と見なします(metastore_cache_refresh_interval_secおよびremote_file_cache_refresh_interval_secは StarRocks がメタデータを新鮮と見なす時間枠を制御します)。 - 90秒後に3番目のクエリが提出され、テーブル
AのパーティションP1にヒットした場合、StarRocks は依然としてメタデータキャッシュを直接使用してクエリを完了します。しかし、最後のメタデータリフレッシュから60秒以上経過しているため、StarRocks はメタデータを期限切れと見なします。したがって、StarRocks は期限切れのメタデータの非同期リフレッシュを開始します。非同期リフレッシュは現在のクエリの結果には影響しません。クエリは依然として古いメタデータを使用します。 - テーブル
AのパーティションP1がクエリされたため、次の24時間(background_refresh_metadata_time_secs_since_last_access_secsによって制御されます)、メタデータは10分ごと(background_refresh_metadata_interval_millisによって制御されます)にリフレッシュされると推定されます。メタデータリフレッシュのラウンド間の実際の間隔は、システム内の全体の保留中の リフレッシュタスクにも依存します。 - テーブル
Aが24時間以内にクエリに関与していない場合、StarRocks は24時間後にそのメタデータキャッシュを削除します。
ベストプラクティス
Hive Catalog の Hive Metastore (HMS) と AWS Glue のサポートはほぼ重なりますが、HMS の自動インクリメンタル更新機能は推奨されません。ほとんどの場合、デフォルトの設定が推奨されます。
メタデータ取得のパフォーマンスは、主にユーザーの HMS または HDFS NameNode のパフォーマンスに依存します。すべての要因を考慮し、テスト結果に基づいて判断してください。
- [デフォルトと推奨] 分単位のデータ不整合を許容する最良のパフォーマンス
- 設定: デフォルト設定を使用できます。データは10分以内(デフォルト)に更新されません。この期間内にクエリに対して古いデータが返されます。
- 利点: 最良のクエリパフォーマンス。
- 欠点: レイテンシーによるデータ不整合。
- サポートバージョン: v2.5.5+ (v2.5ではデフォルトで無効、v3.0+ではデフォルトで有効)
- 手動リフレッシュなしで新しくロードされたデータ(ファイル)の即時可視性
- 設定: 基礎データファイルのメタデータキャッシュを無効にするには、カタログプロパティ
enable_remote_file_cacheをfalseに設定します。 - 利点: ファイル変更の遅延なしの可視性。
- 欠点: ファイルメタデータキャッシュが無効な場合のパフォーマンス低下。各クエリはファイルリストにアクセスする必要があります。
- サポートバージョン: v2.5.5+
- 設定: 基礎データファイルのメタデータキャッシュを無効にするには、カタログプロパティ
- 手動リフレッシュなしでパーティション変更の即時可視性
- 設定: Hive パーティション名のキャッシュを無効にするには、カタログプロパティ
enable_cache_list_namesをfalseに設定します。 - 利点: パーティション変更の遅延なしの可視性。
- 欠点: パーティション名キャッシュが無効な場合のパフォーマンス低下。各クエリはパーティションリストにアクセスする必要があります。
- サポートバージョン: v2.5.5+
- 設定: Hive パーティション名のキャッシュを無効にするには、カタログプロパティ
データ変更のリアルタイム更新 が必要で、HMS のパフォーマンスが最適化されていない場合は、キャッシュを有効にし、自動インクリメンタル更新を無効にし、上流でデータ変更があるたびにスケジューリングシステムを使用してメタデータを手動でリフレッシュ(REFRESH EXTERNAL TABLE を使用)することができます。
ストレージシステム
| 機能 | 説明 | サポートバージョン |
|---|---|---|
| 再帰的サブディレクトリリスト | カタログプロパティ enable_recursive_listing を true に設定することで、再帰的サブディレクトリリストを有効にします。再帰的リストが有効になると、StarRocks はテーブルとそのパーティション、およびテーブルとそのパーティションの物理的な場所内のサブディレクトリからデータを読み取ります。この機能は、複数層のネストされたディレクトリの問題に対処するために設計されています。 | v2.5.9+ v3.0.4+ (v2.5およびv3.0ではデフォルトで無効、v3.1+ではデフォルトで有効) |