はじめに
Azure Databricks 第3.1弾として DBFS に Blob Storage をマウントする方法を解説します。
- Azure Databricks に興味がある
- 機械学習に興味がある
- クラウド上でデータ分析をやってみたい
上記の項目に当てはまる方はぜひ読んでいただきたい内容となっています。
記事の概要
- ストレージアカウントの作成から DBFS に Blob Storage をマウント方法を解説しています。
- Blob Storage のアンマウント方法を解説しています。
- ストレージアカウントキーなどの秘密情報を管理する Azure Key Vault を使用します。
前回記事
Azure Databricks: 1. リソースの作成
Azure Databricks: 2. Databricksの基本事項
既存の Blob Storage をマウントする場合の方法
※既存のBlob Storageをマウントする場合は以下の方法で作成してください。
- 「DBFSにBlob Storageをマウント」から操作を実行
- Azureポータルの「リソースの作成」をクリック
- 一覧から「ストレージアカウント」を選択して作成を開始
ストレージアカウントの作成
作成に必要な情報を入力します。
設定内容は任意ですが、
「リソースグループ」と「場所」はAzure Databricksと同じものを指定します。
設定が出来たら「次: 詳細 >」をクリックします。
「詳細」設定に関しては、今回はデフォルトのままでいきます。
「確認および作成」をクリックします。
設定内容に誤りがないことを確認、
「作成」をクリックします。
しばらく待機し、作成が完了したら作成したリソースに移動します。
マウント時のパラメータとして
ストレージアカウントの「アクセスキー」が必要です。
メニューの「アクセスキー」を開きます。
「key1」または「key2」いずれかの「キー」をコピーして控えておきます。
Blobコンテナーの作成とファイルの配置
ストレージアカウントのメニューの「概要」に戻り、
「サービス」の「BLOB」をクリックします。
「+コンテナー」をクリック
「名前」を任意のコンテナ名、
「パブリックアクセスレベル」を「プライベート」
としてコンテナを作成します。
ファイルを配置するため作成したコンテナーをクリックします。
コンテナーを開きます。
「↑アップロード」をクリックします。
ファイルを選択して「アップロード」をクリックします。
アップロードが完了するとコンテナーにファイルのリストが表示されます。
DBFSにBlob Storageをマウント
Blobコンテナーのマウント
Blob Storageのマウントは下記のスクリプトを使用します。
※以下の項目は作成したリソースに合わせて変更してください。
– ストレージ情報
– マウント先の DBFS ディレクトリ
一度マウントすると、Clusterを停止・変更してもマウント状態が維持されます。
マウントされた状態で再度操作を実行するとエラーが発生します。
マウント状態をチェックするか、スクリプトをコメントアウトしてエラーの回避します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Cmd 1 # Blob Storage情報 storage = { "account": "{ストレージアカウント名}", "container": "{Blobコンテナ名}", "key": "{ストレージアカウントキー}" } # マウント先DBFSディレクトリ mount_point = "/mnt/{マウント先ディレクトリ}" try: # マウント状態のチェック mount_dir = mount_point if mount_dir[-1] == "/": mount_dir = mount_dir[:-1] if len(list(filter(lambda x: x.mountPoint == mount_dir, dbutils.fs.mounts()))) > 0: print("Already mounted.") mounted = True else: mounted = False # Blob Storageのマウント if not mounted: source = "wasbs://{container}@{account}.blob.core.windows.net".format(**storage) conf_key = "fs.azure.account.key.{account}.blob.core.windows.net".format(**storage) mounted = dbutils.fs.mount( source=source, mount_point = mount_point, extra_configs = {conf_key: storage["key"]} ) except Exception as e: raise e "mounted: {}".format(mounted) |
下記スクリプトでマウントされているディレクトリを確認します。
Blob Storage をマウントしたディレクトリがリストで確認できます。
1 2 3 4 5 |
Cmd 2 # mount_point = "/mnt/{マウント先ディレクトリ}" display(dbutils.fs.mounts()) |
マウントされたディレクトリの確認
下記スクリプトを使用してマウントしたディレクトリ内のファイルを表示します。
※ マウントしたディレクトリにファイルが存在しないとエラーが発生します。
1 2 3 4 |
Cmd 3 # mount_point = "/mnt/{マウント先ディレクトリ}" display(dbutils.fs.ls(mount_point)) |
Blob コンテナーのアンマウント
ストレージのマウントを解除する場合は下記スクリプトを使用します。
1 2 3 4 |
Cmd 4 # mount_point = "/mnt/{マウント先ディレクトリ}" dbutils.fs.unmount(mount_point) |
秘密情報の安全な管理
秘密情報をスクリプト上に記載することはセキュリティ上の懸念となります。
ストレージアカウントキーのような秘密情報を安全に管理するため、
Azure Key Vault の使用が推奨されます。
Azure Key Vault のキーコンテナー作成
Azure ポータルの「リソースの作成」で「Key Vault」を検索します。
検索候補の「Key Vault」をクリックして作成を開始します。
「キーコンテナーの作成」に必要な情報を入力します。
- 「名前」: 任意の名称
- 「リソースグループ」: Azure Databricksと同じものを指定
- 「場所」: Azure Databricksと同じものを指定。
その他の設定はデフォルトのままとします。
キーの登録
作成したキーコンテナーにストレージアカウントキーを登録します。
作成したリソースのメニューから「シークレット」を開きます。
「+生成/インポート」をクリックします。
- 「アップロードオプション」:「手動」と選択
- 「名前」:任意の名称を入力
- 「値」:ストレージアカウントキーを入力
「作成」をクリックします。
Databricks に Azure Key Vault を登録
キーコンテナーのメニューから「プロパティ」を開きます。
「 DNS 名」と「リソース ID 」をコピーして控えておきます。
Databricks ワークスペースのホーム画面を開きます。
URL に「#secrets/createScope」を追加します。
「Create Secret Scope」のページを開きます。
- 「Scope Name」に任意のスコープ名を入力
- 「DNS Name」: 作成したキーコンテナーの「プロパティ」の「DNS名」を入力
- 「Resource ID」: 作成したキーコンテナーの「プロパティ」の「リソースID」を入力
※ Databricks作成時にStandard Planを選択した場合、
「Manage Principal」は「All Users」のみ選択できます。
入力したスコープ名はキーの取得に必要となるため控えておきます。
Notebookを開き、下記のスクリプトでスコープのリストを確認します。
スコープが登録されていると、
登録したスコープがリストにあることが確認できます。
1 2 3 |
Cmd1 display(dbutils.secrets.listScopes()) |
BlobコンテナーのマウントにKey Vaultのキーを使用する場合は、
Blob Storageの情報を下記のように書き換えます。
1 2 3 4 5 6 7 8 9 |
# Blob Storage情報 storage = { "account": "{ストレージアカウント名}", "container": "{Blobコンテナ名}", # "key": "{ストレージアカウントキー}" "key": dbutils.secrets.get(scope="{スコープ名}", key="{シークレット名}") } |
最後に
ストレージアカウントの作成から DBFS に Blob Storage をマウントする方法を解説していきました。
Azure Key Vault を使用した秘密鍵情報の管理を行うことで、データ分析業務に注力できる環境整備が行えそうですね。
Azure Databricks でデータ分析を行う際の参考になれば幸いです。
次回もお楽しみに!
参考
Databricks Documentation – Data Sources – Azure Blob Storage
クイックスタート:Azureポータルを使用してAzure Key Vaultから秘密を設定および取得する
Azure Databricksの導入ならナレコムにおまかせください。
弊社は、Databricksのソリューションパートナーとしてお客さまのデジタルトランスフォーメーションの推進に貢献致します。
導入から活用方法までサポートします。お気軽にご相談ください。
Azure Databricksソリューションページはこちら
Databricks ソリューションパートナーに関してはこちら