ブログ名

【Azure】環境構築

概要

Azureを用いての環境構築を行いましたので、備忘録も兼ねて手順を公開します。

手順

  1. リソースグループの作成

  2. 仮想ネットワークの作成

  3. ストレージアカウントの作成

  4. VMの作成

  5. Azure Synapse Analyticsの作成

  6. サービスプリンシパルの作成

  7. Azure Databricksの作成

Power Shellから作成する方法もありますが今回はAzure Portalから作成していきたいと思います。

1.リソースグループの作成

リソースグループとは、一つのアプリケーションを構成するためのサービス、Webサーバー、データベース、ストレージ、ネットワークなど、相互依存している複数のリソースを、サービスごとではなく任意のグループを1つにまとめたものことをいいます。

1)Azure Portal の左側のメニューから「リソース グループ」 を選択します。

f:id:shizuuuka0202:20200126223932p:plain

2)「追加」を選択します。

f:id:shizuuuka0202:20200126224046p:plain

3)サブスクリプション、リージョンを適宜選択し、適当なリソースグループを入力し、「確認および作成」を選択します。

f:id:shizuuuka0202:20200126224129p:plain

4)確認画面が表示されるので「作成」を選択します。

f:id:shizuuuka0202:20200126224241p:plain

以上でリソースグループの作成の完了です。

*「タグ」について
タグは複数のリソースグループやリソースを横断してコスト管理を行うときに便利な機能です。
ただし必ずしも設定しなくてはならない機能ではないので今回は設定していません。
タグは作成した後からでも設定可能なため必要に応じて設定してください。

2.仮想ネットワークの作成

仮想ネットワークとは、Azure内のプライベート ネットワークの基本的な構成要素です。

1)Azure Portal の左側のメニューから「仮想ネットワーク」を選択します。

f:id:shizuuuka0202:20200126224349p:plain

2)「追加」を選択します。

f:id:shizuuuka0202:20200126224416p:plain

3)サブスクリプション、リージョン、リソースグループをそれぞれ適宜選択し、適当な名前を入力します。
続いて、適当なサブネット名を入力します。アドレス範囲は複数のネットワークを使用予定の場合は広げて設定して下さい。

「作成」を選択して仮想ネットワークの作成が完了です。

f:id:shizuuuka0202:20200126224442p:plain

その他の設定については適宜必要に応じて設定して下さい。
参考までに各種設定について記載します。

・DDoS保護のBasic/Standardについて f:id:shizuuuka0202:20200126224511p:plain

・サービスエンドポイントの設定
ストレージアカウントへのアクセスについて特定のストレージアカウントへのアクセのように詳細な設定が可能です。

ファイアウォールの設定
仮想ネットワークを保護するクラウドベースのマネージドネットワークセキュリティ サービスを設定することが可能です。

3.ストレージアカウントの作成

ストレージアカウントとは、Azureにてストレージを利用する際のストレージの単位のことを指します。
ストレージアカウントを作成すると4つのデータ オブジェクト (BLOB、ファイル、キュー、テーブル、およびディスク) が利用できます。

1)Azure Portal の左側のメニューから「リソースの作成」を選択します。

f:id:shizuuuka0202:20200126224548p:plain

2)画面にある「ストレージ アカウント - Blob、File、Table、Queue」を選択します。

f:id:shizuuuka0202:20200126224629p:plain

3)サブスクリプション、リソースグループ、場所を適宜選択します。
ストレージアカウント名には適当な名前を入力します。

f:id:shizuuuka0202:20200126224711p:plain

パフォーマンス、アカウントの種類、レプリケーション、アクセス層(既定)については、下記表を参考に設定して下さい。

f:id:shizuuuka0202:20200126224817p:plain

4)設定が完了したら、「次:ネットワーク > 」を選択します。

5)ネットワークの接続方法の設定です。
任意の接続方法を選択して、「次:詳細 > 」を選択します。

f:id:shizuuuka0202:20200126224847p:plain 6)詳細設定を必要に応じて設定します。
設定が完了したら、「確認および作成」を選択します。

f:id:shizuuuka0202:20200126224917p:plain

7)設定した内容に問題がなければ「作成」を選択します。

f:id:shizuuuka0202:20200126225015p:plain

