[Synapse/Azure Data Factory] Integration Runtime（統合ランタイム）とは🙄

# はじめに

Synapse パイプラインやAzure Data Factoryを触っているとIntegration Runtime ＝ 統合ランタイムという用語がでてきます。

また、Synapse Workspace を開くとIntegration Runtime にも ２種類あって、**Azure Integration Runtime** と **セルフホステッドIntegration Runtime** を作成することができるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/120da211-d9b1-59b7-9ba9-13c1862a4c74.png)

Integration Runtime とはなんなのか、そのなか２種類はどう違うのか、**自分のために**まとめてみました🙄

# そもそもランタイムとは

https://www.sophia-it.com/content/%e3%83%a9%e3%83%b3%e3%82%bf%e3%82%a4%e3%83%a0

https://wa3.i-3-i.info/word13464.html

「実行時に必要なもの」や「実効の機能のみを取り出したプログラムのこと」と書いてますね。

# では、統合ランタイムとは

ランタイムとは、プログラムなどを実行する際に必要な部品のようなものでした。では、統合ラインタイムとは🙄

ここでドキュメントを開きます。すると、冒頭に下記のように記述されています。

> Integration Runtime (IR) は、異なるネットワーク環境間でデータ統合機能を提供するために Azure Data Factory と Azure Synapse のパイプラインによって使用されるコンピューティング インフラストラクチャです。

つまり、ADFやSynapseパイプラインは様々なデータソースにアクセスする必要があり、そのデータソースごとにアクセスに必要な部品・機能は違うけど、それをいい感じでまとめて提供していることですね😀

**コンピューティングインフラストラクチャ**と書いてあるので、データソースからデータを引っ張ってくる際に必要な処理も行う際の処理の速さはIRを実行するPCのスペックによる部分がでてくるのだろうと考えます。

# Azure 統合ランタイムとセルフホステッド統合ランタイム

ランタイム、統合ランタイム、までなんとなくわかってきましたので、次はAzure 統合ランタイムとセルフホステッド統合ランタイムそれぞれの項目を読んでみます。

## Azure 統合ランタイム

Azure Integration Runtime では以下が可能と書いてあります。
それを読むと、つまりAzure Integration Runtime では Azure界にあるリソース同士のデータコピーなどの処理を実行してくれるようです。

- Azure でデータ フローを実行する
    - クラウドのデータ ストア間でコピー アクティビティを実行する
    - パブリック ネットワーク内で下記の変換アクティビティをディスパッチする

Databricks Notebook/Jar/Python アクティビティ、HDInsight Hive アクティビティ、HDInsight Pig アクティビティ、HDInsight MapReduce アクティビティ、HDInsight Spark アクティビティ、HDInsight Streaming アクティビティ、ML スタジオ (クラシック) Batch Execution アクティビティ、ML スタジオ (クラシック) 更新リソース アクティビティ、ストアド プロシージャ アクティビティ、Data Lake Analytics U-SQL アクティビティ、.NET カスタム アクティビティ、Web アクティビティ、Lookup アクティビティ、GetMetadata アクティビティ。

### 規定のAzure IR

SynapseやADFではリソースを作成したときに最初から作成されているAzure IRがあります。Azure内でのデータコピーなどの処理はこのIRを使用するので、その場合は意識してIRを作成する作業は必要がありません。ただ、要件的にAzure IRを別に作成をする必要があるときもPower Shellを利用して作成することは可能です。

https://docs.microsoft.com/ja-jp/azure/data-factory/create-azure-integration-runtime?tabs=data-factory#default-azure-ir

>既定では、個々のデータ ファクトリまたは Synapse ワークスペースは、パブリック ネットワーク内のクラウド データ ストアおよびコンピューティング サービスに対する操作をサポートする Azure IR をバックエンドに備えます。 その Azure IR の場所は自動解決されます。 リンクされたサービス定義で connectVia プロパティが指定されていない場合、既定の Azure IR が使用されます。 IR の場所を明示的に定義したい場合、または、管理上の目的から、異なる IR でのアクティビティ実行を仮想的にグループ化したい場合に限り、Azure IR を明示的に作成する必要があります。

