StarRocksとは
StarRocksは次世代の超高速全シナリオMPPデータベースであり、リレーショナルOLAPデータベースと分散ストレージシステムのビッグデータ時代における優れた研究成果を十分に吸収し、業界の実践に基づいてさらに改善・最適化、アーキテクチャのアップグレードを行い、多くの新機能を追加することで、全く新しいエンタープライズグレードの製品を形成しました。StarRocksは超高速統一分析体験の構築に注力し、企業ユーザーの多様なデータ分析シナリオを満たし、複数のデータモデル(明細モデル、集計モデル、更新モデル)、複数の取り込み方法(バッチとリアルタイム)、最大10000列のデータ取り込みをサポートし、様々な既存システム(Spark、Flink、Hive、ElasticSearch)との統合と接続が可能です。
テンセントクラウドElastic MapReduce製品では、完全にすぐに使えるStarRocksサービスを提供しており、詳細はStarRocksの紹介を参照してください。 StarRocks+DLC レイクハウス統合クエリ加速
テンセントクラウドデータレイクDLCは、EMR StarRocksに基づくレイクハウス統合クエリ加速モードをサポートしており、DLCデータをStarRocksにインポートしたり、StarRocksでDLC外部テーブルを作成したりすることなく、DLCのデータソースをシームレスに分析し、複雑なSQLクエリを実行できます。StarRocksのMPPベクトル化クエリ能力に基づき、データ分析効率が向上し、運用保守の難易度とコストが削減されます。
次に、本記事ではDLC + (EMR)StarRocksレイクハウス統合クエリ加速を有効にする方法についてご紹介します。
前提条件
1. 購入済みのElastic MapReduce StarRocksクラスター。
2. データレイクコンピューティング DLC サービスが開通されました。
注意:
1. 現在、クロスリージョンフェデレーションDLCはサポートされていません。環境を適切に計画し、EMR StarRocksとDLCが同じリージョンにあることを確認してください。
2. 2024年6月12日以前に作成されたDLCストックネイティブテーブル(DLCストックネイティブテーブルの保存パスはlakefs://***で、この形式は現在互換性がありません)のクエリはサポートされていません。6月12日以降に作成されたDLC新規ネイティブテーブル(保存パスはcosn://***)およびDLCのすべての外部テーブルはサポートされています。
3. StarRocksはDLCデータのクエリのみをサポートしており、DLCデータの書き込みや削除操作はサポートしていません。
DLC+StarRocksレイクハウス統合クエリ加速を有効にするには、まずDLC外部アクセスを有効にし、StarRocksクラスターがDLC内部でホストされているストレージデータにアクセスできるようにする必要があります。その後、StarRocksクラスターでDLC External Catalogを作成し、StarRocks計算エンジンを使用してDLCストレージデータを直接分析できるようになります。
DLC外部アクセスを有効にする
ステップ1:「外部アクセスホスティングストレージをオンにする」をクリックします。オンにすると、同じTencent CloudアカウントのEMR StarRocksクラスターがDLC内部ホスティングストレージにアクセスできるようになります。その後、ここでスイッチをクリックして、DLC内部ホスティングストレージの外部アクセスサービスをオンまたはオフにすることができます。
外部アクセスを有効にするアカウントはDLCの管理権限が必要です。メインアカウント(またはDLC管理者権限を持つサブアカウント)を使用してこの操作を行ってください。
注意:
1. DLCの管理権限をお持ちの場合は、この手順をスキップできます。
2. サブアカウントを使用しており、DLCの管理権限がない場合は、ドキュメントサブユーザー権限管理を参照して、DLC管理者権限を持つアカウントに権限を付与してもらうことができます。 ステップ2:EMR StarRocksクラスターがDLCのメタデータカタログサービスに正しくアクセスできるようにするには、EMR StarRocksのVPCをDLCネットワークにバインドする必要があります。
1. 「VPCをバインド」をクリックし、ダイアログボックスでタイプとしてEMR StarRocksを選択し、EMRインスタンスのドロップダウンリストからバインドするEMR StarRocksクラスターインスタンスIDを選択します。
2. StarRocksクラスタが配置されているVPCは自動的に入力され、備考名に識別しやすい別名を入力できます。
ステップ3:VPCのバインドが完了すると、StarRocksクラスター内でCatalogのアクセスアドレスに表示されるURI接続文字列を使用して、DLCメタデータサービスに接続できます。例:
URI接続文字列の例:
Catalog アクセスアドレス: thrift://172.17.1.18:7004
これで、EMR StarRocksクラスタはDLC内部で管理されているデータを直接分析できるようになりました。分析を開始する前に、StarRocksでDLC External Catalogを作成する必要があります。
DLC External Catalogを作成します
構文
外部カタログ dlc_iceberg_cos_CATALOG を作成
プロパティ
(
"type" = "iceberg",
"iceberg.CATALOG.type" = "hive",
"iceberg.CATALOG.hive.metastore.uris" = "thrift://169.254.0.171:8007",
"aws.s3.endpoint" = "cos.ap-chongqing.myqcloud.com",
"aws.s3.access_key" = "Tencent Cloud secret id",
"aws.s3.secret_key" = "Tencent Cloud secret_key"
);
パラメータ説明
|
type | データソースのタイプは、デフォルトでIcebergに設定されています。 |
iceberg.catalog.type | Icebergクラスターで使用するメタデータサービスのタイプ。Hiveに設定されています。 |
iceberg.catalog.hive.metastore.uris | DLCメタデータのURI。 |
aws.s3.endpoint | S3プロトコル互換のオブジェクトストレージにアクセスするためのEndpoint。腾讯雲COSの形式はcos.<region>.myqcloud.comで、<region>の選択可能な値はap-beijing、ap-shanghai、ap-guangzhouなどです。 |
aws.s3.access_key | 腾讯雲アカウントのキーにおけるSecretID。 |
aws.s3.secret_key | 腾讯雲アカウントのキーにおけるSecretKey。 |
注意:
1. セキュリティ上の理由から、上記のSecretIDおよびSecretKeyの設定では、DLC内部ストレージに正しくアクセスするために、メインアカウントのSecretIDとSecretKeyを使用する必要があります。具体的には、メインアカウントで腾讯雲にログイン後、アクセス管理コンソール>ログイン - 腾讯雲ページでSecretIDとSecretKeyを取得できます。
2. サブアカウントのSecretIDとSecretKeyを使用してDLC内部ホストされたストレージにアクセスする必要がある場合は、このドキュメントの最後のセクションサブアカウントのSecretID/SecretKeyを使用したアクセスを参照してください。
例
以下の例は、DLC_catalogという名前のDLC Catalogを作成する方法を示しています:
CREATE EXTERNAL CATALOG dlc_hive_cos_catalog
PROPERTIES
(
"type" = "Iceberg",
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://169.254.0.171:8007",
"aws.s3.endpoint" = "cos.ap-chongqing.myqcloud.com",
"aws.s3.access_key" = "************************************",
"aws.s3.secret_key" = "********************************"
)
StarRocks から DLC が管理するストレージ内の Hive テーブルを直接クエリする必要がある場合は、別の DLC Hive カタログを作成する必要があります。具体的には、type を Hive に設定します。以下に例を示します:
CREATE EXTERNAL CATALOG dlc_hive_cos_catalog
PROPERTIES
(
"type" = "hive",
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://169.254.0.171:8007",
"aws.s3.endpoint" = "cos.ap-chongqing.myqcloud.com",
"aws.s3.access_key" = "************************************",
"aws.s3.secret_key" = "********************************"
)
DLCデータをクエリ
DLCテーブルとデータを準備
以下の例は、Iceberg 表を作成する方法を示しています:
CREATE TABLE test_sr_ofs.`customer`(
`c_custkey` bigint,
`c_name` string,
`c_address` string,
`c_nationkey` int,
`c_phone` string,
`c_acctbal` double,
`c_mktsegment` string,
`c_comment` string) using iceberg;
)
StarRocksでデータをクエリします
#StarRocksノードにログインします
mysql -h 172.30.0.xxx -P9030 -u root -p
#icebergカタログを指定します
set catalog dlc_iceberg_cos_catalog;
#データベースを指定します
use test_sr_ofs;
#customerテーブルのデータをクエリします
select * from customer limit 5;
クエリ結果は以下の通り:
サブアカウントのSecretID/SecretKeyを使用してアクセスします(オプション)
データセキュリティの考慮により、DLC外部アクセスを有効にした後、デフォルトではEMR StarRocksでDLC内部ストレージにアクセスするためにメインアカウントのSecretIDおよびSecretKeyを使用する必要があります。業務シナリオでサブアカウントのSecretIDおよびSecretKeyを使用する必要がある場合、メインアカウントを使用してCAMでカスタムポリシーを作成し、対応するサブアカウントにバインドする必要があります。
原理の説明
上記のドキュメントのガイドに従ってDLC外部アクセスを有効にした後、システムは実質的にあなたのメインアカウントにDLC内部のホストされたストレージにアクセスする権限を付与します。しかし、データセキュリティを考慮し、メインアカウントに紐づく他のサブアカウントはデフォルトでこのアクセス権限を持ちません。Tencent Cloudのアクセス制御CAMで、サブアカウントにアクセス能力を付与するカスタムポリシーを作成し、DLC内部のホストされたストレージにアクセスする必要があるサブアカウントにバインドする必要があります。具体的な手順は以下の通りです:
第一步:カスタムポリシーの生成
Tencent Cloudにメインアカウントでログインし、データレイクコンピューティング DLC コンソールに入り、ストレージ設定メニューをクリックし、外部アクセスを有効にするを選択し、サブアカウント認証で「クリックして処理」をクリックします。ポップアップダイアログでクリックしてコピーをクリックし、作成が必要なカスタムCAMポリシーを取得します。 第二步:DLC内部ストレージにアクセスを許可するカスタムポリシーの作成
1. メインアカウントでCloud Access Management (CAM)コンソールのポリシーページにログインします。 2. 新しいカスタムポリシー > ポリシーシンタックスによる作成を選択し、空白テンプレートを選択して、次へをクリックします。
説明:
メインアカウントがサブアカウントにデータアクセス権限を付与する場合、現在はカスタムポリシーによる権限付与のみ可能で、プリセットポリシーによる権限付与はサポートされていません。
3. 以下のフォームに入力します:
ポリシー名称:重複せず意味のあるポリシー名称を独自に定義します。例:cos-child-account。
備考:オプションです。独自に記述します。
ポリシー内容:第一步でコピーしたカスタムポリシーを貼り付けます。例:
{
"statement": [
{
"action": [
"cos:*"
],
"effect": "allow",
"resource": [
"qcs::cos:ap-shanghai:uid/1305424723:dlc03ff-100018379117-1647867281-100017307912-1304028854/*",
"qcs::cos:ap-shanghai:uid/1305424723:dlc0a65-100018379117-1680005779-100017307912-1304028854/*"
]
}
],
"version": "2.0"
}
説明:
上記のポリシーは、メインアカウントが操作権限を持つDLCホストされたストレージをすべてサブアカウントに承認することを意味します。ここで、uid/1305424723の1305424723はメインアカウントAのAPPIDであり、dlc0a65-100018379117-1680005779-100017307912-1304028854/*はあなたが操作権限を持つDLC内部ホストされたストレージです。
4. 完了をクリックし、ポリシーの作成を完了します。
第三步:DLC内部ストレージにアクセスが必要なサブアカウントを承認
1 ポリシーリストから先ほど作成したポリシーを見つけ、右側のユーザー/グループ/ロールを関連付けるをクリックします。
2.ポップアップウィンドウで、DLC内部ホストされたストレージへのアクセス権限が必要なサブアカウントをチェックし、確定をクリックします。
3.承認操作を完了すると、サブアカウントのSecretIDとSecretKeyを使用して、あなたの名義のDLC内部ホストされたストレージにアクセスできます。