0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricks Container Service(DCS)のマニュアルを読んだことはあったのですが、触ったことがなかったのでウォークスルーします。

Databricksランタイムの課題

Databricksの計算資源であるクラスターを起動する際には、ランタイムを用いて必要なソフトウェアが自動でインストールされます。

Databricks ランタイムは、データブリックスが管理するマシンのクラスタ上で実行されるソフトウェアアーティファクトのセットです。Spark はもちろん、ビッグデータ分析の操作性やパフォーマンス、セキュリティなどを大幅に向上させるコンポーネントや更新プログラムも数多く追加されています。

大抵のニーズはこれで充足できるのですが、以下のようなケースでは代替案が欲しくなります。

  • 自分のクラスターでどのようにdatadogをセットアップしたらいいのか?
  • ネイティブにコンパイルしたコードを必要とする複雑なMLライブラリをどのようにインストールしたらいいのか?
  • PyPiは当てにならない。10回に1回はジョブが失敗する。どのように信頼性を高めることができるのか?
  • ネイティブコードのコンパイルに時間がかかりすぎる。
  • ライブラリが必要だが、ランタイムに組み込まれているライブラリと競合する依存関係がある。

ライブラリinitスクリプトの機能である程度カバーはできるのですが完全ではありません。

Databricks Container Service(DCS)

そこで、Databricks Container Service(DCS)の出番です。

Databricks Container Services を使用するとコンピューティングの作成時に Docker イメージを指定できます。 ユース ケースの例を次に示します。

  • ライブラリのカスタマイズ: インストールするシステム ライブラリを完全に制御できます。
  • ゴールデン コンテナー環境: Docker イメージは、絶対に変更されないロックダウンされた環境です。
  • Docker CI/CD 統合: Azure Databricks を Docker CI/CD と統合できます。

全体的な流れは以下の通りです。
Screenshot 2024-07-03 at 8.50.43.png

DCSの有効化

最初に、イメージをカスタマイズせずにインストールしてみますが、その前にDCSを有効化する必要があります。有効化にはWorkspace Conf REST APIを使います。

まずは、対象のワークスペースでDCSが有効化されているかどうかを確認します。ここでは、背後ではREST APIを呼び出しているDatabricks CLIを使います。なお、以下のmy_azureはプロファイル名です。

databricks workspace-conf get-status enableDcs -p my_azure

この時点では有効化されていません。

{
  "enableDcs":""
}

有効化します。

databricks workspace-conf set-status enableDcs --json '{"enableDcs": "true"}' -p my_azure

確認します。

databricks workspace-conf get-status enableDcs -p my_azure

有効化されました。

{
  "enableDcs":"true"
}

これで、クラスター作成時にDockerイメージを選択できるようになります。
Screenshot 2024-07-03 at 9.27.06.png

ベースイメージのインストール

Dockerhubでベースイメージが公開されています。

databricksruntime/standard:10.4-LTSをインストールしてみます。

DockerイメージURLにはdatabricksruntime/standard:10.4-LTSを指定します。コロン以降がタグとなり、これが対応するDatabricksランタイムのバージョンを指定しています。
Screenshot 2024-07-03 at 9.29.20.png

ですので、ランタイムのバージョンもそろえます。
Screenshot 2024-07-03 at 9.30.04.png

起動しました。
Screenshot 2024-07-03 at 9.34.54.png

カスタムイメージのインストール

次にカスタムイメージを作成します。なお、こちらの記事で非常に詳細な手順がカバーされています。

ここからは、Dockerがインストールされているマシンでの作業となります。Azure Container Regstryを使う場合にはAzure CLIもインストールします。以下では、Azure Container Regstryを前提に作業します。事前にコンテナレジストリを作成しておきます。
Screenshot 2024-07-03 at 9.34.01.JPG

az login
az acr login --name <レジストリ名>

ベースイメージをインポートします。

az acr import --name <レジストリ名> --source docker.io/databricksruntime/standard:10.4-LTS --image standard:10.4-LTS

取り込まれました。
Screenshot 2024-07-03 at 10.38.24.JPG

カスタムイメージのdockerfileを作成します。ここではdbdemosライブラリを追加しています。

dokcerfile
FROM <レジストリ名>.azurecr.io/standard:10.4-LTS
RUN /databricks/python3/bin/pip install dbdemos==0.4.6

なお、デフォルトではインストールされていないので、importするとエラーになります。
Screenshot 2024-07-03 at 10.50.41.JPG

dockerfileのあるパスで以下を実行します。

docker build -t <レジストリ名>.azurecr.io/standard_custome_image:10.4 .

処理が終わるとイメージが出来上がります。
Screenshot 2024-07-03 at 11.07.17.JPG

コンテナレジストリにプッシュします。

docker push <レジストリ名>.azurecr.io/standard_custome_image:10.4

プッシュされました。
Screenshot 2024-07-03 at 11.10.26.JPG

Databricksからイメージを取り出せるように、トークンとパスワードを作成します。
Screenshot 2024-07-03 at 11.13.17.JPG

Databricksのクラスター設定で、DockerイメージURLに上記レジストリのURLを指定し、上で作成したユーザー(トークン名)とパスワードを指定します。
Screenshot 2024-07-03 at 11.14.30.JPG

起動しました!
Screenshot 2024-07-03 at 11.25.47.JPG

pip installしなくてもdbdemosが動きました!
Screenshot 2024-07-03 at 11.30.25.JPG

参考資料

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?