1. はじめに
皆さんこんにちは。
今回は、 Databricksコンテナーサービスの利用方法について説明していきます。
Databricks container servicesはDatabricksクラスターの作成時に Docker イメージを指定できます。利用目的を次に示します。
- インストールするシステムライブラリを完全に制御できます。
- Docker イメージは、絶対に変更されないロックダウンされた環境です。
- Azure Databricks を Docker CI/CD と統合できます。
※ 注意:
- Databricks Runtime for Machine Learning では、Databricks container services はサポートされていません。
- Databricks container services は、共有アクセス モードを使用するクラスターではサポートされていません。
2. 前提要件
- Azure Databricksワークスペースが必要です。
- Azure コンテナーレジストリが必要です。
- Azure CLIが必要です。
- Azure アカウントにコンテナーレジストリへの書き込みアクセス許可が付与されている必要があります。
- デーモンを実行してローカルに Docker をインストールする必要があります。
3. コンテナー サービスを有効にする
① クラスター上でコンテナーを利用するには、ワークスペース管理者はDatabricksコンテナーサービス機能を有効にすることが必要です。 以下のAPIを利用して、その機能を有効にできます。
1 2 3 4 5 |
curl -X PATCH -n \ https://<Databrickss-instance>/api/2.0/workspace-conf \ -d '{ "enableDcs": "true" }' |
※ <Databricks-instance> をワークスペース名に変更する。
※ 注意: 他のツールを利用して、APIを実施できます。今回は、Postmanツールを利用しています。
4. Docker HubからAzureコンテナーレジストリにベースイメージをインポートする
ベース イメージは、 Docker Hub でホストされています。 今回はAzureコンテナーレジストリを利用するので、Docker HubからAzureコンテナーレジストリにベースイメージをインポートすることが必要です。
Databricks ではさまざまなイメージが提供されていますが、今回は [python:10.4-LTS] イメージを使用します。
Docker HubからAzureコンテナーレジストリへ [python:10.4-LTS] イメージをインポートするには、Azureコンテナーレジストリにログインが必要です。
① Azure CLIにログインして、以下のコマンドを実行します。
文法:
1 |
az acr login --name <acr-name> |
※ <acr-name>をAzureコンテナーレジストリ名に変更します。
例:
1 |
az acr login --name acrjapaneast001 |
② 次に、以下のコマンドを実行します。
文法:
1 |
az acr import --name <acr-name> --source docker.io/Databrickssruntime/<image-name> --image <image-name> |
※ <acr-name>をAzureコンテナーレジストリ名に変更します。
※ <image-name>をイメージ名に変更します。
例:
1 |
az acr import --name acrjapaneast001 --source docker.io/Databrickssruntime/python:10.4-LTS --image python:10.4-LTS |
③ Azureコンテナーレジストリへアクセスして、インポート完了を確認します。
5. ベースを構築する
ベースイメージをインポートした後で、希望のイメージを構築できます。
① [dockerfile]を作成して、以下のコマンドを追加します。
文法:
1 |
FROM <acr-name>.azurecr.io/<image-name> |
※ <acr-name>をAzureコンテナーレジストリ名に変更します。
※ <image-name>をインポートされたイメージ名に変更します。
例:
1 |
FROM acrjapaneast001.azurecr.io/python:10.4-LTS |
② [XlsxWriter==3.1.8] や [openpyxl==3.1.2]等の標準で対応しないライブラリを指定するには、以下のコマンドを追加します。
1 2 |
RUN /Databrickss/python3/bin/pip install XlsxWriter==3.1.8 RUN /Databrickss/python3/bin/pip install openpyxl==3.1.2 |
③ [dockerfile]の作成完了後、イメージを構築します。[dockerfile]を含むフォルダーでCommand Promptを開き、以下のコマンドを実行します。
文法:
1 |
docker build -t <acr-name>.azurecr.io/<custome_image_name> . |
※ <acr-name>をAzureコンテナーレジストリ名に変更します。
※ <custome_image_name> を任意の名前に変更します。
例:
1 |
docker build -t acrjapaneast001.azurecr.io/python_custome_image:10.4 . |
④ 構築完了後、Azureコンテナーレジストリにイメージをプッシュします。
文法:
1 |
docker push <acr-name>.azurecr.io/<custome_image_name> |
※ <acr-name>をAzureコンテナーレジストリ名に変更します。
※ <custome_image_name> を構築したイメージ名に変更します。
例:
1 |
docker push acrjapaneast001.azurecr.io/python_custome_image:10.4 |
6. 汎用クラスターを起動する
① Databricks画面から、[Compute] -> [Create compute]をクリックします。
② クラスター構成を設定します。
- [Access mode] -> [Single user]
- [Databricks runtime version] -> [Runtime: 10.4 LTS]
※ 注意: Docker ImageのバージョンとDatabricks ランタイムのバージョンは同一にする必要があります。
Docker ImageにはDatabricks ランタイムに必要な OSと依存関係が含まれているためです。
③ [Advanced options] -> [Docker] -> [Use your own Docker container]を有効にします。
④ [Docker Image URL]にDockerイメージのURLを入力します。
文法:
1 |
<acr-name>.azurecr.io/<image-name> |
※ <acr-name>をAzureコンテナーレジストリ名に変更します。
※ <custome_image_name> を構築したイメージ名に変更します。
例:
1 |
acrjapaneast001.azurecr.io/python_custome_image:10.4 |
⑤ [Authentication] -> [Username and Password]
⑥ ユーザー名とパスワードを入力します。Azureコンテナーレジストリの[Access keys]からユーザー名とパスワードを取得できます。
⑦ [Create compute]をクリックします。
Databricks Container Service を使用したクラスターの作成が完了しました。
[XlsxWriter==3.1.8] と [openpyxl==3.1.2]ライブラリを利用したノートブックを作成し、汎用クラスターを確認します。
⑧ Databricksワークスペース画面から -> [New] -> [Notebook]
⑨ 作成したクラスタを選択し、ノートブックを実行します。以下のコマンドを入力して、[Shift + Enter]を押します。
1 2 3 4 5 6 7 8 |
import pandas as pd filename="test.xlsx" #ファイル名 exportlist=[1,1,2,3,1,4,5] #リスト df = pd.DataFrame(exportlist) #データフレームの作成 writer = pd.ExcelWriter(filename,options={'strings_to_urls': False}, engine='xlsxwriter') df.to_excel(writer, sheet_name="Sheet1")#Writerを通して書き込み writer.close() pd.read_excel('test.xlsx') |
⑩ 結果が以下の画像通りです。
7. ジョブクラスターを起動する
① Databricksワークスペース画面から、[Workflows] -> [Create job]をクリックします。
② ジョブ構成を設定します。
- [Task name] -> [My-Task-001]
- [Type] -> [Notebook]
- [Source]: [Workspace]
- [Path]: 作成したノートブックのパス
- [Cluster]項目で アイコンをクリックします。
③ ジョブクラスター作成画面では、汎用クラスター作成時と同様に設定します。[Confirm]をクリックします。
④ [Create]をクリックします。
⑤ ジョブ名を入力して、[Confirm and create]をクリックします。
⑥ [Run now]をクリックします。
⑦ 結果が以下の画像通りです。
8. まとめ
本記事ではDatabricks container servicesの利用方法について説明しました。
今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。
日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!
Azure Databricks連載記事のまとめはこちら
お問い合わせはこちら
この記事を書いた人
- quanna