fbpx

Azure Databricks の紹介 #Microsoft #Azure #DataBricks #spark

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

こんにちは。こちらではご無沙汰しております。木内です。

今日はまだ日本でもあまり知られていない Azure Databricks について簡単にご紹介したいと思います。

Azure Databricks とは?

Microsoft社の公式ページには「迅速、簡単で協調的な Apache Spark ベースの分析プラットフォーム」という説明があります。「はて。Sparkを使いたいのであれば既に HDInsight があるのでは・・・」と思われる方もいると思います。

実際ニュースでも取り上げられているのですが、イマイチ HDInsight との違いがピンとこない方もいたのではないかと思います。

Spark はもともとSQLや機械学習ライブラリなどをビルトインで持っており、一種のソフトウェアスイートになっています。従って Spark に手慣れた人であれば Hadoop ディストリビューションが持っているような Hive や、Mahout といったフレームワークを必要とせず、データサイエンスワークの相当部分を完結させることができます。

また最近ではETL元のデータレイクにAzure Storage Blobのようなオブジェクトストレージを使用する例も多く、Hadoopが自前で用意しているHDFSのようなストレージが不要になるケースもあります。そのような環境ではオブジェクトストレージにアクセスでき、スケールする処理フレームワークを簡単に使用することができれば、Hadoop ディストリビューションが提供する各種フレームワークは却っていろいろ含まれすぎていて、扱いづらいかもしれません。

そもそも

そもそも Azure Databricks はその前身となるサービスがあり、Databricks社(Sparkの開発元のひとつ)が提供していた "Databricks" というサービス(わかりにくい!)がそれになります。必要に応じでAWS上でSparkクラスタを作成して作業をすることができます。Azure Databricks はその Azure 版と言ってよいでしょう。

重要な点ですが、Azure Databricksはまだ日本では提供されていないことを注意してください(2018年4月現在)。今回の記事は東南アジアリージョンを使用して行っています。

Azure Databrick が向いている人

つまり、Azure Databricks が適するのは以下のような人物像になるかと思います。

  • データは Storage Blob に入れていて、データマートに Azure Database for MySQL などを使用している
  • 日ごろからApache Sparkを使用して業務をしている
  • Hadoopの管理がしんどい
  • 複数のメンバーで作業していて Notebook の共有などをしたい

では、やってみましょう

Azureポータルから "すべてのサービス" - "Azure Databricks" を選択します

選択直後は何も作成されていないので、 "Azure Databricksの作成" をクリックします。

まずワークスペースの作成を行います。今回は Standard レベルのワークスペースを作成します。Premium レベルのワークスペースになると、ODBC/JDBC経由でTableauなどのBIツールと接続してSQLクエリを受け付けられるようになります。

おおよそ3分ほどでワークスペースができました。ワークスペースを作成するだけでは課金は発生しません。実際にSparkクラスタを作成すると課金が発生します。

では実際に作成されたワークスペースを開きます。作成したワークスペース名をクリックしてから、 "Launch Workspace" をクリックすると作成されたワークスペースに自動的にリダイレクションされます。

左側のメニューバーから各種機能にアクセスすることができます。いくつかの機能はクラスタを作成しないと有効になりません。

クラスタの作成

では実際に Spark クラスターを作成してみましょう。左側メニューの "Clusters" ボタンをクリックします。

"+Create Cluster" ボタンを押すと、各種設定の入力画面に遷移します。今回は以下のように値をセットしてみました。

項目名 備考
Cluster Type Standard
Cluster Name mkscluster ここは任意の名前になります
Databricks Runtime Version 3.5 LTS(includes Apache Spark 2.2.1, Scala 2.11) 2018年4月現在では最新の4.0, Spark 2.3.0 も利用できるようですが、今回はデフォルトの 3.5 LTS, Spark 2.2.1 にしてみました)
Python Version 3 デフォルトは2ですが、データ分析の世界ではPython3を使用することが一般的ですので3にしました
Driver Type Same as Worker Spark Driver(詳細はここでは割愛しますが、ジョブを投入する元ホストと思ってください)に割り当てるコア数、メモリ量を指定することができます。Sparkに詳しくない方はデフォルト値を選択しておけば無難でしょう
Worker Type Standard_DS3_v2 ここは要件に応じて変更します。一般的にはDS3v2が有する14GBのメモリでほとんどのワークロードは効率的に処理することが可能です
Min Workers, Max Workers, Enable Autoscaling Min=2, Max=8, Enable Autoscaling=checked 処理をオートスケールさせる場合の最小VM数、最大VM数、オートスケールの有効/無効を切り替えます。もしコストが気になるようであれば最大VM数を絞ります
Auto Termination checked(Auto Termination クラスタの自動破棄)の有効/無効を切り替えます
Terminate after 120 seconds of inactivity Auto Terminationの閾値に、アイドル秒数を指定します。ジョブの性格によっては時間を長くしてもいいかもしれません。後述しますがクラスタは迅速に起動するため、クラスタを常にライブにしておく必要はあまりありません
Spark Config 空欄 ジョブ実行時の設定を追加する場合はここに記述します。
Tags 初期値 Azureのリソースに割り当てるタグを指定することができます
Logging 初期値 クラスタのイベントログを保管するストレージを指定することができます

全てセットしたら "Create Cluster" ボタンを押します。

5分程度でクラスタの作成が完了します

1つNotebookを作成してみる

クラスタが作成できると Jupyter Notebook を使用してプログラムを作成できるようになります。1つ作ってみましょう。左側のメニューバーの "Azure Databricks" をクリックしてトップ画面に戻り、左下の "New" - "Notebook" をクリックします。

できました。簡単なものですが少しコマンドを実行してみます。

日常的に使いそうなライブラリは既にあるようですね。

価格について

今回はここまでですが、最後に価格について触れておきましょう。Azure Databricksの価格体系はクラスタのVMそのものにかかる費用と、"DBU(Databricks Units)"の費用両方にかかります。詳細は価格に関するページを参照ください。概ねVMそのものの1.5倍ほどの料金になっています。価格を見比べる限り、HDInsightよりも少し高めに設定されているようです。

上記で記述した通り、Azure Databricksクラスタは Auto Termination の機能を持っているため、使用されなくなると自動的に Terminate されます。Azure的な用語でいうと、VMは停止ではなく、削除されます。使用していたストレージアカウントなどは残ります。費用を抑えるために積極的に使っていった方がよいでしょう。

用途としては、ETLのようなバッチ処理に使用するようなユースケースが向いているように思われます。逆にデータサイエンティストチームが共用するような、動かしっぱなしの用途には向かなさそうです。その場合には Data Science VM を使用した方がよいでしょう。

さいごに

簡単に Azure Databricks の内容を見てみました。最後に弊社の独自サービス、千京も Azure Databricks とかなり似た内容ですので、ご興味があればぜひ見てみてください。

Azure Databricksについてもっと知りたい方はぜひフィードバックをお願いします。今後の記事の作成の参考にいたします。

では!

新規CTA