8)続いて作成されたストレージアカウントを選択し、赤枠で囲まれた「コンテナー」を選択します。

f:id:shizuuuka0202:20200126225046p:plain

9)画面上部に表示されている「+ ファイルシステム」を選択します。

f:id:shizuuuka0202:20200126225156p:plain

10)任意の名前を入力し「OK」を選択します。

f:id:shizuuuka0202:20200126225231p:plain

これでコンテナーが作成されました。

ストレージアカウントの作成は以上になります。

4.VMの作成

1)Azure Portal の左側のメニューから「Virtual Machines」を選択します。

f:id:shizuuuka0202:20200126225458p:plain

2)「追加」を選択します。

f:id:shizuuuka0202:20200126225529p:plain

3)これまで同様サブスクリプション、リソースグループを適宜選択します。

f:id:shizuuuka0202:20200126225605p:plain

4)適当な仮想マシン名を入力し、地域を選択します。

可用性オプションは、単体構成の可用性以上の可用性が必要な場合に設定してください。 *各種設定値についてはこちらをご覧下さい。

イメージはVMの基本オペレーティングシステム、またはアプリケーションとなります。適宜適切なものを選択して下さい。

Azure スポット インスタンスを使用すると、非常に低コストで未使用の容量を利用することが可能です。しかし、Azure で容量の回復が必要になると常に、Azure インフラストラクチャはスポット VM を削除します。 したがって、スポット VM は、中断してもかまわないワークロードに使用してください。
今回はなしで作成します。

サイズでは、仮想マシンのスペックを選択します。

f:id:shizuuuka0202:20200126225646p:plain

5)管理者アカウントの設定を行います。
認証の種類で「パスワード」を選択した場合は、ユーザー名とパスワードをそれぞれ入力し、「SSH公開キー」を選択した場合はユーザー名とSSH公開キーをそれぞれ入力してください。

続いて受信ポートの設定を行います。
こちらの設定がAzure仮想マシンへのリモート接続の設定となります。
こちらのポートはVM作成後に、「設定」>「ネットワーク」>「受信ポートの規則」より追加することも可能です。

f:id:shizuuuka0202:20200126225720p:plain

6)続いてディスクの設定です。
必要に応じてOSのディスクの種類を選択して下さい。

f:id:shizuuuka0202:20200126225814p:plain

参考までに下記にマネージドディスクの比較表を記載します。

f:id:shizuuuka0202:20200126225856p:plain

7)続いてネットワークの設定です。「2.仮想ネットワークの作成」で作成した仮想ネットワークを選択し、必要項目を入力します。

f:id:shizuuuka0202:20200126225922p:plain

8)管理項目の設定です。
Azureではストレージを利用するにあたって 「ストレージアカウント」が必要となるので、アカウントの設定を行います。
「3.ストレージアカウントの作成」で作成したアカウントを選択して「確認および作成」を選択します。

f:id:shizuuuka0202:20200126225951p:plain

9)設定に問題がなければ「作成」を選択して、VMの作成は完了です。

f:id:shizuuuka0202:20200126230022p:plain

5.Azure Synapse Analyticsの作成

Azure Synapse Analyticsは旧Azure SQL Data Warehouseのことを指します。

Azure Synapseとは、エンタープライズ データ ウェアハウスとビッグ データ分析がまとめられた分析サービスです。
Azure Synapseを用いることによりデータソース、データウェアハウス、ビックデータ解析システムから、より早く、生産的に、セキュアに、同時にインサイトを得ることができるようになります。

1)Azure Portal の左側のメニューから「リソースの作成」を選択します。

f:id:shizuuuka0202:20200126230057p:plain

2)データベースを選択し、Azure Synapse Analytics (formerly SQL DW) を選択します。

f:id:shizuuuka0202:20200126230128p:plain

3)これまで同様サブスクリプション、リソースグループを適宜選択します。
データウェアハウス名にはデータウェアハウスの名称を入力します。
続いてサーバーを新規作成します。「新規作成」を選択します。

f:id:shizuuuka0202:20200126230212p:plain

新規作成を選択すると右に下記のような画面が表示されますので、サーバー名を入力します。「サーバー管理者ログイン」、「パスワード」はSynapseへのログインの際に必要になります。適切な情報を入力します。最後に場所を選択し、「Azure サービスにサーバーへのアクセスを許可する」をチェックしてから「OK」を選択します。

