Databricksファイルシステム(DBFS)とは何か？

[What is the Databricks File System \(DBFS\)? \| Databricks on AWS](https://docs.databricks.com/dbfs/index.html) [2022/8/18時点]の翻訳です。

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

DatabricksファイルシステムはDatabricksワークスペースにマウントされる分散ファイルシステムであり、Databricksクラスターから利用することができます。DBFSは、ネイティブクラウドストレージAPIの呼び出しにマッピングされる最適化FUSE(Filesystem in Userspace)インタフェースを提供するスケーラブルなオブジェクトストレージ上にある抽象化レイヤーです。

:::note
**注意**
Databricksワークスペースは、デフォルトで全てのユーザーがアクセスできる[DBFSルートボリューム](#dbfsルートとは何か)とともにデプロイされます。この場所にプロダクションデータを格納することはお勧めしません。
:::

# DBFSで何ができるか？

DBFSは、クラウドオブジェクトストレージのURIを相対パスにマッピングすることで以下のようなメリットを提供します。

- クラウド固有のAPIコマンドではなく、ディレクトリとファイルのセマンティクスを用いて[オブジェクトストレージを操作](#クラウドベースのオブジェクトストレージのファイルを操作する)できるようになります。
- ストレージの資格情報をDatabricksワークスペースのパスにマッピングできるように、クラウドオブジェクトストレージのロケーションを[マウント](#オブジェクトストレージをマウントする)できるようになります。
- オブジェクトストレージにファイルを永続化するプロセスをシンプルにし、クラスター停止時に、安全に仮想マシンとアタッチされたボリュームを削除できるようになります。
- クラスター初期化のためのinitスクリプト、JAR、ライブラリ、設定情報を格納する便利なロケーションを提供します。
- OSSのディープラーニングライブラリを用いたモデルトレーニングの過程で、チェックポイントファイルを保存する便利なロケーションを提供します。

# クラウドベースのオブジェクトストレージのファイルを操作する

DBFSは、クラウドオブジェクトストレージのファイルを操作するための数多くのオプションを提供します。

- [Databricksにおけるファイルの操作方法](https://qiita.com/taka_yayoi/items/45bfc7ac322571acadf5)
- [Databricksユーティリティを用いて、ファイルを一覧、移動、コピー、削除する](https://qiita.com/taka_yayoi/items/3717623187859809515d#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3dbutilsfs)
- [Browse files in DBFS](https://docs.databricks.com/dbfs/file-browser.html)
- [Upload files to DBFS with the UI](https://docs.databricks.com/data/data-tab.html)
- [Interact with DBFS files using the Databricks CLI](https://docs.databricks.com/dev-tools/cli/dbfs-cli.html)
- [Interact with DBFS files using the Databricks REST API](https://docs.databricks.com/dev-tools/api/latest/dbfs.html)

# オブジェクトストレージをマウントする

DBFSにオブジェクトストレージをマウントすることで、ローカルファイルシステムに存在するかのようにオブジェクトストレージのオブジェクトにアクセスできるようになります。マウントにはストレージにアクセスする際に必要なHadoop設定が格納されるので、コードやクラスター設定でこれらの設定を指定する必要はありません。

詳細は、[Mounting cloud object storage on Databricks](https://docs.databricks.com/dbfs/mounts.html)をご覧ください。

# DBFSルートとは何か？

*DBFSルート*とは、Databricksワークスペースのデフォルトストレージロケーションであり、Databricksワークスペースを含むクラウドアカウントでのワークスペースの作成過程でプロビジョンされます。DBFSルートの設定とデプロイメントの詳細については、[Configure AWS storage](https://docs.databricks.com/administration-guide/account-api/aws-storage.html)をご覧ください。DBFSルートのデータの保護に関するベストプラクティスについては、[DBFSルートを操作する際の推奨事項](https://qiita.com/taka_yayoi/items/406b639a9dcd43dbcc54)をご覧ください。

何人かのDatabricksユーザーは、DBFSルートを「DBFS」とみなす傾向があります。DBFSはクラウドオブジェクトストレージのデータを操作するために使用されるファイルシステムであり、DBFSルートはクラウドストレージのロケーションであるという違いを知ることが重要です。DBFSルートを操作するためにDBFSを使用しますが、これらは別の概念であり、DBFSにはDBFSルートよりも多くのアプリケーションが存在します。

DBFSルートには、ワークスペースのユーザーによって実行されるさまざまなアクションのデフォルトとして動作する数多くの特殊なロケーションが含まれています。詳細に関しては、[DBFSルートにはデフォルトでどのようなディレクトリが存在するのか？](https://qiita.com/taka_yayoi/items/21a8b99665e1b8ffe1ca)をご覧ください。

# DBFSとUnity Catalogはどのように動作するのか？

Unity Catalogは、企業がクラウドオブジェクトストレージのデータに対して最小権限によるアクセスを提供することを支援するための、外部ロケーションとマネージドストレージ資格情報の概念を追加します。また、Unity Catalogはマネージドテーブルの新たなデフォルトストレージロケーションを提供します。いくつかのセキュリティ設定は、Unity CatalogマネージドのリソースとDBFSの両方に対して直接のアクセスを提供します。Databricksでは[DBFSとUnity Catalogを使用](https://qiita.com/taka_yayoi/items/ffdf5188f155308790df)する際の推奨事項をまとめています。

### Databricks 無料トライアル

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