Azure クラウドストレージへの認証
CelerData Cloud BYOC にクラスターを正常にデプロイし、仮想マシン (VM) やクラウドストレージなどのクラスター関連のクラウドリソースがすでに Azure アカウントの下に配置されているとします。
このトピックでは、以下のシナリオで CelerData クラスターが自己管理の Azure クラウドストレージ(Azure Blob Storage や Azure Data Lake Storage など)にアクセスできるようにする方法を紹介します。
- Azure Storage 内の Hive、Iceberg、Hudi、および Delta Lake テーブルをクエリします。
- Azure Storage からデータをバッチロードします。
以下の表は、さまざまな Azure ストレージサービスでサポートされている認証方法を示しています。
Azure ストレージサービス | 認証方法 |
---|---|
Azure Blob Storage |
|
Azure Data Lake Storage Gen2 (ADLS Gen2) |
|
Azure Data Lake Storage Gen1 (ADLS Gen1) |
|
このトピックのデータロードの例では、Azure ストレージに保存されている file1.parquet
をサンプルデータファイルとして使用し、CelerData クラスター内の mydatabase
というデータベースに属する table1
をサンプルの宛先テーブルとして使用します。file1.parquet
と table1
は同じスキーマを持っているとします。
Azure Blob Storage
Blob Storage にアクセスする際、ファイルパスを入力する必要がある場合があります。
- ストレージアカウントが HTTP 経由でのアクセスを許可している場合、wasb プロトコルを使用し、ファイルパスを
wasb://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<file_name>
として記述します。 - ストレージアカウントが HTTPS 経由でのアクセスを許可している場合、wasbs プロトコルを使用し、 ファイルパスを
wasbs://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<file_name>
として記述します。
共有キー (ストレージアカウントのアクセスキー)
アクセスキーは、Azure ベースの CelerData クラスターのストレージアカウントへのリクエストを認証します。アクセスキーの詳細については、アカウントアクセスキーの管理 - Azure Storage を参照してください。
注意
この認証方法は、external catalog と Broker Load をサポートしています。external catalog に対しては、認証に使用するストレージアカウントは、external data source のデータを保存するために使用されるアカウントである必要があります。
パラメータ
Blob Storage にアクセスするための資格情報として、以下のパラメータを設定します。
パラメータ | 説明 |
---|---|
azure.blob.storage_account | Blob ストレージアカ ウントの名前。 |
azure.blob.shared_key | Blob ストレージアカウントの共有キー (アクセスキー)。 |
Blob ストレージアカウントの共有キー (アクセスキー) を取得する手順は次のとおりです。
-
Microsoft Azure ポータル にサインインし、Storage accounts サービスページに移動します。
-
ストレージアカウントを見つけて、その名前をクリックします。
-
左側のナビゲーションペインで、アクセスキー を選択します。
-
表示されたページで、使用したいキーの横にある 表示 をクリックし、コピーアイコンをクリックしてキーをコピーします。
例
External catalog
hive_catalog_azure
という名前の Hive catalog を作成します。
CREATE EXTERNAL CATALOG hive_catalog_azure
PROPERTIES
(
"type" = "hive",
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>"
);
CelerData は現在、Hive catalog、Iceberg catalog、Hudi catalog、および Delta Lake catalog をサポートしています。これらの external catalog を作成するための詳細な構文とパラメータについては、Hive catalog、[Iceberg ../data_source/catalog/iceberg_catalog.mdatalog.md)、[Hudi ../data_source/catalog/hudi_catalog.mdatalog.md)、および Delta Lake catalog を参照してください。
Broker Load
データファイル file1.parquet
から CelerData クラスター内の mydatabase
というデータベースに属する宛先テーブル table1
にデータをロードする Broker Load ジョブを作成します。
LOAD LABEL mydatabase.label_blob_key
(
DATA INFILE("wasb[s]://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/file1.parquet")
INTO TABLE table1
FORMAT AS "parquet"
)
WITH BROKER
(
"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>"
)
PROPERTIES
(
"timeout" = "3600"
);
Broker Load ジョブを作成するための詳細な構文とパラメータに ついては、BROKER LOAD を参照してください。
Azure からテーブル作成 DDL を使用してデータをロードする典型的な例については、Batch load data from Azure cloud storage を参照してください。
SAS トークン
共有アクセス署名 (SAS) は、ストレージアカウントへの制限付きアクセスを許可する URI です。SAS トークンの詳細については、共有アクセス署名を使用してアクセスを委任する - Azure Storage を参照してください。
注意
この認証方法は、external catalog と Broker Load をサポートしています。external catalog に対しては、認証に使用するストレージアカウントは、external data source のデータを保存するために使用されるアカウントである必要があります。
パラメータ
Blob Storage にアクセスするための資格情報として、以下のパラメータを設定します。
パラメータ | 説明 |
---|---|
azure.blob.storage_account | Blob ストレージアカウントの名前。 |
azure.blob.container | Blob ストレージアカウント内でデータを保存する Blob コンテナの名前。 |
azure.blob.sas_token | Blob ストレージアカウントにアクセスするために使用される SAS トークン。 |
Blob ストレージアカウントの SAS トークンを取得する手順は次のとおりです。
-
Microsoft Azure ポータル にサインインし、Storage accounts サービスページに移動します。
-
ストレージアカウントを見つけて、その名前をクリックします。
-
左側のナビゲーションペインで、共有アクセス署名 を選択します。
-
表示されたページで、許可されたサービス、許可されたリソースタイプ、および 許可された権限 セクションで適切な設定が行われていることを確認し、署名キー ドロップダウンリストからキーを選択し、SAS と接続文字列を生成 をクリックします。
生成された SAS トークンをコピーアイコンをクリックしてコピーできます。
例
External catalog
hive_catalog_azure
という名前の Hive catalog を作成します。
CREATE EXTERNAL CATALOG hive_catalog_azure
PROPERTIES
(
"type" = "hive",
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.container" = "<container_name>",
"azure.blob.sas_token" = "<storage_account_SAS_token>"
);
CelerData は現在、Hive catalog、Iceberg catalog、Hudi catalog、および Delta Lake catalog をサポートしています。これらの external catalog を作成するための詳細な構文とパラメータについては、Hive catalog、[Iceberg ../data_source/catalog/iceberg_catalog.mdatalog.md)、[Hudi ../data_source/catalog/hudi_catalog.mdatalog.md)、および Delta Lake catalog を参照してください。
Broker Load
データファイル file1.parquet
から CelerData クラスター内の mydatabase
というデータベースに属する宛先テーブル table1
にデータをロードする Broker Load ジョブを作成します。
LOAD LABEL mydatabase.label_blob_sas
(
DATA INFILE("wasb[s]://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/file1.parquet")
INTO TABLE table1
FORMAT AS "parquet"
)
WITH BROKER
(
"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.container" = "<container_name>",
"azure.blob.sas_token" = "<storage_account_SAS_token>"
)
PROPERTIES
(
"timeout" = "3600"
);
Broker Load ジョブを作成するための詳細な構文とパラメータについては、BROKER LOAD を参照してください。
Azure からテーブル作成 DDL を使用してデータをロードする典型的な例については、Batch load data from Azure cloud storage を参照してください。
Azure Data Lake Storage Gen2
ADLS Gen2 にアクセスする際、ファイルパスを入力する必要がある場合があります。
- ストレージアカウントが HTTP 経由でのアクセスを許可している場合、abfs プロトコルを使用し、ファイルパスを
abfs://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>/<file_name>
として記述します。 - ストレージアカウントが HTTPS 経由でのアクセスを許可している場合、abfss プロトコルを使用し、ファイルパスを
abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>/<file_name>
として記述します。
マネージドアイデンティティ
ユーザー割り当てのマネージドアイデンティティは、Azure リソースがクラウドサービス (たとえば、Azure Key Vault) に認証するために使用され、コード内に資格情報を保存する必要がありません。各マネージドアイデンティティは独立した Azure リソースとして作成され、そのライフサイクルを持ちます。単一のリソース (たとえば、VM) は複数のユーザー割り当てのマネージドアイデンティティを利用できます。同様に、単一のユーザー割り当てのマネージドアイデンティティは、複数のリソース (たとえば、複数の VM) 間で共有できます。