f:id:shizuuuka0202:20200126230254p:plain

続いてパフォーマンスレベルを選択します。
サービス レベルを変更すると、システムで使用できる DWU*の数が変更され、それによってさらにシステムのパフォーマンスやコストが調整されます。

*DWUとはSQL Data Warehouseのリソースの単位です。SQL Data Warehouseのリソースは、CPU、メモリ、IOからなります。

「次:追加設定」を選択します。

4)照合順序の設定を行います。こちらの設定は一度設定すると変更することができないため注意が必要です。
照合順序により、並べ替え規則、大文字と小文字の区別、およびアクセントの区別のプロパティをデータで利用できるようになります 。charやvarcharなどの文字データ型に使用する照合順序は、そのデータ型で表すことのできるコードページおよび対応する文字を指定します。
例えば、日本語のオペレーティングシステムロケールによって決定される既定の照合順序は、下記の表になります。

f:id:shizuuuka0202:20200126230400p:plain

設定が完了したら「確認および作成」を選択します。

f:id:shizuuuka0202:20200126230431p:plain

5)最後にこれまでの設定内容を確認し、問題がなければ「作成」を選択します。

f:id:shizuuuka0202:20200126230506p:plain

作成が完了すると、選択したリソースグループ内に「SQL データ ウェアハウス」と「SQL Server」が作成されていることを確認することができます。

5-1.SQL Serverファイアウォール規則を作成

ファイアウォール規則を作成することにより、外部のアプリケーションとツールはサーバーやサーバー上のすべてのデータベースに接続できなくなります。接続できるようにするには、特定の IP アドレスに接続を許可するファイアウォール規則を追加します。

1)先ほど作成した「SQL Server」を選択して、「ファイアウォール設定の表示」を選択します。

f:id:shizuuuka0202:20200126230534p:plain

2)「+クライアント IP の追加」を選択すると現在接続しているネットワークのIPアドレスが入力されます。
手動で入力する場合はもう一つの赤枠で囲まれた箇所に、「規則名」「開始IP」「終了IP」を入力します。
入力が完了したら、「保存」を選択して、ファイアウォールの設定を行います。

f:id:shizuuuka0202:20200126230604p:plain 以上の設定により、クライアントPCからSynapseに接続することができるようになりました。

5-2.データベースマスターキーの作成

続いて、データベースマスターキーを作成します。本記事ではSSMS(SQL Server Management Studio)を用いて設定を行います。
SSMSはこちらのSSMSのダウンロードサイトよりダウンロードしてください。

1)Synapseに接続するための完全修飾サーバー名を取得します。
先ほど作成した、「SQL データ ウェアハウス」を選択し、右上にあるサーバー名をコピーします。

f:id:shizuuuka0202:20200126230637p:plain

2)SSMSを起動し、サーバー名に先ほどコピーしたサーバー名を入力し、認証方法は「SQL Server認証」を選択します。ログインにはAzure Synapse Analyticsを作成した際に入力したものを使って接続します。
接続できると、下記のような画面が表示されます。

f:id:shizuuuka0202:20200126230708p:plain

3)データベースマスターキーを作成するために、データベースに対するコントロール権限を作成します。
左の「オブジェクト エクスプローラー」で、「データベース」>「システムデータベース」>「master」を選択します。
「master」上で右クリックし、「新しいクエリ(Q)」をクリックし、クエリ実行用の画面を表示します。

f:id:shizuuuka0202:20200126230744p:plain

4)続いて3)で表示したクリエ実行画面に下記のようなSQLをコピーして貼り付けます。

-- Connect to master database and create a login
CREATE LOGIN [ApplicationLogin] WITH PASSWORD = [Password];
CREATE USER [ApplicationUser] FOR LOGIN ApplicationLogin;

[ApplicationLogin]と[ApplicationUser]は任意の名称に変更し、[Password]についても任意のパスワードを設定します。

メニューバーの赤枠で囲われた「実行」を選択して、作成したクリエを実行します。

クリエを実行すると、左の「オブジェクト エクスプローラー」で「データベース」>「システムデータベース」>「master」>「セキュリティ」>「ユーザー」と選択すると、[ApplicationUser]で入力した名称が作成されていることを確認して下さい。 同様に、「セキュリティ」>「ログイン」と開くと、[ApplicationLogin]で入力した名称が作成されていることを確認して下さい。

