Databricksワークスペースのコンセプト

[Databricks Workspace concepts \| Databricks on AWS](https://docs.databricks.com/getting-started/concepts.html) [2021/3/17時点]の翻訳です。

:::note warn
本書の内容は古いものとなっています。
:::

> **注意**
本記事の内容に関する最新情報については、[Databricksデータサイエンス&エンジニアリングのコンセプト](https://qiita.com/taka_yayoi/items/e8556a32cc7aaf9ade50)を参照ください。


本記事は、Databricksワークスペースを効率的に利用するために理解すべき基本的なコンセプトをご紹介するものです。

<iframe width="560" height="315" src="https://www.youtube.com/embed/7fC6h46gC0s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

# ワークスペース

[ワークスペース(英語)](https://docs.databricks.com/workspace/index.html)はDatabricksのすべてのアセットにアクセスするための環境となります。ワークスペースを活用することで、オブジェクト(ノートブック、ライブラリ、ダッシュボード、エクスペリメント)を[フォルダー(英語)](https://docs.databricks.com/workspace/workspace-objects.html#folders)の中に格納し、データオブジェクトと計算リソースにアクセスすることができます。

本章では、Databricksワークスペースのフォルダーに格納されるオブジェクトを説明します。

[**ノートブック**](https://qiita.com/taka_yayoi/items/24a897cf40bba6d9e305)

実行可能なコマンドに加えて可視化、テキストを記述できるWebベースのインターフェースです。

[**ダッシュボード**(英語)](https://docs.databricks.com/notebooks/dashboards.html)

構造化された可視化機能を提供するインターフェースです。

[**ライブラリ**](https://qiita.com/taka_yayoi/items/d3a46efdc1ad01a581d0)

クラスターで実行するノートブックやジョブで利用できるコードパッケージです。Databricksランタイムは多くのライブラリを有していますが、あなた自身のライブラリを追加することができます。

[**エクスペリメント**](https://qiita.com/taka_yayoi/items/ba0c7f46ff7c3dbf87bb#%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88)

機械学習モデルをトレーニングするための[MLflowラン](https://qiita.com/taka_yayoi/items/ba0c7f46ff7c3dbf87bb#%E3%83%A9%E3%83%B3)の集合体です。

# インターフェース

本章では、アセットにアクセスするためにDatabricksがサポートするインターフェース(UI、API、CLI:コマンドライン)を説明します。

**UI**

Databricks UIは、ワークスペースフォルダー、オブジェクト、計算リソースに対する使いやすいグラフィカルインターフェースを提供します。
![](https://docs.databricks.com/_images/landing-aws.png)

[**REST API**(英語)](https://docs.databricks.com/dev-tools/api/index.html)

2種類のAPIがあります：[REST API 2\.0(英語)](https://docs.databricks.com/dev-tools/api/latest/index.html#rest-api-v2)と[REST API 1\.2(英語)](https://docs.databricks.com/dev-tools/api/1.2/index.html#rest-api-v1)です。REST API 2.0はREST API 1.2のほとんどの機能をサポートしていることに加え、追加の機能も利用できるので2.0の使用を推奨します。

[**CLI**(英語)](https://docs.databricks.com/dev-tools/cli/index.html)

[GitHub](https://github.com/databricks/databricks-cli)でホストされているオープンソースプロジェクトです。[REST API 2\.0](https://docs.databricks.com/dev-tools/api/latest/index.html#rest-api-v2)の上で開発されています。

# データマネジメント

本章では、データ分析をしたり機械学習アルゴリズムに流し込むデータを保持するオブジェクトを説明します。

[**Databricks File System (DBFS)**](https://qiita.com/taka_yayoi/items/e16c7272a7feb5ec9a92)

BLOBストアに対するファイルシステム抽象化レイヤーです。ファイル(データファイル、ライブラリ、画像)を格納するディレクトリーと他のディレクトリーから構成されています。DBFSには、Databricksを学ぶために必要な[データセット](https://docs.databricks.com/data/databricks-datasets.html)が最初から格納されています。

[**データベース**](https://qiita.com/taka_yayoi/items/e7f6982dfbee7fc84894)

容易にアクセス、管理、更新が行えるように整理された情報の集合体です。

[**テーブル**](https://qiita.com/taka_yayoi/items/e7f6982dfbee7fc84894)

構造化データです。Apache Spark SQLやApache Spark APIを用いてテーブルに対するクエリーを実行することができます。

[**メタストア**(英語)](https://docs.databricks.com/data/metastores/index.html)

データウェアハウスにおけるテーブル、パーティションのカラム、カラムタイプ、データを読み書きするために必要なシリアライザ、デシリアライザ、データを格納するファイルを含む全ての構造情報を格納するコンポーネントです。Databricksデプロイメントはテーブルメタデータを永続化するために、全てのクラスターがアクセスできる中央Hiveメタストアを有しています。既存の[外部Hiveメタストア(英語)](https://docs.databricks.com/data/metastores/external-hive-metastore.html)を利用する選択肢を取ることもできます。

# 計算リソースマネジメント

本章ではDatabricksで計算処理を行うために理解すべきコンセプトを説明します。

[**クラスター**(英語)](https://docs.databricks.com/clusters/index.html)

ノートブックやジョブを実行するための計算リソース及び設定のセットとなります。2種類のクラスターがあります。all-purpose(汎用)クラスターとジョブクラスターです。

- UI、CLI、REST APIを用いてall-purposeクラスターを作成することができます。手動でall-purposeクラスターを停止、再起動することができます。共同でインタラクティブな分析を行う際には、複数のユーザーでクラスターを共有することができます。
- あなたが[ジョブ](https://qiita.com/taka_yayoi/items/b3275a1983c51a8bbe1a)を新規ジョブクラスターで実行すると、Databricksのジョブスケジューラーがジョブクラスターを作成し、ジョブが完了すると停止させます。

[**プール**](https://qiita.com/taka_yayoi/items/919acd7ef9decf0f61e6)

クラスターの起動時間、オートスケールの時間を短縮するために使用する、アイドル状態かつ利用可能なインスタンスの集団です。プールにアタッチされた際、クラスターはプールからドライバーノードとワーカーノードを割り当てます。クラスターからの要求に応える十分なリソースがない場合には、プールはインスタンスプロバイダーから新たなインスタンスを獲得し、プールを拡張します。アタッチされたクラスターが停止された際には、使用されたインスタンスはプールに返却され、別のクラスターで再利用することが可能になります。

[**Databricksランタイム**(英語)](https://docs.databricks.com/runtime/index.html#dbr-overview)

Databricksが管理するクラスターで動作する主要コンポーネントの集合体です。Databricksはいくつかの種類のランタイムを提供します：

- [Databricksランタイム(英語)](https://docs.databricks.com/release-notes/runtime/index.html)はApache Sparkに加え、ビッグデータ分析における使いやすさ、性能、セキュリティを改善する様々なコンポーネントを含みます。
- [機械学習向けDatabricksランタイム](https://qiita.com/taka_yayoi/items/824b507019d3ade7eedc)はDatabricksランタイムに加えて、機械学習、データサイエンスにすぐに着手できる環境を提供します。TensorFlow、Keras、PyTorch、XGBoostと言った有名なライブラリを搭載しています。
- [ゲノミクス向けDatabricksランタイム(英語)](https://docs.databricks.com/runtime/genomicsruntime.html#dbr-genomics)はゲノミクス、バイオケミカルに最適化したバージョンのDatabricksランタイムです。
- [Databricks Light(英語)](https://docs.databricks.com/runtime/light.html#light)は、DatabricksがパッケージングしたオープンソースのApache Sparkランタイムです。Databricksランタイムで提供される先進的な性能、信頼性、オートスケーリングの機能を必要としないジョブ実行における選択肢となります。[JAR、Python、spark\-submit](https://docs.databricks.com/dev-tools/api/latest/jobs.html#jobscreatejob)のジョブを実行するクラスターを作成する際にのみDatabricks Lightを選択できます。インタラクティブ、あるいはノートブックジョブを実行する際のクラスターで選択することはできません。

[**ジョブ**](https://qiita.com/taka_yayoi/items/b3275a1983c51a8bbe1a)

ノートブックやライブラリを非インタラクティブに実行する機構です。即時実行、スケジュール実行が可能です。

**ワークロード**

Databricksは、異なる価格体系が適用される2種類のワークロードを識別します：データエンジニアリング(ジョブ)とデータアナリティクス(all-purpose)です。

- **データエンジニアリング** それぞれのワークロードに対してDatabricksジョブスケジューラーがジョブクラスターを作成して実行する(自動)ワークロード
- **データアナリティクス** All-purposeクラスターで実行される(インタラクティブ)ワークロード。インタラクティブワークロードは通常、Databricks[ノートブック](https://qiita.com/taka_yayoi/items/dfb53f63aed2fbd344fc)におけるコマンド実行です。しかし、既存のall-purposeクラスターでジョブを実行した場合には、インタラクティブワークロードとして扱われます。

**実行コンテキスト**

サポートされるプログラミング言語に対する[REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop)環境の状態。サポート言語はPython、R、ScalaとSQLです。

# モデルマネジメント

本章では、機械学習モデルをトレーニングする際に理解すべきコンセプトを説明します。

[**モデル**](https://qiita.com/taka_yayoi/items/e265d48a3e3473edd1b6)

説明変数と目的変数の関係を表現する数式表現。機械学習はトレーニングと予測のステップから構成されます。既存のデータセットを用いてモデルのトレーニングを行い、新たなデータとモデルを用いて予測を行います。

[**ラン**](https://qiita.com/taka_yayoi/items/ba0c7f46ff7c3dbf87bb)

機械学習モデルをトレーニングした際の、パラメーター、メトリクス、タグの集合体です。

[**エクスペリメント**](https://qiita.com/taka_yayoi/items/ba0c7f46ff7c3dbf87bb#%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88)

ランで構成される基本単位です。全てのMLflowのランはエクスペリメントに属します。エクスペリメントによって、ランを比較、検索、可視化することができます。また、他のツールで分析するために、ランのアーティファクト、メタデータをダウンロードすることができます。

# ユーザー管理、セキュリティ

本章では、Databricksのユーザーと、Databricksアセットへのアクセスを管理するために知らなくてはいけないコンセプトを説明します。

[**ユーザー**](https://qiita.com/taka_yayoi/items/3262ea8529ad96b920ce)

システムにアクセスできる一意の個人。

[**グループ**(英語)](https://docs.databricks.com/administration-guide/users-groups/groups.html)

ユーザーの集合。

[**アクセスコントロールリスト(ACL)**(英語)](https://docs.databricks.com/administration-guide/access-control/index.html)

ワークスペース、クラスター、ジョブ、テーブル、エクスペリメントに設定できる権限です。ACLはどのユーザー、システムがオブジェクトへのアクセス権を持っているのか、アセットに対してどのような操作が許可されているのかを定義します。典型的なACLの個々のエントリーでは対象と操作を定義します。

### Databricks 無料トライアル

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