コンピューティング用のライブラリをインストールする

完了

Azure Databricks コンピューティングでノートブックとジョブを実行する場合、多くの場合、既定のランタイムに含まれていないサードパーティのパッケージまたはカスタム コードが必要になります。 クラスター レベルライブラリをインストールすると、そのコンピューティングを使用するすべてのノートブックとジョブが同じ依存関係にアクセスでき、一貫性のある実行環境が作成されます。

データ エンジニアリング ワークフローが複雑になるにつれて、ライブラリを効果的にインストールする方法を理解することが重要になります。 使用するインストール方法、ライブラリ ファイルを格納する場所、およびアクセス モードがオプションに与える影響を把握する必要があります。

コンピューティング スコープ ライブラリについて

コンピューティング スコープ ライブラリは クラスターにインストールされ、そのクラスターで実行されるすべてのノートブックとジョブで使用できるようになります。 特定のノートブック セッションにのみインストールされる ノートブック スコープライブラリ とは異なり、コンピューティング スコープライブラリはクラスターの再起動間で保持され、すべてのユーザーに共有環境を提供します。

クラスター レベルでライブラリをインストールすると、クラスターが起動するたびに Azure Databricks によって自動的に再インストールされます。 この動作により、一貫性が確保されます。クラスターを停止して再起動した後に依存関係を手動で再インストールする必要はありません。 クラスターにアタッチされているすべてのノートブックは、インストールされているパッケージをすぐにインポートして使用できます。

クラスターにライブラリをインストールするには、そのクラスターに対する CAN MANAGE アクセス許可が必要です。 このアクセス許可を使用すると、ライブラリの追加や削除など、クラスター構成を変更できます。 このアクセス許可がないと、ライブラリのインストール インターフェイスにアクセスできなくなります。

コンピューティング スコープ ライブラリでは、 Python ホイールJava JAR ファイルおよび R パッケージがサポートされます。 PyPIMaven などのパッケージ リポジトリから、またはワークスペース ファイルUnity カタログ ボリューム、またはクラウド オブジェクト ストレージに格納されているファイルからインストールできます。 選択するインストール方法は、ライブラリの種類、クラスター アクセス モード、組織のセキュリティ要件によって異なります。

ただし、コンピューティング スコープライブラリには重要な制限があります。インストールするライブラリは、クラスター上のすべてのノートブックに影響します。 異なるチームで同じライブラリのバージョンの競合が必要な場合は、競合を回避するために、個別のクラスターまたはノートブック スコープのインストールが必要になります。

パッケージ リポジトリからライブラリをインストールする

パッケージ リポジトリは、 ライブラリをインストールする最も一般的な方法を提供します。 PyPI は Python パッケージをホストし、Maven は Java ライブラリと Scala ライブラリをホストし、 CRAN は R パッケージをホストします。 これらのリポジトリは、依存関係の 解決 とバージョン管理を自動的に処理します。

PyPI からライブラリをインストールするには、ライブラリ ソースとして PyPI を選択し、パッケージ名を入力します。 運用環境のワークロードの場合は、正確なバージョンを指定して再現性を確保します: pymssql==2.3.9。 バージョン番号がない場合、Azure Databricks は利用可能な最新バージョンをインストールします。これは、インストールの間で変更され、コードが破損する可能性があります。

Azure Databricks の [ライブラリのインストール] ダイアログ (PyPI) のスクリーンショット。

Maven ライブラリには、形式のgroupId:artifactId:versionが必要です。 たとえば、Microsoft JDBC Driver for SQL Server ライブラリをインストールするには、 com.microsoft.sqlserver:mssql-jdbc:13.2.1.jre11を使用します。 正確な座標がわからない場合は、インストール ダイアログでパッケージを直接検索できます。 Maven では、インストールされている他のライブラリと競合する可能性がある特定の推移的な依存関係の除外もサポートされています。

Azure Databricks の [ライブラリのインストール] ダイアログ (Maven) のスクリーンショット。