f:id:shizuuuka0202:20200126230832p:plain

5)Synapseにユーザーの追加を行います。下記のSQLによりユーザーの追加を行います。 先ほどSynapse作成時に設定した「データウェアハウス名」と同様のデータベースが存在しているので、そちらを右クリックし、「新しいクエリ(Q)」をクリックし、クエリ実行用の画面を表示し、下記SQLを貼り付けます。

-- Connect to SQL DW database and create a database user
CREATE USER [ApplicationUser] FOR LOGIN [ApplicationLogin];

先ほど同様「実行」を選択してクリエの実行を行います。
クエリの実行後、左の「オブジェクト エクスプローラー」で「データベース」>[Synapse作成時に設定した「データウェアハウス名」]>「セキュリティ」>「ユーザー」と選択すると、[ApplicationUser]で入力した名称が作成されていることを確認して下さい。
これでコントロール権限を付与するユーザが作成できました。

6)続いてコントロール権限の付与を行います。
先ほど実行したクリエ画面( 5)で実行したクエリ画面)に下記SQLを貼り付けて実行します。
詳しくはこちらのGRANT (データベースの権限の許可) (Transact-SQL)を参照して下さい。

GRANT CONTROL ON DATABASE::[Synapse作成時に設定した「データウェアハウス名」] TO ApplicationUser;
GO

7)最後にマスターキーを作成します。
先ほど実行したクエリ画面に下記SQLを貼り付けて実行します。

-- Creates the master key.
-- The key is encrypted using the password "[Password]."  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '[Password]';

[Password]には任意のパスワードを設定してください。

以上でデータベースマスターキーを作成できました。

以上でAzure Synapse Analyticsの作成手順が完了です。

6.サービスプリンシパルの作成

サービス プリンシパルは、リソース/サービスレベルの無人操作を実行する目的でテナント内で作成する Azure Active Directoryアプリケーションリソースです。アプリケーションIDとパスワードまたは証明書が与えられた、独自のユーザーIDです。サービスプリンシパルには、割り当てられたロールとアクセス許可によって定義されるタスクを実行するために必要な権限のみが与えられます。

1)Azure Portal の左側のメニューから「Azure Active Directory」を選択します。

f:id:shizuuuka0202:20200126230909p:plain

2)左側のメニューより「アプリの登録」を選択します。

f:id:shizuuuka0202:20200126230949p:plain

3)「新規登録」を選択します。

f:id:shizuuuka0202:20200126231017p:plain

4)任意のアプリケーション名を入力し、「登録」を選択します。

f:id:shizuuuka0202:20200126231048p:plain

以上でアプリケーションの登録は完了です。

「アプリケーション(クライアント)ID」と「ディレクトリ(テナント)ID」は次の Databricksの作成で使用するのでコピーしておいてください。
もし忘れた場合は、2)の「アプリの登録」を選択して表示された画面に作成したアプリが表示されていますので、そちらをクリックすると再度確認することが可能です。

f:id:shizuuuka0202:20200126231118p:plain

5)「証明書とシークレット」を選択し、「+新しいクライアント シークレット」を選択します。

f:id:shizuuuka0202:20200126231159p:plain

6)クライアントシークレットの追加ダイアログが表示されたら、有効期限を選択します。パスワードを定期的に変更したい場合は「1年」もしくは「2年」を選択します。

f:id:shizuuuka0202:20200126231323p:plain

7)クライアントシークレットが作成されました。
こちらのクライアントシークレットの値は今後参照不能になるため必ずこの時点で控えておいてください。

f:id:shizuuuka0202:20200126231406p:plain

8)続いて、作成したアプリケーションにロールの割り当てを行います。
今回はストレージアカウントにロールを割り当てます。

3.で作成した、ストレージアカウントを選択し、「アクセス制御(IAM)」を選択します。

f:id:shizuuuka0202:20200126231442p:plain

9)「ロールの割り当てを追加する」の項目にある「追加」を選択します。
なおこちらのロールの割り当ての追加は「 ユーザー アクセス管理者」しかできないので、ご注意ください。

f:id:shizuuuka0202:20200126231619p:plain

