Azure Databricksのインフラ構築を自動化した話
こんにちは!
インフラストラクチャ部の山﨑です。最近は主にテキストを使ったデータ分析を行うチームに所属しておりまして、日々わくわくするようなソリューションを考えています!
本ブログでは、データ分析をする際に利用しているAzure Databricksのインフラ構築をどのように行っているか記載させていただこうと思います。Azure Databricksをすでに利用されている方や利用を検討されている方に少しでも参考になる情報があれば幸いです!
Databricksとは
そもそもAzure Databricksとは何かというところですが、一言で表すとデータ分析に必要な機能をオールインワンパッケージで提供している Spark ベースの分析プラットフォームです。 データ取り込み、ETL、分析、可視化がDatabricks上で完結することができます。
出典元: 「Databricks Data Science & Engineering とは」
Azure Databricks | Microsoft Azure
私たちのチームでは、分析の内容によっては、かなり大規模でデータ処理をすることもあり、データ分析を行う標準ツールとしてAzure Databricksを利用しています。Git連携やノートブックにコメントを残す機能もあるので、チームでの情報共有しながら分析作業する際には欠かせません!
ちなみにアバナードとデータブリックス社との関係ですが、戦略的パートナーシップの関係にあります。そのため、難易度の高いデータ分析や大規模なデータ分析をするときはデータブリックス社のサポートを頂きながら案件をドライブしています!
アバナード、データブリックスとの新たなグローバルアライアンスにおいてMicrosoft Azureの戦略的パートナーとして指名
Azure Databricksのインフラ構築について
Azure Databricksを利用するためにいつも作成しているリソースは以下のようになります。Databricks本体だけでなく、分析データの保管するためのBlobやクレデンシャル情報を保管するKey Vault等を作成しています。
* Azure Databricks本体
* Azure Virtual Network(VNET/Subnet) : ネットワーク
* Azure ネットワーク セキュリティ グループ(NSG) : ネットワーク制御用
* NSGフローログ : ネットワークログ
* Azure Blob Storage : 分析データ保管用
* App Insights : 実行ログ保管用
* Azure Key Vault : Blob等のクレデンシャル保管用
一つ一つのリソースの作成はすぐなのですが、項目が多いので思ったより構築大変なんですよね、、
インフラ構築の課題感
1つのAzure Databricksテナント上でもノートブックやデータの権限管理できるのですが、セキュリティの観点からお客様ごとに完全にテナントを分けるようにしています。そのため、お客様ごとにインフラ環境を作る必要があり、テナントが増えてくると構築するのも地味に大変だし、Azureリソースの管理も難しくなってきたという課題感がありました。
デプロイ構成
手動構築が辛くなってきていたので、現在はAzure Databricksのインフラ構築をArm TemplateとAzure Devopsを利用して自動化するように改善しました。
Arm TemplateをAzure Devops Reposに保管することで変更管理とバージョン管理をして、Azure Devops Pipelineを利用し、各Azure環境にそのままデプロイするようにしました。また、案件個別の情報をArm Templateのパラメータファイルとして外部に定義することで、同じArm Templateを利用して、案件ごとにAzure Databricksのインフラを瞬時に作れるようになっています。
構成のイメージ図は以下ような形です。
新規でAzure Devopsの環境を作る際は、パラメータファイルを準備してReposにアップロードすれば、デプロイまで自動化されてます!めちゃ楽!
自動化してみた所感
Arm Templateを作成するのは少し手間でしたが、パラメータファイルを作るだけで分析に必要な環境がすぐ準備できるので、時間的にも気持ち的にもすごい楽になりました。分析案件がきまればすぐに環境が準備できるので、本来注力すべきデータの調査や分析の準備等の価値を高める作業により時間を使えるようになりました!自動化最高ですね。
また、現在は空のAzure Databricksと関連リソースの作成までを自動化していますが、今後はクラスターの作成やBlobとの連携などDatabricks内の設定までDatabricks REST APIを利用して自動化しようと考えています。Databricks内の設定まで自動化できると分析開始するまでのリードタイムをさらに縮めることができ、分析業務にさらに注力できると思います。
参考情報
MicrosoftがArm Templateのサンプルをいくつも提供してくれていますので、こちらを参考にArm Templateを作るのがおすすめです!
* クイック スタート:ARM テンプレートを使用して Azure Databricks ワークスペースを作成する
* Microsoft.Databricks workspaces
以上となります!
----
* Microsoft、Azure Databricks、Azure Virtual Network、Azure ネットワーク セキュリティ グループ、Azure Blob Storage、App Insights、Azure Key Vault は、米国 Microsoft Corporation の米国及びその他の国における登録商標または商標です。
* その他、記載されている会社名、製品名は、各社の登録商標または商標です。