こんばんは。今回は、Azure Databricksについて知ったことをこの記事にまとめていきたいと思います。記事が長くなったので、複数の記事に分割しています。
第一回の本記事では、全体感を掴むことにフォーカスしたいと思います。
それではまいります。
Contents
Azure Databricksとは?
https://azure.microsoft.com/ja-jp/services/databricks/#overview
ずばり、Azureに最適化されたDatabricksです。公式Docの説明は以下です。
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/what-is-azure-databricks
Azure Databricks は、Microsoft Azure クラウド サービス プラットフォーム用に最適化された Data Analytics プラットフォームです。
公式Docより
サービスページによると、押しポイントは以下のようです。キャプチャを拝借しまして・・
デフォルトでApache Sparkが統合されていて迅速に大規模分析を開始できる
共有ワークスペースでコラボレーションが容易
Azure Machine Learningが統合されていて高度な機械学習プロセスを組める
そもそもDatabricksとは?
いや、その前にそもそもDatabricksってなんだ!という質問が聞こえてきました。Azure Databricksを知る前に、Databricksとは何か、少し整理しておきます。
以下、上の公式サイトからのキャプチャを引用しつつ、超概観です。
「データ分析・機械学習のプラットフォーム」です。
データ分析・機械学習のプロセスをこのサービス上で完結させるために、以下の機能が備わっているとのこと。
データ管理とデータエンジニアリング機能
分析機能
データサイエンスと機械学習の機能
また、Databricksは、2021年のGartner Magic QuadrantでLeaderに選出されています。MicrosoftやAWS、またこの領域で人気のあるDatarobotと比較して、縦軸Ability to Executeが高いということは、これらより実際に使える機能が多く備わっている、ということなのかもしれませんね。(詳しくはレポートを読むことが確実です)
AWSに同様のサービスはある?
AWSのサービスでは、Amazon EMRが同様の役割を担っているようですね。
https://docs.microsoft.com/ja-jp/azure/architecture/aws-professional/services#big-data-processing
トレンドは?流行ってるの?
トレンドはどうでしょう。Azure Databricks/Databricks/Amazon EMRの3つで比較してみました。
まずは世界全体。Azure Databricks/Databricskともに右肩上がりのトレンドで、これからもトレンドは続きそうです。
一応日本のトレンドも。Databricks本体は同様に右肩上がりの傾向がありますが、Azure Databricks, Amazon EMRについてはほとんど変化がありません。日本にはまだAzure Databricksの波はきていないのかな・・今後に期待です。
Azure Databricksの機能詳細
公式Docベースでもう少しだけ機能の概要をみておきます。
https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/what-is-azure-databricks
Azure Databricksの機能は大きく3つ。
- Databricks SQL
- Databricks Data Science エンジニアリング
- Databricks Machine Learning
それぞれDocによると以下のように説明されています。が、こりゃ実際に触ってみないとイマイチよくわかりませんね笑
後半のハンズオンでご紹介できればと思います。
Databricks SQL
データ レイクで SQL クエリを実行したり、複数の視覚化の種類を作成してさまざまなパースペクティブからクエリ結果を探索したり、ダッシュボードを構築して共有したりするための、使いやすいプラットフォームが提供されます。
公式ドキュメントより
Databricks Data Science エンジニアリング
データ エンジニア、データ サイエンティスト、機械学習エンジニア間のコラボレーションを可能にする対話型ワークスペースを提供します。 ビッグ データ パイプラインに使用されるデータ (生データまたは構造化データ) は、Azure Data Factory を介して一連のバッチに分けて Azure に取り込まれるか、Apache Kafka、Event Hubs、IoT Hub を使ってほぼリアルタイムでストリーム配信されます。 このデータは、長期永続保管を目的としたデータ レイク (Azure Blob Storage または Azure Data Lake Storage) に到達します。 分析ワークフローの一環として、Azure Databricks を使用して複数のデータソースからデータを読み取り、それを Spark を使用して画期的な分析情報へと変えることができます。
公式ドキュメントより
Databricks Machine Learning
実験の追跡、モデルのトレーニング、機能の開発と管理、機能とモデルの提供のための管理サービスを組み込んだ、統合されたエンドツーエンドの機械学習環境です。
Azure Databricksのアーキテクチャ
これは以下のDocに説明がありました。
https://docs.microsoft.com/ja-jp/azure/databricks/getting-started/overview
ポイントは以下。(とかいっておいて、ほとんどDocの説明と同じでした笑)
- 大きくコントロールプレーンとデータプレーンのコンポーネントから構成される。
- Notebookやそのコマンド、ジョブなどの情報はコントロールプレーンに格納されている。
- データはデータプレーンに暗号化されて格納されている。Databricksコネクタを介して外部のデータソースとも接続できる。
また、上記がAzure上でどのように構成されているかもみておくと良いでしょう。下の図のように、Azure Databricksのコンピューティングノード(クラスター)は、規定で仮想ネットワーク内にデプロイされていて、デプロイ時に自動作成するNSGによって保護されています。
https://docs.microsoft.com/ja-jp/azure/databricks/administration-guide/cloud-configurations/azure/
Azure Databricksの価格
最新の価格については以下から確認できます。
https://azure.microsoft.com/ja-jp/pricing/details/databricks/
ここで注意したいのは、単位がper DBU & 時間で、DBUという概念があること。
価格ページをみると、DBUについては以下の説明があります。他AzureサービスにあるACU的な感じでしょうかね。(DBUってなんの略だ・・?)
Azure Databricks では、クラスターにプロビジョニングされた仮想マシン (VM) と、選択した VM インスタンスに基づく Databricks の単位 (DBU) に対して課金されます*。DBU は処理能力の単位であり、1 秒あたりの使用量で課金されます。DBU 消費は、Azure Databricks を実行するインスタンスのサイズと種類によって異なります。
Azure Databricksを組み込んだアーキテクチャ例
こちらにアーキテクチャの照会がありますので、大変参考にできると思います。
https://azure.microsoft.com/ja-jp/services/databricks/#solution-architectures
いくつか見てみます。
パターン1:
超簡単にまとめると以下。
- データはData Lakeに蓄積しておく。
- Azure Databricksでデータ分析、加工、機械学習までを一貫して行う。
- 構築したモデルはAzure Machie LearningまたはAKSにデプロイする。
一般的な使い方に見えますね。
パターン2:
このパターンは、機械学習というよりは、データの加工の役割がメインっぽいですね。パターン1と比べて、ストリーミングデータをインジェストするためのEvent Hubや、データ加工を行うData Factoryが追加されています。
ここで一つ疑問に思ったのはData Factoryとの使い分け。この図だけみると、Databricksが担っている加工もData Factoryでまとめてできるのでは・・?とも思えます。(どちらも素人なので認識があってないかもです)
推測ですが、DatabricksはSparkが使えて大規模なデータ処理に向いているので、Datalakeにたまった大量のデータを一括処理したりするにはData Factoryよりもむいているのかなと思いました。
Datalakeにインジェストする過程で、少量のデータをちょこまかとデータを加工して格納するにはData Factoryが最適なのかもしれないですね。
(考え方あってるかわからないですが)勉強になりました。
パターン3:
なるほど、Databricksが担う役割は先ほどのパターン1と同じっぽいですが、Databricksで分析・加工した結果をPower BIに反映させたり、パターン2と同様Datalakeにデータを格納する前段にData Factoryを使ったりしていて、全体として高度な分析環境になっています。
気になったのは⑧。Docにはあまり詳しい説明がありませんでしたが、ゴールドデータ(整形済データ)であればDatabricksを使うよりSynapseが最適な場合もあるということかなぁ。この辺はまた調べてみたいと思います。
さて、全体感をつかむ編の記事はこのあたりでいったん終わろうかと思いますが、また思いついた観点があれば追記していきたいと思います・・!
最後までご覧いただき有難うございました、この記事が少しでも役に立った!という方は下のいいねボタンをポチっていただけると励みになります!
おしまい
コメントを残す