コピー アクティビティ パフォーマンス最適化機能

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Data Factory と Azure Synapse Analytics のパイプラインで利用できるコピー アクティビティのパフォーマンス最適化機能について説明します。

UI を使用したパフォーマンス機能の構成

パイプライン エディター キャンバスで Copy アクティビティ を選択し、キャンバスの下のアクティビティ構成領域で [設定] タブを選択すると、以下で詳しく説明するパフォーマンス機能のすべての構成オプションが表示されます。

Shows the Copy activity performance features on the Settings tab for the activity in the pipeline editor.

データ統合単位

データ統合単位は、サービス内の 1 つの単位の能力 (CPU、メモリ、ネットワーク リソース割り当ての組み合わせ) を表す尺度です。 データ統合単位は Azure 統合ランタイムにのみ適用され、セルフホステッド統合ランタイムには適用されません。

コピー アクティビティの実行を支援するために許可される DIU は 2 から 256 です。 指定しなかった場合、または UI で [自動] を選択した場合、ソースとシンクのペアとデータ パターンに基づいて、最適な DIU 設定がサービスによって動的に適用されます。 次の表に、さまざまなコピー シナリオでサポートされている DIU 範囲と既定の動作をリストします。

コピー シナリオ サポートされている DIU 範囲 サービスによって決定される既定の DIU
ファイル ストア間 - 1 つのファイルのコピー元またはコピー先: 2 から 4
- 複数のファイルのコピー元とコピー先: ファイルの数とサイズに応じて 2 から 256

たとえば、4 つの大きなファイルを含むフォルダーからデータをコピーし、階層を保持することを選択した場合、最大の有効な DIU は 16 です。ファイルのマージを選択すると、最大の有効な DIU は 4 になります。
ファイルの数とサイズに応じて 4 〜 32。
ファイル ストアから非ファイル ストアへ - 1 つのファイルからコピーする: 2 から 4
- 複数のファイルからコピーする: ファイルの数とサイズに応じて 2 から 256

例えば、4 つの大きなファイルを含むフォルダーからデータをコピーする場合、最大の有効な DIU は 16 です。
- Azure SQL Database または Azure Cosmos DB: シンク層 (Dtu/Ru) とソース ファイルのパターンに応じて 4 ~ 16 の範囲にコピーします。
PolyBase または COPY ステートメントを使用して、- Azure Synapse Analytics にコピーします。2
- その他のシナリオ:4
非ファイル ストアからファイル ストアへ - パーティション オプションが有効なデータ ストア (Azure Database for PostgreSQLAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsOracleNetezzaSQL ServerTeradata など) からコピーします。フォルダーに書き込む場合は 2-256 で、単一のファイルに書き込む場合は 2-4 です。 ソース データ パーティションごとに最大 4 つの DIU を使用できることに注意してください。
- その他のシナリオ:2-4
- REST または HTTP からコピーする:1
UNLOAD を使用して - Amazon Redshift からコピーする:2
- その他のシナリオ:4
非ファイル ストア間 - パーティション オプションが有効なデータ ストア (Azure Database for PostgreSQLAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsOracleNetezzaSQL ServerTeradata など) からコピーします。フォルダーに書き込む場合は 2-256 で、単一のファイルに書き込む場合は 2-4 です。 ソース データ パーティションごとに最大 4 つの DIU を使用できることに注意してください。
- その他のシナリオ:2-4
- REST または HTTP からコピーする:1
- その他のシナリオ:4

コピー アクティビティの監視ビューまたはアクティビティの出力で、各コピー実行に使用される DIU を確認できます。 詳細については、コピー アクティビティ監視に関するページを参照してください。 この既定の動作をオーバーライドするには、dataIntegrationUnits プロパティに次のように値を指定します。 コピー操作が実行時に使用する DIU の実際の数は、データ パターンに応じて、構成されている値以下になります。

使用済み DIU の数 * コピー期間 * 単価/DIU 時間 が課金されます。 現在の価格については、こちらを参照してください。 サブスクリプションの種類ごとに、現地通貨と個別の割引が適用される場合があります。

例:

"activities":[
    {
        "name": "Sample copy activity",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "BlobSource",
            },
            "sink": {
                "type": "AzureDataLakeStoreSink"
            },
            "dataIntegrationUnits": 128
        }
    }
]

セルフホステッド統合ランタイムのスケーラビリティ

より高いスループットを実現するには、セルフホステッド IR をスケールアップするかスケールアウトします。

  • セルフホステッド IR ノード上の CPU と使用可能なメモリが十分に活用されていないにもかかわらず、同時ジョブの実行が上限に達する場合は、ノードで実行できる同時実行ジョブの数を増やすことでスケールアップを行う必要があります。 手順については、こちらを参照してください。
  • 一方、セルフホステッド IR ノードの CPU が高いか、使用可能なメモリが少ない場合は、新しいノードを追加して、複数のノード間で負荷をスケールアウトすることができます。 手順については、こちらを参照してください。

注次のシナリオでは、単一のコピーアクティビティの実行で、複数の自己ホスト型 IR ノードを利用できることに注意してください。

並列コピー

Copy アクティビティで並列コピー (Copy アクティビティの JSON 定義の parallelCopies プロパティ、またはユーザー インターフェイスの Copy アクティビティのプロパティの [設定] タブにある Degree of parallelism 設定) を設定し、使用する並列処理を指示できます。 このプロパティは、並列でソースから読み取る、またはシンク データ ストアに書き込むコピー アクティビティ内の最大スレッド数と見なすことができます。

並列コピーは、データ統合ユニット または セルフホステッド IR ノード に直交します。 すべての DIU またはセルフホステッド IR ノードでカウントされます。

コピー アクティビティが実行されるたびに、サービスでは、既定で、ソースとシンクのペアとデータ パターンに基づいて、最適な並列コピー設定が動的に適用されます。

ヒント

通常、並列コピーの既定の動作では、ソースとシンクのペア、データ パターン、DIU の数、またはセルフホステッド IR の CPU/メモリ/ノード数に基づいて、サービスによって自動決定される最適なスループットが得られます。 並列コピーを調整するタイミングについては、「コピーアクティビティのパフォーマンスのトラブルシューティング」を参照してください。

次の表は、並列コピーの動作をリストしています。

コピー シナリオ 並列コピー動作
ファイル ストア間 parallelCopies は、ファイルレベルでの並列処理を決定します。 それぞれのファイル内でのチャンク化は裏で自動的かつ透過的に行われます。 指定されたソース データ ストアの種類に最適なチャンク サイズを使用し、並行してデータを読み込むよう設計されています。

実行時にコピー アクティビティが使用する並列コピーの実際の数は、存在するファイルの数以下となります。 コピー動作が mergeFile をファイルシンクにマージする場合、コピー アクティビティはファイル レベルでの並列処理を活用できません。
ファイル ストアから非ファイル ストアへ - Azure SQL Database または Azure Cosmos DB にデータをコピーする場合、既定の並列コピーはシンク層 (Dtu/Ru の数) にも依存します。
- Azure テーブルにデータをコピーする場合、既定の並列コピーは 4 です。
非ファイル ストアからファイル ストアへ - パーティション オプションが有効なデータ ストア (Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsOracleAmazon RDS for OracleNetezzaSAP HANASAP Open HubSAP テーブルSQL ServerAmazon RDS for SQL ServerTeradata など) からデータをコピーする場合、既定の並列コピーは 4 となります。 実行時のコピーアクティビティで使用される並列コピーの実際の数は、所有しているデータ パーティションの数以下になります。 セルフホステッド統合ランタイムを使用して Azure Blob/ADLS Gen2 にコピーする場合は、IR ノードあたりの最大の有効な並列コピー数が 4 または 5 であることに注意してください。
- その他のシナリオでは、並列コピーは有効になりません。 並列処理が指定されても、この場合は適用されません。
非ファイル ストア間 - Azure SQL Database または Azure Cosmos DB にデータをコピーする場合、既定の並列コピーはシンク層 (Dtu/Ru の数) にも依存します。
- パーティション オプションが有効なデータ ストア (Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsOracleAmazon RDS for OracleNetezzaSAP HANASAP Open HubSAP テーブルSQL ServerAmazon RDS for SQL ServerTeradata など) からデータをコピーする場合、既定の並列コピーは 4 となります。
- Azure テーブルにデータをコピーする場合、既定の並列コピーは 4 です。

お使いのデータ ストアをホストしているマシンの負荷を制御したり、コピーのパフォーマンスをチューニングしたりするには、規定値をオーバーライドし、parallelCopies プロパティの値を指定することができます。 値は 1 以上の整数でなければなりません。 実行時にコピー アクティビティは、設定された値以下でパフォーマンスが最大になる値を使用します。

parallelCopies プロパティに値を指定するとき、コピー元データ ストアとシンク データ ストアの負荷増加を考慮してください。 また、セルフホステッド統合ランタイムによってコピー アクティビティが支援される場合、セルフホステッド統合ランタイムの負荷増加を考慮してください。 この負荷増加は、特に複数のアクティビティがある場合や、同じデータ ストアに対して実行される同じアクティビティの同時実行がある場合に発生します。 データ ストアまたはセルフホステッド統合ランタイムの負荷の上限に達したことがわかった場合は、parallelCopies の値を減らし、負荷を軽減してください。

例:

"activities":[
    {
        "name": "Sample copy activity",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "BlobSource",
            },
            "sink": {
                "type": "AzureDataLakeStoreSink"
            },
            "parallelCopies": 32
        }
    }
]

ステージング コピー

ソース データ ストアからシンク データ ストアにデータをコピーする場合、中間ステージング ストアとして Azure Blob Storage または Azure Data Lake Storage Gen2 を使用することを選択できます。 ステージングは、特に次のような場合に役立ちます。

  • PolyBase を介してさまざまなデータ ストアから Azure Synapse Analytics にデータを取り込む、Snowflake との間でデータをコピーする、または Amazon Redshift および HDFS からデータを効率的に取り込む。 詳細については、以下を参照してください。
  • 企業の IT ポリシーが理由で、ファイアウォールでポート 80 とポート 443 以外のポートを開きたくない。 たとえば、オンプレミスのデータ ストアから Azure SQL Database または Azure Synapse Analytics にデータをコピーする場合、Windows ファイアウォールと会社のファイアウォールの両方で、ポート 1433 の送信 TCP 通信を有効にする必要があります。 このシナリオでは、ステージング コピーにセルフホステッド統合ランタイムを利用し、まずポート 443 で HTTP または HTTPS を介してステージング ストレージにデータをコピーし、次にステージングから SQL Database または Azure Synapse Analytics にデータを読み込むことができます。 このフローでは、ポート 1433 を有効にする必要はありません。
  • ネットワーク接続が遅い場合、ハイブリッド データ移動 (オンプレミス データ ストアからクラウド データ ストアへのコピー) の実行に少し時間がかかる場合がある。 パフォーマンスを向上させるため、ステージング コピーを使用してオンプレミスのデータを圧縮することで、クラウド内のステージング データ ストアにデータを移動する時間を短縮できます。 その後、データは、ターゲット データ ストアに読み込む前に、ステージング ストアで圧縮を解除できます。

ステージング コピーのしくみ

ステージング機能をアクティブにすると、まずデータがソース データ ストアからステージング ストレージにコピーされます (ご自分の Azure Blob または Azure Data Lake Storage Gen2 が使用されます)。 次に、データはステージングからシンクのデータ ストアにコピーされます。 コピー アクティビティでは、2 段階のフローが自動的に管理され、データの移動が完了した後、ステージング ストレージから一時データがクリーンアップされます。

Staged copy

コピー アクティビティの実行後に一時データをクリーンアップできるように、ステージング ストレージ内の Azure Data Factory に削除アクセス許可を付与する必要があります。

ステージング ストアを使用したデータ移動をアクティブにすると、ソース データ ストアからステージング ストアにデータを移動する前にデータを圧縮し、中間データ ストアまたはステージング データ ストアからシンク データ ストアにデータを移動する前に圧縮を解除するかどうかを指定できます。

現在のところ、ステージング コピーの使用に関係なく、異なるセルフホステッド統合ランタイムで接続されている 2 つのデータ ストア間でデータをコピーできません。 このようなシナリオの場合、コピー元からステージングにコピーし、その後、ステージングからシンクにコピーするよう、明示的につながれた 2 つのコピー アクティビティを構成できます。

構成

コピー アクティビティの enableStaging 設定を構成して、目的のデータ ストアに読み込む前にデータをストレージにステージングするかどうかを指定します。 enableStagingTRUE に設定した場合は、次の表に記載されている追加のプロパティを指定する必要があります。

プロパティ Description 既定値 必須
enableStaging 中間ステージング ストアを経由してデータをコピーするかどうかを指定します。 False いいえ
linkedServiceName Azure Blob ストレージまたは Azure Data Lake Storage Gen2 リンク サービスの名前を指定します。これは、中間ステージング ストアとして使用する Storage のインスタンスを示します。 該当なし はい ( enableStaging が TRUE に設定されている場合)
path ステージング データを格納するパスを指定します。 パスを指定しないと、一時データを格納するコンテナーがサービスによって作成されます。 該当なし いいえ
enableCompression データをコピーする前に圧縮するかどうかを指定します。 この設定により、転送するデータの量が減ります。 False いいえ

注意

圧縮を有効にしてステージング コピーを使用する場合、サービスとリンクされたステージング Blob でのサービス プリンシパルと MSI 認証はサポートされません。

上の表に記載されているプロパティを持つコピー アクティビティの定義の例を次に示します。

"activities":[
    {
        "name": "CopyActivityWithStaging",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "OracleSource",
            },
            "sink": {
                "type": "SqlDWSink"
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                },
                "path": "stagingcontainer/path"
            }
        }
    }
]

ステージング コピーの課金への影響

コピーの期間とコピーの種類という 2 つのステップに基づいて課金されます。

  • クラウド コピー (クラウド データ ストアから別のクラウド データ ストアへのデータのコピー、どちらのステージも Azure 統合ランタイムで強化されている) でステージングを使用する場合、料金は、"ステップ 1 とステップ 2 のコピー時間の合計" x "クラウド コピーの単価" で計算されます。
  • ハイブリッド コピー (オンプレミス データ ストアからクラウド データ ストアへのデータのコピー、1 つのステージがセルフホステッド統合ランタイムで強化されている) でステージングを使用する場合、料金は、"ハイブリッド コピーの時間" x "ハイブリッド コピーの単価" + "クラウド コピーの時間" x "クラウド コピーの単価" で計算されます。

コピー アクティビティの他の記事を参照してください。