はじめに
閉域構成の Azrure Databricks からライブラリのインストールやMLモデルのダウンロード等のインターネットへの通信をオンプレのプロキシサーバ経由とさせたい場合があるかと思います。
その際にポリシーを使用したプロキシの設定を検証してみました。
以下の記事から派生した内容となるため、 Databricks のデプロイ方法等についてはこちらをご参照ください。
併せて、requirements.txtを使用したライブラリのインストールも試してみました。
環境変数にプロキシを設定するコンピューティングポリシーを作成
ポリシーの概要は以下の通りです。
今回は spark 環境変数として PROXY と NO_PROXY を設定するポリシーの定義を記載します。
PROXY だけだと、ワークスペースフォルダやボリュームにアクセスできない等の事象が発生するため、NO_PROXY も設定しておいたほうが良いかと思います。
{
"spark_env_vars.HTTP_PROXY": {
"type": "fixed",
"value": "http://<プロキシサーバの IP >:<ポート>"
},
"spark_env_vars.HTTPS_PROXY": {
"type": "fixed",
"value": "http://<プロキシサーバの IP >:<ポート>"
},
"spark_env_vars.NO_PROXY": {
"type": "fixed",
"value": "<ワークスペース ID >,localhost,127.0.0.1,<ワークスペースのリージョン>.azuredatabricks.net"
}
}
クラスターにポリシーを適用
クラスター作成画面から、ポリシーを選択して適用します。
適用後にクラスターを再起動すると、[高度なオプション] > [Spark] > [環境変数] にポリシーで定義した内容が表示されます。
ここまででプロキシの設定は完了となります。
requirements.txt を使用したライブラリのインストール
プロキシの設定を確認するために、ライブラリのインストールを実施します。
ノートブックでのインストールは以下の記事にある、%pip install ~ で実施できます。
ここでは ワークスペースフォルダに requirements.txt をアップロードしてライブラリをインストールする方法を紹介したいと思います。
注意
この方法では Databricks Runtime 15.0 以降が必要です。
ドキュメントはこちら。
準備
以下のような形で requirements.txt を用意して、ワークスペースにアップロードしておきます。
特定のバージョンを指定することも可能です。
インストール
プロキシを設定したクラスターを選択して、[クラスター] > [ライブラリ] > [新規をインストール]を選択します。
[ワークスペース]を選択し、すでにアップロードしてある requirements.txt を選択してインストールします。(新規でアップロードすることも可能)
クラスターを再起動して正常にインストールできると以下のようなステータスとなります。
以下のコードで指定したバージョンがインストールされているかを確認することができます。
%pip show <ライブラリ名> <ライブラリ名> …
参考
クラスター共通でインストールさせたいライブラリがある場合は、ポリシーとして requirements.txt を設定しておくことも可能です。
おわりに
他にも必要な設定があれば、ポリシー定義に記載しておくことでユーザが使用するクラスターの管理がしやすくなるのかなと思いました。