10)画面右側に「ロール割り当ての追加」がダイアログが表示されるので、「役割」に「ストレージ BLOB データ共同作成者」を選択し、「選択」に先ほど登録したアプリを選択してから「保存」を選択します。

以上で、アプリケーションにロールの割り当てが完了しました。

7.Azure Databricksの作成

Azure Databricksとは、Microsoft Azureクラウドサービスプラットフォームに最適化されたApache Sparkベースの分析プラットフォームです。

1)Azure Portal の左側のメニューから「リソースの作成」を選択します。

f:id:shizuuuka0202:20200126231846p:plain

2)「分析」を選択して、「Azure Databricks」を選択します。

f:id:shizuuuka0202:20200126231959p:plain

3)これまで同様、サブスクリプション、リソースグループを入力します。
ワークスペース名には任意の名称を入力します。
場所には、これまで選択してきた場所と同様のものを選択します。
価格レベルについては、公式サイトのAzure Databricks の価格を参考に必要なレベル適宜選択して下さい。

入力が完了したら「次:ネットワーク > 」を選択します。

f:id:shizuuuka0202:20200126232100p:plain

4)自分の仮想ネットワークにAzure Databricksワークスペースをデプロイする場合は「はい」を、しない場合は「いいえ」を選択して下さい。

選択したら「確認および作成」を選択します。

f:id:shizuuuka0202:20200126232135p:plain

5)入力項目に問題がなければ「作成」を選択します。

f:id:shizuuuka0202:20200126232202p:plain

以上でAzure Databricksの作成は完了です。

7-1.Azure Databricksのクラスターの作成

Azure Databricksのクラスターは、運用ETLパイプライン、ストリーミング分析、アドホック分析、機械学習などのデータエンジニアリング、データサイエンス、およびデータ分析などのワークロードの実行基盤となる計算リソースおよび構成のセットです。

1)先ほど作成した「Azure Databricks サービス」を選択し、「ワークスペースの起動」を選択します。

f:id:shizuuuka0202:20200126232241p:plain

2)別のウィンドウが起動し、Azure Databricksのワークスペースが表示されます。 「Common Tasks」の「New Cluster」を選択します。

f:id:shizuuuka0202:20200126232308p:plain

3)Cluster Nameには作成するクラスターの名称を入力します。

Cluster Modeには「Standard」もしくは「High concurrency clusters」を選択します。
デフォルトは「Standard」で、「High concurrency clusters」は同時実行性の高いクラスターです。

クラスターの開始時間を短縮するには、クラスターを、事前に定義されたアイドル状態のインスタンスのプールに接続します。プールを使用する場合は公式ドキュメントのプールを使用するを参照してください。
*こちらの機能はプレビュー段階にあるので変更になる可能性があります。

Databricks Runtime Versionでは使用したいScala、Sparkのバージョンを選択します。
選択したバージョンによっては、Pythonのバージョンが複数対応している場合があるので、その際は、適宜Pythonのバージョンも選択します。

クラスターのオートスケールを許可する場合はEnable autoscalingをチェックしてください。

Terminate after XXX minutes of inactivityでは、クラスターの作成時に、クラスターを終了するまでの非アクティブな期間を分単位で指定できます。 現在の時刻とクラスターで実行されている最後のコマンドの差が、指定された非アクティブ期間を超えている場合、Azure Databricksはそのクラスターを自動的に終了します。
クラスター上のすべてのコマンド (Spark ジョブ、構造化ストリーミング、JDBC呼び出しなど) の実行が完了すると、クラスターは非アクティブと見なされます。

Worker Typeの設定については、こちらの公式ドキュメントを参考に適宜選択して下さい。

Min Workersでは自動スケール時の最小Workerノード数を設定できます。
Max Workersでは自動スケール時の最大Workerノード数を設定できます。

設定が完了したら、「Create Cluster」を選択して、クラスターを作成します。

f:id:shizuuuka0202:20200126232350p:plain

以上でクラスターの作成は完了です。

こちらのクラスターは、Azure Databricks WorkspaceのNotebook作成時に使用します。

次回はこちらのクラスターを使用してNotebookを作成し、Azure Databricksを使用してデータの抽出、変換、読み込みを行う方法をご紹介します。


次の記事へ

目次に戻る