Databricksデータサイエンス&エンジニアリングのコンセプト

[Databricks Data Science & Engineering concepts \| Databricks on AWS](https://docs.databricks.com/getting-started/concepts.html) [2021/10/14時点]の翻訳です。

> [Databricksクイックスタートガイド](https://qiita.com/taka_yayoi/items/125231c126a602693610)のコンテンツです。

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

本書では、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の全てのアセットにアクセスするための環境となります。ワークスペースはオブジェクトをフォルダーで整理し、データオブジェクト及び計算リソースへのアクセス手段を提供します。

このセクションでは、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/b89f199ff0d3a4c16140)**

リモートのGitリポジトリと同期することで共同バージョン管理されるコンテンツを含むフォルダーです。

**[エクスペリメント](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がサポートしている方法を説明します。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)**

REST APIには3つのバージョン:[2\.1](https://docs.databricks.com/dev-tools/api/2.1/index.html)、[2\.0](https://docs.databricks.com/dev-tools/api/2.0/index.html)、[1\.2](https://docs.databricks.com/dev-tools/api/1.2/index.html)が存在します。REST API 2.1と2.0はREST API 1.2のほとんどの機能と追加機能をサポートしており、これらを使用することを推奨します。

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

[GitHub](https://github.com/databricks/databricks-cli)でオープンソースプロジェクトがホストされています。CLIは[最新のREST API](https://docs.databricks.com/dev-tools/api/latest/index.html#rest-api-latest)をベースとしています。

# データ管理

このセクションでは、分析を行なったり、機械学習アルゴリズムの入力となるデータを保持するオブジェクトを説明します。

**[Databricks File System \(DBFS\)](https://docs.databricks.com/data/databricks-file-system.html)**

blobストアに対するファイルシステム抽象化レイヤーです。これには、ファイル(データファイル、ライブラリ、画像)を格納するディレクトリと他のディレクトリが含まれます。DBFSには、皆様がDatabricksを学ぶ際に使用できる[サンプルデータセット](https://qiita.com/taka_yayoi/items/dcf77d0b007fae774ce5)が含まれています。

**[データベース](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)**

データウェアハウスにおける様々なテーブル、パーティションの全ての構造化データを格納するコンポーネントであり、カラム、カラムタイプ情報、データの読み書きに必要となるシリアライザ、デシリアライザ、データを保持する対応ファイルが格納されます。あらゆるDatabriksデプロイメントには集中管理されたHiveメタストアが含まれており、テーブルのメタデータを永続化するために全てのクラスターからアクセスされます。既存の[外部Hiveメタストア](https://docs.databricks.com/data/metastores/external-hive-metastore.html)を使用することも可能です。


# 計算リソース管理

このセクションでは、Databricksにおける計算資源を実行するために必要なコンセプトを説明します。

**クラスター**

ノートブック、ジョブを実行するための計算リソースと設定のセットです。クラスターには2つのタイプが存在します：all-purpose(汎用)とjob(ジョブ)です。

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

**[プール](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)は、オープンソース版Apache SparkランタイムのDatabricks版パッケージです。Databricksランタイムによって提供される先進的なパフォーマンス、信頼性、オートスケーリングといったメリットが必要ないジョブに対するランタイムのオプションとなります。JAR、Python、spark-submitジョブを実行するためにクラスターを作成する際にのみDatabricks Lightを選択することができます。インタラクティブあるいはノートブックジョブのワークロードを実行するクラスターのランタイムに、Databricks Lightを選択することはできません。

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

即時あるいはスケジュールで、ノートブックやライブラリを非インタラクティブな方法で実行するメカニズムです。

**ワークロード**

Databricksは、異なる[価格](https://databricks.com/product/pricing)スキーマが適用される2つの種類のワークロードを識別します：データエンジニアリング(job)とデータアナリティクス(all-purpose)です。

- **データエンジニアリング** Databricksのジョブスケジューラーがワークロードごとに作成する*ジョブクラスター*で実行される(自動化された)ワークロードです。
- **データアナリティクス** *all-purposeクラスター*で実行される(インタラクティブな)ワークロードです。インタラクティブなワークロードは通常、Databricks[ノートブック](https://docs.databricks.com/notebooks/index.html)のコマンドを実行します。しかし、*既存のall-purposeクラスター*でジョブが実行された場合には、インタラクティブなワークロードとして取り扱われます。

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

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

# 機械学習

このセクションでは、Databricksにおける機械学習に関連するコンセプトを説明します。

**[エクスペリメント](https://qiita.com/taka_yayoi/items/e9f6d6628fbad209770b)**

機械学習モデル開発のトラッキングの基本単位となります。エクスペリメントは、[モデルトレーニングコードの実行記録](https://qiita.com/taka_yayoi/items/ba0c7f46ff7c3dbf87bb)のそれぞれを整理、表示、アクセスの制御を行います。

**[Feature Store](https://qiita.com/taka_yayoi/items/88ddec323537febf7784)**

特徴量の集中管理されたリポジトリです。Databricks Feature Storeは、企業における特徴量の共有と検索を可能とし、モデルトレーニングと推論で同じ特徴量計算処理が用いられることを保証します。

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

[モデルレジストリ](https://qiita.com/taka_yayoi/items/e7a4bec6420eb7069995)に登録された[トレーニング済み機械学習、ディープラーニングのモデル](https://qiita.com/taka_yayoi/items/608c6a59f7d7aad202e2)です。


# 認証及び承認

このセクションでは、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)