Databricksのレガシーグローバルinitスクリプト移行ノートブック

[Legacy global init script migration notebook \- Databricks](https://kb.databricks.com/legacy-global-init-script-migration-notebook) [2023/3/30時点]の翻訳(一部加筆)です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

2023/9/1、Databricksはすべてのワークスペースにおいてレガシーグローバルinitスクリプトを無効にします。このタイプのinitスクリプトは2020年に非推奨となっており、2023/9/1以降は利用できません。レガシーグローバルinitスクリプトは、2020年により信頼性のある現行のグローバルinitスクリプトフレームワークで置き換えており、こちらは継続してサポートされます。

可能な限りすぐにレガシーグローバルinitスクリプトを現行のグローバルinitスクリプトに移行することをお勧めします。

ドキュメント([AWS](https://docs.databricks.com/clusters/init-scripts.html#migrate-from-legacy-to-new-global-init-scripts) | [Azure](https://learn.microsoft.com/azure/databricks/clusters/init-scripts#--migrate-from-legacy-to-new-global-init-scripts))に従ううか、[以下の手順](#手動での移行手順)を参考にして手動で**レガシーグローバルinitスクリプトと新しいグローバルinitスクリプトに移行**することができます。あるいは、移行プロセスを自動化を支援するノートブックを、Databricksエンジニアリングで作成しています。

:::note
本書はGCPワークスペースには適用されません。GCPワークスペースでレガシーグローバルinitスクリプトを使用することはできません。
:::

# 手動での移行手順

[Migrate from legacy to new global init scripts](https://docs.databricks.com/clusters/init-scripts.html#global-init-scripts)の翻訳です。

レガシーグローバルinitスクリプトを新たなグローバルinitスクリプトに移行するには:

1. 既存のレガシーグローバルinitスクリプトをコピーし、[UI](https://docs.databricks.com/clusters/init-scripts.html#global-init-script-ui)あるいは[REST API](https://docs.databricks.com/clusters/init-scripts.html#global-init-script-api)を用いて新たなグローバルinitスクリプトフレームワークに追加します。

    次のステップを完了するまで、これらを無効化しておいてください。

1. すべてのレガシーグローバルinitスクリプトを無効化します。

    Admin Consoleで**Global Init Scripts**タブに移動し、**Legacy Global Init Scripts**のトグルをオフにします。
    ![](https://docs.databricks.com/_images/disable-legacy-global-init-scripts.png)

1. 新たなグローバルinitスクリプトを有効化します。
    **Global Init Scripts**タブで、有効化したいinitスクリプトの**Enabled**トグルを切り替えます。

1. すべてのクラスターを再起動します。

    - レガシーなスクリプトは、稼働中のクラスターで自動でスケールアップされた新規ノードでは実行されません。これらの新規ノードでは新たなグローバルinitスクリプトも実行されません。新規スクリプトが実行されるように、そして、既存のクラスターがグローバルスクリプトなしに新規ノードを追加しないように、すべてのクラスターを再起動しなくてはなりません。
    - 新たなグローバルinitスクリプトフレームワークに移行し、レガシースクリプトを無効化する際、非冪等性なスクリプトを修正する必要があるかもしれません。

# ノートブック実行手順

:::note warn
**警告**
移行ノートブックを実行するにはDatabricks管理者である必要があります。
:::


## 前提条件

移行ノートブックを実行する前に、お使いのパーソナルアクセストークンを格納するスコープとシークレットを作成しておく必要があります。

詳細については、**Create a Databricks-backed secret scope**([AWS](https://docs.databricks.com/security/secrets/secret-scopes.html#create-a-databricks-backed-secret-scope) | [Azure](https://learn.microsoft.com/azure/databricks/security/secrets/secret-scopes#create-a-databricks-backed-secret-scope))と**Create a secret in a Databricks-backed scope**([AWS](https://docs.databricks.com/security/secrets/secrets.html#create-a-secret-in-a-databricks-backed-scope) | [Azure](https://learn.microsoft.com/azure/databricks/security/secrets/secrets#create-a-secret-in-a-databricks-backed-scope))のドキュメントをご覧ください。

## ドライランの実行

ドライランを実行することで、変更を引き起こすことなしにワークスペースで移行ノートブックをテストすることができます。

1. [Migrate legacy global init scripts notebook](https://static.helpjuice.com/helpjuice_production/uploads/upload/image/10723/2997127/1680127110785-Migrate%2Blegacy%2Bglobal%2Binit%2Bscripts.html)をダウンロードします。
1. ワークスペースにノートブックをインポートします。
1. クラスターを起動します
1. ノートブックを実行します。
1. ノートブックを実行するとUIが表示されます。適切なフィールドに**Scope Name**と**Secret Name**を入力します。
    ![](https://static.helpjuice.com/helpjuice_production/uploads/upload/image/10723/direct/1680125511828-Migrate%20legacy%20global%20init%20scripts%20-%20dry%20run.png)
1. 設定を更新後、2回目のノートブックの実行を行います。

エラーが出なければ、レガシーグローバルinitスクリプトの移行の準備が整ったこととなります。

## レガシーグローバルinitスクリプトの移行

システムに変更を行う前は常にドライランを実行すべきです。

1. Migrate legacy global init scriptsノートブックを実行します。
1. ノートブックを実行するとUIが表示されます。適切なフィールドに**Scope Name**と**Secret Name**を入力します。
1. **Dry Run**ドロップダウンメニューで**False**を選択します。これによって、ノートブックがワークスペースに変更を加えるようになります。
1. **Enable New Scripts**を**True**に設定します。これによって、ワークスペースで現行のグローバルinitスクリプトを有効化します。スクリプトを移行したいが有効化したく無い場合には**False**を選択します。
1. **Remove Old Scripts**を**True**に設定します。これによって、レガシーグローバルinitスクリプトを削除します。
1. **Revert Changes**で**False**を選択します。特定の理由で変更を取りやめる必要がある場合にのみ**True**を選択します。
    ![](https://static.helpjuice.com/helpjuice_production/uploads/upload/image/10723/direct/1680125644550-Migrate%20legacy%20global%20init%20scripts%20-%20run%20migration.png)
1. 設定を更新後、ノートブックを再度実行します。

## 移行されたスクリプトの検証

1. **Admin Console**を開きます。
1. **Global init scripts**をクリックします。
1. すべてのレガシーグローバルinitスクリプトが存在することを確認します。
1. それぞれのスクリプトのオンオフを切り替えるために、**Enabled**トグルを切り替えます。
1. スクリプトの実行順を変更するには**Edit ordering**をクリックします。
1. クラスターを再起動し、スクリプトが期待通り実行されることを確認します。

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)