CRAN からの R パッケージの場合は、パッケージ名を指定します。 Python および Java ライブラリとは異なり、CRAN インストールは常に、構成されたミラーから最新バージョンをプルします。 特定の R パッケージ バージョンをピン留めするには、CRAN からインストールするのではなく、ワークスペース ファイルまたはボリュームにパッケージ ファイルを格納する必要があります。

クラスターが標準アクセス モードで構成されている場合、Maven 座標と JAR ファイル パスでは、インストール前allowlist承認が必要になります。 このセキュリティ対策により、管理者は共有コンピューティング リソースで実行されるライブラリを確認および承認できます。

ライブラリの allowlists の構成と管理の詳細については、ドキュメントを参照 してください

ファイルからライブラリをインストールする

ワークスペース ファイルまたは Unity カタログ ボリュームにライブラリ ファイルを格納すると、クラスターで使用するライブラリ バージョンを正確に制御できます。 この方法は、パブリック リポジトリで使用できないライブラリ、内部でビルドしたカスタム パッケージ、またはパッケージ リポジトリから使用できなくなった特定のバージョンが必要な場合に適しています。

ライブラリのインストールにワークスペース ファイルと Unity カタログ ボリュームを使用すると、直接 pip3 コマンドやノートブックから実行されるアンマネージド カスタム スクリプトなどのアドホック インストールでセキュリティ コントロールをバイパスするのではなく、一元的な管理が維持されます。 Unity カタログ ボリュームは、Unity カタログのアクセス制御モデルを通じてガバナンスを強化し、すべてのライブラリ インストールが監査ログで追跡され、きめ細かいアクセス許可によって保護されるようにします。

ワークスペース ファイルは、500 MB のファイル サイズ制限があるライブラリ ストレージに便利な場所を提供します。 ワークスペース ファイルからライブラリをインストールするには、[ワークスペースのインポート] ダイアログで wheel、JAR、または requirements.txt ファイルをアップロードし、 /Workspace/Users/you@example.com/libraries/mypackage-1.0.0-py3-none-any.whlなどのパスを使用してライブラリのインストール中に参照します。

ワークスペースの [インポート] ダイアログを見つける場所を示すスクリーンショット。

Unity カタログ ボリュームは、ライブラリ ストレージのセキュリティとガバナンスを強化します。 Unity カタログのアクセス許可を使用してアクセスを制御し、承認されたユーザーのみがライブラリ ファイルの読み取りまたは変更を実行できるようにします。 カタログ エクスプローラーを使用してボリュームにファイルをアップロードし、 /Volumes/main/engineering/libraries/mypackage-1.0.0-py3-none-any.whlなどのパスを使用してインストールします。 インストールに使用される ID には、指定されたボリュームに対する READ VOLUME 権限 が必要です。

Unity カタログのボリュームにアップロードされたライブラリを示すスクリーンショット。

Python requirements.txt ファイル は、Databricks Runtime 15.0 以降のワークスペース ファイルとボリュームの両方で動作します。 これらのファイルを使用すると、1 つのファイルに複数のパッケージ依存関係を定義できるため、クラスター間で一貫性のある環境を維持しやすくなります。 requirements.txt ファイルをアップロードし、他のライブラリと同様にインストールします。Azure Databricks では、一覧に記載されているすべてのパッケージが自動的にインストールされます。

標準アクセス モードのクラスターの場合は、インストール前にライブラリ ファイルパスを allowlist に追加する必要があります。 これはワークスペース ファイルとボリュームの両方に適用され、管理者は共有コンピューティングで使用されるライブラリを承認します。

高度な構成に init スクリプトを使用する

Init スクリプトは、 Spark ドライバーと Executor が起動する前に、 クラスターの起動時にシェル コマンドを実行します。 Databricks ではライブラリのインストールに init スクリプトを使用 することはお勧めしません が、クラスター スコープのライブラリは優れたアプローチを提供します。init スクリプトは、ライブラリで処理できないシステム レベルの 構成 に役立ちます。

