What is a Databricks SQL warehouse? | Databricks on AWS [2022/8/19時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書ではSQLウェアハウス(以前のSQLエンドポイント)を紹介し、Databricks SQLのUIを用いてどのように操作するのかを説明します。SQLウェアハウスはDatabricks SQLのデータオブジェクトに対してSQLコマンドを実行する計算リソースです。
SQLエンドポイントはSQLウェアハウスに名称変更しました
Databricksでは、SQLエンドポイントが単なるAPIエントリーポイント以上のもので、SQLコマンドを実行するものであることからSQLウェアハウスに名称変更しました。SQLウェアハウスはデータウェアハウスのすべてのニーズのための計算リソースであり、レイクハウスプラットフォームの重要なパーツです。
他の計算リソースタイプにはDatabricksのクラスターが存在します。APIを用いてSQLエンドポイントを操作するには、SQLエンドポイントAPIを参照ください。
始める前に
最初のSQLウェアハウスを作成する際、New SQL Warehouseページに表示されるデフォルトを使用することをお勧めします。しかし、ご自身の要件に合わせて設定を行うための数多くのオプションが存在しています。これらのオプションにおいて、以下の点に注意する必要があります。
- サーバーレスSQLウェアハウス(パブリックプレビュー): お使いのAWSアカウントに計算リソースが存在するクラシックSQLウェアハウスと異なり、計算リソースはDatabricksで管理されます。サーバーレスSQLウェアハウスは、SQLウェアハウスの管理をシンプルにし、起動時間を短縮します。サーバーレスSQLウェアハウスの有効化を参照ください。
- チャンネル: チャンネルで現行のSQLウェアハウスのバージョンを使用するのか、プレビューバージョンを使用するのかを選択できます。Databricks SQLの標準になる前の機能をプレビューバージョンで試すことができます。間も無く導入される変更に対してクエリーやダッシュボードをテストするためにプレビューバージョンを活用することができます。通常、プレビューバージョンは初期のプレビューリリースから二週間後に現行バージョンとしてプロモーションされます。しかし、場合によってはプレビューが長くなる場合があります。リリースノートを確認することで最新のプレビュー機能の詳細を確認することができます。プレビューバージョンをプロダクションのワークロードで使用することはお勧めしません。
要件
- SQLウェアハウスを作成するためには、Databricks Data Science & Engineeringにおいてクラスター作成権限を有している必要があります。
- SQLウェアハウスを管理するには、Databricks SQLでCan Manage権限を有している必要があります。
- サーバーレスSQLウェアハウスを作成する前に、管理者は最初にワークスペースでサーバーレスSQウェアハウスを有効化しなくてはなりません。
SQLウェアハウスの参照
デフォルトでは、ウェアハウスは状態(稼働中のウェアハウスを最初に表示)、そして、アルファベット順でソートされています。カラムのヘッダーをクリックすることで並び替えることができます。
Databricks SQLクイックスタートを活用するなどして、すぐに利用を開始できるように、Databricksは自動でStarter Warehouseという小規模SQLウェアハウスを作成します。
ウェアハウス一覧のフィルタリングを行うには、検索ボックスにテキストを入力します。
接続情報、モニタリング、アドバンスオプションのような詳細なウェアハウスの設定を参照したい場合には、ウェアハウス名をクリックします。
SQLウェアハウスの作成
Web UIのNew SQL WharehouseページあるいはSQL Warehouse APIを用いてSQLエンドポイントを作成することができます。APIによるサーバレスウェアハウスの管理に関しては、SQL Warehouse APIをご覧ください。
New SQL Wharehouseページの全てのデフォルト値をそのまま使用することで、迅速かつ容易に高効率、高性能なSQLウェアハウスを作成することができます。ワークロード、環境に応じてこれらのデフォルト値を変更することができます。
Web UIを用いてSQLウェアハウスを作成するには以下の手順を踏みます。
-
Create SQL WarehousesをクリックしてNew SQL Warehousesダイアログを表示します。
-
ウェアハウス名を入力します。
1.ウェアハウスプロパティのデフォルト値を使用するか編集します。-
Cluster Sizeは、クエリーやダッシュボードを実行する際に使用するクラスターのワーカー数、計算リソースのサイズを表します。デフォルトはX-Largeです。クエリーのレーテンシーを短縮するためにはサイズを大きくしてください。詳細はクラスターのサイズを参照ください。
-
Auto Stopでは、指定された時間、アイドル状態が続いたらウェアハウスを停止するかどうかを指定します。デフォルトは10分です。Advanced optionsでServerlessを無効にした場合は、120分が推奨値となります。
アイドル状態のSQLウェアハウスにおいてもDBUの課金は発生し、停止するまでDBUとクラウドインスタンス費用が課金されます。
-
Scalingでは、ウェアハウスに送信されるクエリーが分散処理されるクラスターの最小数、最大数を設定します。
デフォルトは最小数1、最大数1のクラスターとなっています。
クエリーを実行する同時最大ユーザー数を取り扱うためにはクラスター数を増やします。同時実行クエリー10件に対して1台のクラスターを推奨します。どのようにDatabricksがエンドポイントにクラスターを追加、削除するのかについては、キューイング、オートスケーリングを参照ください。
-
-
(オプション)アドバンスオプションを設定します。
以下のいずれかの設定を行う場合には、Advanced optionsを展開します。
- SQLウェアハウスの利用料をモニタリングするためにタグを追加
- サーバーレスオプションの無効化
- SQLウェアハウスにおけるスポットインスタンスのポリシーの設定
- 新規機能を試すためにプレビューチャンネルを利用
詳細に関してはアドバンスオプションを参照ください。
注意
サーバーレスがワークスペースで有効化されていない場合、このサーバーレスのオプションは表示されません。
: -
Createをクリックします。
-
以下のいずれかを行います。
- ウェアハウスのアクセス権を設定し、Saveをクリックします。
- Skipをクリックします。
エンドポイントが作成され起動します。
また、Databricks Terraform providerとdatabricks_sql_endpointを用いてSQLウェアハウスを作成することができます。
アドバンスオプション
New SQLウェアハウスダイアログを用いてSQLウェアハウスを作成する際、あるいは、既存のSQLウェアハウスを編集する際にeditダイアログのAdvanced optionsを展開することで、以下のアドバンスオプションを設定することができます。これらのオプションはSQL Warehouse API 2.0でも設定することができます。
利用料をモニタリングするためのタグの追加
Tagsを用いることで、組織内のユーザーやグループによって使用されるクラウドリソースのコストをモニタリングすることができます。SQLウェアハウスを作成、編集する際にAdvanced optionsを展開し、タグをキーバリューのペアとしてタグを指定することができます。Databricksがこれらのタグをクラウドリソースに適用します。
SQLウェアハウスタイプの変更(クラシックあるいはサーバーレス)
クラシックSQLウェアハウスは、お使いのAWSアカウントの計算リソースを使用します。サーバーレスSQLウェアハウス(パブリックプレビュー)は、Databricksのクラウドアカウントの計算リソースを使用します。サーバーレスSQLウェアハウスは、SQLウェアハウスの設定、利用をシンプルなものにし、起動時間を短縮します。サーバーレスオプションはワークスペースで機能が有効化されている場合にのみ利用できます。詳細に関してはサーバーレスSQLウェアハウスの有効化とServerless computeを参照ください。
- ワークスペースでサーバーレスSQLウェアハウスが有効化されている場合には、SQLウェアハウスはデフォルトでサーバーレスになります。クラシックSQLウェアハウスを使用したい場合には、Advanced optionsを展開し、Serverlessをオフにしてください。サーバーレスに戻すにはトグルをオンにします。
- サーバーレスSQLウェアハウスが有効化されていない場合、SQLウェアハウスは常にクラシックSQLウェアハウスになります。Serverlessトグルは表示されず、ウェアハウスのタイプを変更することはできません。
注意
サーバーレスをオフにした場合、Spot Instance Policyオプションが表示され、デフォルトはCost Optimizedとなります。
スポットインスタンスポリシーの設定(クラシックSQLウェアハウスのみ)
ワークスペースでサーバーレスSQLウェアハウスが有効化されていない、あるいは、Advanced optionsのServerlessをオフにすると、Spot Instance Policyオプションが表示され、デフォルトはCost Optimizedとなります。
スポットインスタンスポリシーは、ワーカーがオンデマンドインスタンスのみを使用するか、オンデマンドとスポットインスタンスの組み合わせを使用するかを決定します。Cost Optimizedでは、多くの場合スポットインスタンスを使用し、一台のオンデマンドインスタンスを使用します。Reliability Optimizedはオンデマンドインスタンスのみを使用します。
プレビューチャンネルの利用
Channelsでは、CurrentのSQLウェアハウスコンピュートバージョン、あるいはPreviewバージョンを指定します。プレビューバージョンでは、Databricks SQLの標準になる前の機能をテストすることができます。近いうちに提供される新機能に対してクエリー、ダッシュボードを試すためにプレビューチャンネルを使用するメリットがあります。リリースノートで最新のプレビューバージョンの内容を確認することができます。
デフォルトはCurrentです。SQLエンドポイントをプレビューチャンネルに切り替えるには、Advanced optionsを展開してPreviewを選択します。
重要!
プロダクションワークロードでプレビューバージョンを使用することはお勧めしません。これは、チャンネルを含むウェアハウスのプロパティを管理者しか参照できないためです。ユーザーが間違ってプロダクションワークロードで使用しないように、SQLウェアハウスがプレビューバージョンであることがわかるウェアハウス名にすることを検討してください。
SQLウェアハウスの起動、停止、削除
- サイドバーのSQL Warehousesをクリックします。
- 稼働中のウェアハウスを停止するにはStopをクリックします。
- 停止中のウェアハウスを起動するにはStartをクリックします。
- エンドポイントを削除するには、Actionsカラムのをクリックし、Deleteをクリックします。
SQLウェアハウスの編集
Web UIあるいはSQL Warehouse APIを用いて、SQLエンドポイントを編集することができます。
Web UIを用いてSQLエンドポイントを編集するには以下の手順を踏みます。
-
エンドポイントプロパティを編集します。
編集可能なプロパティに関しては、SQLウェアハウスの作成、アドバンスオプションを参照ください。
-
SaveあるいはSave and restartをクリックします。
クラシックSQLウェアハウスをサーバーレスSQLウェアハウスに変更
サーバーレスSQLウェアハウスに関しては、Databricksのサーバーレスコンピュートを参照ください。サーバレスオプションは、ワークスペースで有効化されている場合にのみ使用できます。
プレビュー
サーバレスSQLウェアハウスはパブリックプレビューです。
- サイドバーのSQL Warehouseをクリックします。
- クラシックSQLウェアハウスをクリックします。
- Editボタンをクリックします。
- タイプを変更するためにServerlessトグルをクリックします。
- SaveあるいはSave and restartをクリックします。
SQLウェアハウスのアクセス権の設定
SQLウェアハウスのアクセス権を設定するには以下の手順を踏みます。
-
エンドポイントをクリックします。
-
SQLウェアハウスのアクセス権ダイアログが表示されます。エンドポイントの作成者とDatabricks管理者がデフォルトでCan Manage権限を持っています。
-
ユーザーあるいはグループとアクセス権を選択します。
-
Addをクリックします。
-
Saveをクリックします。
アクセス権のレベルに関しては、SQL warehouse access controlを参照ください。
SQLウェアハウスのモニタリング
ウェアハウスで処理されているクエリーの数と、ウェアハウスに割り当てられているクラスターの数を参照することができます。
-
ウェアハウスをクリックします。
-
Monitoringをクリックします。
過去6時間でウェアハウスで処理されたクエリーの数と、ウェアハウスに割り当てられたクラスターの数を示すグラフが表示されます。
右上にある時間スケールボタンをクリックすることで、表示期間を変更できます。例えば、以下のスクリーンショットでは7日間の統計情報を表示しています。
注意
Scalingが有効化され設定された場合にのみ、クラスター数は1以上に増加します。
クラスターのサイズ
このセクションの表では、SQLウェアハウスのクラスターサイズと、Databricksクラスターのドライバーサイズとワーカーの台数をマッピングしています。
注意
サーバレスウェアハウスにおいては、同じクラスターサイズにおいて、クラシックウェアハウスに関してでドキュメントで一覧されているインスタンスタイプと異なるものを使用する場合があります。通常、サーバレスウェアハウスのクラスターサイズの価格/性能比はクラシックウェアハウスと同等なものとなります。
クラスターサイズ | ドライバーサイズ | ワーカーの台数 |
---|---|---|
2X-Small | i3.2xlarge | 1 |
X-Small | i3.2xlarge | 2 |
Small | i3.4xlarge | 4 |
Medium | i3.8xlarge | 8 |
Large | i3.8xlarge | 16 |
X-Large | i3.16xlarge | 32 |
2X-Large | i3.16xlarge | 64 |
3X-Large | i3.16xlarge | 128 |
4X-Large | i3.16xlarge | 256 |
全てのワーカーのサイズはi3.2xlargeとなります。
キューイング、オートスケーリング
Databricksでは、結果を計算するコストに基づいて、SQLウェアハウスに割り当てられるクラスターにおけるクエリーの数を制限します。エンドポイントごとのクラスターのスケールアップは、クエリーのスループット、投入されるクエリーのレート、キューのサイズに依存します。Databricksは、以下に示すように、現在実行している全てのクエリーの処理に要する時間、キューにある全てのクエリー、そして、向こう2分間で投入されるであろうクエリーの数に基づいてクラスターを追加します。
- 2分以内、スケールアップしない
- 2分〜6分、1クラスターを追加
- 6分〜12分、2クラスターを追加
- 12分〜22分、3クラスターを追加
これ以外の場合、3クラスターの追加に加え、予測されるクエリーの負荷に対して追加の15分ごとに1クラスターを追加します。
さらに、クエリーがキューで5分の待ちが発生する場合、常にエンドポイントはスケールアップされます。
15分間負荷が低い場合には、DatabricksはSQLエンドポイントをスケールダウンします。過去15分間における最大負荷に対応するのに十分なクラスターを維持します。例えば、最大負荷において同時実行数が25だった場合、Databricksは3クラスターを維持します。
クエリーのキューイング
Databricksは、ウェアハウスに割り当てられた全てのクラスターが最大キャパシティで処理している場合、あるいは、エンドポイントがSTARTING
状態の場合、クエリーをキューイングします。
メタデータのクエリー(例えば、DESCRIBE <table>
)や、状態を変更するクエリー(例えば、SET
)はエンドポイントがSTARTING
出ない限り、キューイングされません。
クエリーのルーティング
Databricksは以下のようにクエリーをルーティングします。
- 新規セッション: 最も負荷の低いクラスターにルーティング
- 既存セッション: 当該セッションで以前のクエリーを実行したクラスターにルーティング。クラスターに空きが無い場合、クエリーは最も負荷の低いクラスターにルーティング