2019 ビッグデータクラスターを AKS で使う - HDFS の階層化
SQL Server 2019 BDC ではストレージプールを使った HDFS のアクセスだけでなく、HDFS の階層化機能により Azure Data Lake Storage Gen2 (ADLS Gen2) や AWS S3 にあるファイルにもアクセスすることができます。
参照: SQL Server ビッグ データ クラスター で HDFS の階層化を構成する
SQL Server 2019 BDC
クラスタは azdata 既定の構成でインストール で構築したものを使います。
ADLS Gen2 の作成
今回はクラスタと同じリソースグループに ADLS Gen2 を作成します。
1. 以下コマンドでストレージアカウントの作成。
az storage account create -n sqlbdcadlsg2 -g sqlbdcrg --location japaneast --sku Standard_LRS --kind StorageV2 --enable-hierarchical-namespace true
2. キーを取得。
az storage account keys list -n sqlbdcadlsg2 -g sqlbdcrg
3. コンテナを作成。
az storage container create -n myhdfsfiles --account-name sqlbdcadlsg2 --account-key <上記で取得したキー>
4. 作成したコンテナにファイルをアップロード。ここでは Azure Storage Explorer を使って、既存のサンプルでストレージプールに作成された web_clickstreams.csv を利用。
ストレージのマウント
ストレージのマウントで利用できる認証はいくつか方法がありますが、今回は一番シンプルなキーを直接使う方法を試します。OAuth を使いたい場合は参考ページを見てください。
1. 以下のコマンドを実行。
set MOUNT_CREDENTIALS=fs.azure.abfs.account.name=sqlbdcadlsg2.dfs.core.windows.net,fs.azure.account.key.sqlbdcadlsg2.dfs.core.windows.net=<上記で取得したキー>
2. BDC コントローラーの外部 IP を取得。
kubectl get svc controller-svc-external -n mssql-cluster
3. コントローラーにログイン。
azdata login -e https://<IP-of-controller-svc-external>:30080
4. マウントを実行。
- ここではマウント先の名前を externalhdfsfile に指定
azdata bdc hdfs mount create --remote-uri abfs://[email protected]/ --mount-path /mounts/externalhdfsfile
5. マウントのステータスを確認。
>azdata bdc hdfs mount status
[
{
"mount": "/mounts/externalhdfsfile",
"remote": "abfs://[email protected]/",
"state": "Ready"
}
]
6. ADS から階層化された HDFS にアクセスできることを確認。
マウントされたストレージからクエリを実行
1. テスト用のデータベースと外部テーブルを作成。
- 場所で /mounts/externalhdfsfile/clickstream_data を指定
CREATE DATABASE HDFSTieringTestDB;
GO
USE HDFSTieringTestDB;
GO
CREATE EXTERNAL FILE FORMAT csv_file
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = TRUE)
);
IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlStoragePool')
BEGIN
CREATE EXTERNAL DATA SOURCE SqlStoragePool
WITH (LOCATION = 'sqlhdfs://controller-svc/default');
END
CREATE EXTERNAL TABLE [web_clickstreams_hdfs]
("wcs_click_date_sk" BIGINT , "wcs_click_time_sk" BIGINT , "wcs_sales_sk" BIGINT , "wcs_item_sk" BIGINT , "wcs_web_page_sk" BIGINT , "wcs_user_sk" BIGINT)
WITH
(
DATA_SOURCE = SqlStoragePool,
LOCATION = '/mounts/externalhdfsfile/clickstream_data',
FILE_FORMAT = csv_file
);
GO
SELECT * FROM web_clickstreams_hdfs;
まとめ
パフォーマンスを求める場合、HDFS ファイルは記憶域プールにおけますし、クエリ結果はデータプールにも配置できますが、いずれもクラスタノードにアタッチされたディスクでやりコストに影響します。すでに ADLS Gen2 にファイルがある場合は、うまく組み合わせて使えるとより柔軟性が上がります。次回はアプリケーションの展開を見ていきます。
Author And Source
この問題について(2019 ビッグデータクラスターを AKS で使う - HDFS の階層化), 我々は、より多くの情報をここで見つけました https://qiita.com/kenakamu/items/eee6280ba7303842deec著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .