Azure Data Factory とは?
はじめに
こんにちは!
この記事はAzure1年目の私がその時その時に学んだ事を書き留める備忘録になります。今回はAzure Data Factory (ADF)について学んだ事をまとめました。
ちなみに私はAZ-900は持っているもののAzure・Database・Bigdataまったくの初心者です。
英語にはなりますが、AZ-900はYouTubeでAdamさんがとても分かりやすく解説しているコース動画があるので、おすすめです!全39回コース、Microsoft Azure Fundamentals (AZ-900) Full Course
Azure Data Factory (ADF)とは?
近年、クラウドやIoTの普及に伴い様々な形式や種類の膨大なデータ(Big data)を集めることが容易になりました。このビックデータを活用してデータ分析をすることで、特定の物事やグループの傾向が分かったり、データに基づいた決定、予測等が可能になり、ビジネスでも新たな発見や傾向、対策に活用できるようになりました。
Azure Data Factory(ADF)はそんな膨大なデータを移動や変換するAzureのサービスで、生(raw)データから分析をする際にすぐに使用できるようにデータを精製してくれるサービスになります。例えば、鯖缶はお魚から工場で加工して鯖缶になるように、ADFではデータベースやBlobストレージに格納されたデータを変換(Transform)して分析時に使いやすいデータへ整えてくれるサービスになります。
ETLとELTとは
ADFのコンポーネントに入る前に、ざっくりとデータ分析する処理方法について軽く説明します。データ分析のする為のデータ処理方法には2種類あります。ETLとELTをざっくり説明します。
ETL (Extract Transform Load)
ETLは抽出->変換->読み込みという流れで処理をする方法になります。データベースにある(raw)データを抽出して、データを分析しやすいように変換して、データを読み込みするという流れで処理します。ADFはこのETLの処理方法に分類されるAzureのサービスになります。
メリット
- データベース外で変換処理をするので拡張しやすい
- データベース外で変換処理をするのでデータベースの負荷が少ない
デメリット
- Code学習のコストがかかる(ADFはノーコードでも構築が可能です)
ELT (Extract Load Transform)
ETLは抽出->読み込み->変換という処理をする方法になります。(raw)データを変換する前に、データベース等に入れてその中でデータ変換を行う形になります。
メリット
- 学習コストがかからない
デメリット
- データベース内部で変換処理をするので拡張が難しい場合がある
- データベース内部で変換処理をするのでデータベースの負荷が大きくなる
Azure Data Factoryを構成する5つのコンポーネント
Azure Data Factoryを構成するコンポーネントは主に下記の5つあります。
- Pipeline パイプライン
- Actitity アクティビティ
- Dataset データセット
- LinkedService リンクドサービス
- Integration Runtime 統合ランタイム
イメージ図
それぞれざっくり説明します。
Pipeline
Pipelineは次に説明するActivityの論理グループになります。例えば、先程のお魚で例えると、お魚から鯖缶にするまでの一連の処理のグループをPipelineといいます。ADFにはPipelineを複数作成することができます。例えば、お魚から鯖缶へと加工処理するのがPipelineAなら、お魚から干物へと処理をするのがPipelineB、というように1つの工場(ADF)で複数のPipelineを作成することもできます。
Activity
ActivityはPipelineのにある処理の一つ一つの工程を指します。鯖缶の例なら、お魚を洗浄→カット→缶に詰める→調味料入れる→缶の蓋を閉じる、等、お魚から鯖缶になるまでにこのような工程があります。この一つ一つの工程をActivityといいます。
Dataset
Datasetは格納されているデータの構造を示すものになります。例えば、バイナリーデータやcsvファイル、テーブルなどです。
LinkedService
LinkedServiceはADFとデータストアのサービス(Azure SQLやBlobストレージ、DWHなど)を繋いでくれるサービスになります。例えば、Blobストレージにcsvファイルを格納していて、そのcsvファイルをADFで変換処理をする場合はLinkedServiceがBlobストレージとADFを繋ぐ役割をするサービスで、csvファイルというデータ構造の型がDatasetに当たります。鯖缶の例で例えるなら、お魚にも種類が沢山ありますが、鯖という魚を指定するのがDatasetで、鯖を保存している倉庫と工場を繋げてくれる通路がLinkedServiceというイメージです。
Integration Runtime (IR)
Integration Runtime(IR)はコンピューティングインフラストラクチャで実際のADFとデータストアのネットワーク(Public/Private)を繋げて橋渡しをするものです。イメージ的には実際にADFを動かすためのコンピューティングを提供してくれるサービスで、鯖缶の例だと、実際に鯖を倉庫から工場へ運んだり工場を動かしている従業員さん達がIRにあたるかなと思います。
LinkedServiceを作成する際にIRを選択してコンピューティングインフラストラクチャを指定することができます。このIRには主に3つ種類があるので、それぞれざっくり説明します。
Azure Integration Runtime
Azure Integration Runtime (Azure IR)はパブリックネットワーク、つまりAzure内のサービスとADFを繋げるのに選択するのがAzure IRです。ADFを作成した際に自動でこのAzure IRがデフォルトで1つ作成されます。勿論、リージョン指定をしたい等の理由から自分でこのAzure IRを作成して使うこともできます。
Self-Hosted Integration Runtime
Self-Hosted Integration Runtime (SHIR)はプライベートなネットワーク内にあるAzureのサービスやオンプレミスとADFを繋げる際に選択するのがこのSHIRとなります。SHIRをプライベートネットワーク内にあるVMやオンプレミスのWindowsサーバにインストールすることで、自分でSHIRを管理することができます。SHIRはデータ移動やアクティビティのディスパッチは可能ですが、DataFlowはサポートしてないので、注意が必要です。
Azure-SSIS Integration Runtime
Azure-SSIS Integration Runtimeは既存のSSISをリフト&シフトする際にこのAzure-SSIS IRを使用することで、SSISパッケージを実行することができます。
まとめ
いかがでしたでしょうか?今週学んだADFのコンポーネントについてまとめてみました。特にIRについては文面だけでは理解が難しいと思ったので、実際に構築をしていって概念をもっとよく理解していきたいと思いました。
参考文献
Discussion