なるほど、いろいろな要件が考えられますね。

## セルフホステッド統合ランタイム

セルフホステッド IR により、次のことが可能になりますと書いてあります。Azure以外のクラウドデータソースやオンプレミスのマシンなどからデータコピーなどを行う場合に必要になってくるIRのようです。

- クラウドのデータ ストアとプライベート ネットワーク内のデータ ストアの間でコピー アクティビティを実行する。
- オンプレミスまたは Azure Virtual Network 内のコンピューティング リソースに対して次の変換アクティビティをディスパッチする

HDInsight Hive アクティビティ (BYOC-Bring Your Own Cluster)、HDInsight Pig アクティビティ (BYOC)、HDInsight MapReduce アクティビティ (BYOC)、HDInsight Spark アクティビティ (BYOC)、HDInsight Streaming アクティビティ (BYOC)、ML スタジオ (クラシック) Batch Execution アクティビティ、ML スタジオ (クラシック) 更新リソース アクティビティ、ストアド プロシージャ― アクティビティ、Data Lake Analytics U-SQL アクティビティ、カスタム アクティビティ (Azure Batch 上で実行)、Lookup アクティビティ、GetMetadata アクティビティ。

下図のように、ローカルや外部のクラウドからデータをAzureの世界にもってくる際に使用されるのがセルフホステッドIRです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/4633dc59-bad8-0e30-2855-2ee4d3c6a215.png)

https://docs.microsoft.com/ja-jp/azure/data-factory/create-self-hosted-integration-runtime?tabs=data-factory

### セルフホステッドIRをインストールするマシン要件

セルフホステッドIRは、Azure IRと違い、リソースを作成したときに自動で作成されているわけではありません。ローカルPCやサーバーにインストールして動かしてもいいし、バーチャルマシン（VM）をAzureにたててその中で動かしても構ないので、作成場所に自由度があるからです。

オンプレミスやその他クラウドからデータをコピーしてくるコンピューティングインフラストラクチャなので、IRが動いているPCのスペックでコピーなどの動作に影響があります。ドキュメントには以下のような記載があるので、VMなどを構成するときには参考にしてください。

> - セルフホステッド統合ランタイムには、.NET Framework 4.7.2 以降を含む 64 ビット オペレーティング システムが必要です。 詳細については、「 .NET Framework システム要件 」をご覧ください。

> - セルフホステッド統合ランタイム コンピューターに推奨される最小構成は、4 コアの 2 GHz プロセッサ、8 GB の RAM、および 80 GB の使用可能なハード ドライブ領域です。 システム要件の詳細については、ダウンロードのページを参照してください。

## Azure VM に セルフホステッドIRを作ってみよう！

といっても、ドキュメントの通りやってみました。

https://docs.microsoft.com/ja-jp/azure/virtual-network/quick-create-portal#create-a-virtual-network

https://qiita.com/M-M/items/afadd554a031375d49c8

仮想ネットワークを作成して、その際にサブネット、Bastionホストを作成。
仮想マシンをセルフホステッドの最低要件に沿って、

:::note
Standard F4s v2 (4 vcpu 数、8 GiB メモリ)
:::

で作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/1bb87b2c-a109-cb91-ab9b-e54873e8f349.png)

画像の構成にした場合には月額35,000円ほど。24時間動かしっぱなしにせずに、要件に応じて動かし方も考えないといけませんね🤔

### IRをダウンロード

VMができたらBation経由でそのなかに入り、こちらからIRをダウンロードしてインストール。

https://www.microsoft.com/ja-jp/download/details.aspx?id=39717

### Keyを入手

いったんAzure Portalに戻り、SynapseやADFのWorkspaceから、統合ランタイムの作成を進めるとKeyを入手できるので、それをインストール時に使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/cb04b2b4-337d-2256-7cb9-0317d1ffa968.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/e8729d6f-5f1f-94ba-d161-67b982f49474.png)

## 無事完成🎉

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/c8d9cd69-5363-8da8-019e-97c295366d7b.png)

まずはこれを作成しておけば、マルチクラウド環境やオンプレミスを繋いで、ETLを行う用意はできました。
データをたくさん用意して、データ分析を楽しみましょう😁