init スクリプトを使用して、 apt-getを使用してシステム パッケージをインストールしたり、環境変数を構成したり、監視エージェントを設定したりできます。 たとえば、init スクリプトでは、システム ライブラリを必要とする特殊なデータベース ドライバーをインストールし、環境変数を使用して接続パラメーターを構成できます。 スクリプトはクラスターが起動するたびに実行され、再起動しても構成が維持されます。

Databricks Runtime 13.3 LTS 以降を実行しているクラスターの Unity カタログ ボリュームに init スクリプトを格納します。 シェル スクリプト ファイルを作成し、ボリュームにアップロードしてから、 /Volumes/main/engineering/scripts/setup.shなどのパスを指定してスクリプトを実行するようにクラスターを構成します。 標準アクセス モードの場合は、クラスターを構成する前に、 allowlist に init スクリプト パスを追加します。

Init スクリプトは、指定した順序で順番に実行されます。 スクリプトから 0 以外の終了コードが返された場合、クラスターの起動に失敗します。 この障害保護により、クラスターが不完全または正しくない構成で実行されるのを防ぐことができます。 クラスター ログ配信を構成し、init スクリプト ログを調べることで、失敗した init スクリプトのトラブルシューティングを行うことができます。

init スクリプトは、クラスター スコープのライブラリとクラスター ポリシーで対処できない構成ニーズの最後の手段と考えてください。 クラスター ポリシーを使用して環境変数と Spark 構成を設定すると、多くの場合、init スクリプトよりもシンプルで保守しやすいソリューションが提供されます。

標準アクセス モード用にライブラリを構成する

標準アクセス モードで構成されたクラスターは、Azure Databricks で最も強力なセキュリティと分離を提供します。 このモードでは、共有コンピューティング リソースでの未承認のコード実行を防ぐために、ライブラリと初期化スクリプトの明示的な承認が必要です。

Maven ライブラリまたは JAR ファイルを標準アクセス モード クラスターにインストールする前に、 メタストア管理者 がそれらを allowlistに追加する必要があります。 Maven 座標はallowlist上でフォーマットgroupId:artifactId:versionに従って配置されます。 allowlistを使用してライブラリのすべてのバージョンをgroupId:artifactIdすることも、groupIdだけでグループ内のすべての成果物をすることもできます。 ボリュームまたはオブジェクト ストレージに格納されている JAR ファイルの場合は、ファイル パスまたはディレクトリ パスを allowlist します。

Init スクリプトでは、JAR ファイルと同じ場所に格納されている場合でも、個別の allowlist エントリが必要です。 パスの一覧表示を許可すると、Azure Databricks ではプレフィックス 照合が使用されます。 /Volumes/prod-libraries/allowlist に追加すると、その場所内のすべてのファイルとサブディレクトリが許可されます。 ディレクトリ レベルで意図しないプレフィックスの一致を防ぐために、末尾にスラッシュを含めます。

allowlistは、ライブラリまたは init スクリプトのインストールにパスを使用するアクセス許可のみを付与します。 引き続き適切なデータ アクセス許可が必要です。 ボリュームの場合、インストーラー ID には READ VOLUME アクセス許可が必要です。 標準アクセス モードの場合、クラスター所有者の ID はライブラリのインストール中にこれらのアクセス許可を検証します。

allowlistを構成するには、metastore 管理者はカタログ エクスプローラーを使用し、メタストア設定を選択し、[許可された JAR/Init Scripts] セクションに移動します。 この一元化された制御により、セキュリティ チームは、組織のコンピューティング リソース全体で使用されるすべてのライブラリを確認および承認でき、生産性を妨うことなくガバナンスを維持できます。

[許可された JAR の追加] / [Init Scripts] / [Maven Coordinates]\(Maven 座標\) ダイアログ ボックスのスクリーンショット。

適切なインストール方法を選択する

異なるライブラリのインストール方法は、さまざまなシナリオに適しています。 次の図は、適切なインストール 方法の選択に役立つ決定フローを示しています。

さまざまなライブラリのインストール方法を示す図。