すべてのプロダクト
Search
ドキュメントセンター

CloudFlow:CloudFlow と Function Compute を使用してバッチ ETL 処理システムを構築する

最終更新日:Mar 17, 2025

CloudFlow と Function Compute を使用して、より柔軟で費用対効果の高いデータ処理ソリューションを提供するバッチ抽出、変換、ロード (ETL) 処理システムを構築できます。これにより、基盤となるサーバーリソースを管理する必要がなく、ビジネスロジックに集中できます。

背景情報

クラウドコンピューティング、AI、IoT などの新しいテクノロジーが広く採用されています。生成されるデータ量は爆発的に増加し、データは重要な資産となっており、アプリケーションサービスの運用監視、運用データの分析、深層学習のためのデータのフィルタリングと前処理など、データ収集と処理機能に対する需要が高まっています。これらの機能は、競争上の優位性の中核となり、サービスの運用効率に直接影響します。既存の ETL システムを使用して、前述の目的を達成できます。ただし、ほとんどの場合、セルフマネージドサービスを使用することをお勧めします。

  • データ処理タスクが不定期に実行され、タスクが実行されていないときにリソースを消費したくない場合。

  • データ処理要件には、いくつかの簡単な手順のみが含まれており、セルフマネージドサービスを使用して迅速に満たすことができます。

  • データ処理ワークフローには、多数のカスタム手順が含まれており、既存のシステムでは柔軟に処理できません。ビジネス要件を満たすには、セルフマネージドサービスが必要です。

  • さまざまなオープンソースデータ処理モジュールの構築と保守に過剰な労力を費やしたくないが、多数の同時データ処理要求の処理で優れたパフォーマンスを実現したい場合。

上記の要件がある場合、または高い柔軟性高い信頼性費用対効果高性能を備えたバッチデータ処理システムを実装したい場合は、このトピックのサーバーレスソリューションが最適な選択肢となります。

ユースケース

値が data_1 または data_2 である大量のデータを処理するとします。各値を持つデータの出現回数をカウントし、統計結果をデータウェアハウスに保存します。大量のデータが関係している場合、またはデータソースが異種の場合、一度に 1 つのプロセスを使用して短期間でデータ処理を迅速に完了することは困難です。この場合、CloudFlowFunction Compute の組み合わせは、効率的なソリューションを提供します。

コアデータ処理機能を示すために、Alibaba Cloud Object Storage Service (OSS) をデータウェアハウスのストレージインフラストラクチャとして使用します。これは、さまざまなタイプのデータベースサービスの代表です。

次のソリューションは、CloudFlowFunction Compute を使用して、費用対効果が高く、弾力性に優れたデータ処理システムを実装する方法を示しています。このシステムでは、Function Compute は、データ量に基づいてデータ処理と統計のための基盤となるコンピューティングリソースを動的に提供します。CloudFlow は、複雑なビジネスのアップストリームとダウンストリームのロジックを調整するのに役立ちます。

実装

一般的なデータ処理業務では、次の項目に注意してください。

データソース: 処理するデータのソース。ほとんどの場合、データはデータベースやログファイルなどのテキストファイルなど、さまざまなソースから取得されます。この例では、説明のために少量のデータを生成する関数を使用します。実際のシナリオでは、さまざまなカスタムデータソースを使用できます。

処理フレームワークまたはモード: MapReduce など、データの処理に使用されるフレームワークまたはモード。この例では、CloudFlow を使用します。

保存先: データウェアハウス。この例では、OSS をデータウェアハウスとして使用します。これは、最終データの保存先として機能します。

データ処理ワークフロー:

生データを 3 ~ 5 個のシャードにランダムに分割します。各シャードには、値 data_1 と data_2 のデータが含まれています。mapper() 関数を使用して、各シャードで各値を持つデータの出現回数をカウントし、中間結果を保存します。reduce() 関数を使用して、各シャードの統計結果を統一的に処理し、結果を合計して、最終結果を保存します。次の手順が含まれます。

  1. データソースからデータを取得します。

  2. データをランダムに、または特定のルールに基づいてシャードに分割します。

  3. MapReduce の改良されたデータ並列処理機能を使用してデータを処理します。

  4. 結果を保存先に保存します。

次の図は、システムで使用される Alibaba Cloud サービスとモジュール、およびそれらの相互作用を示しています。

image

前提条件

手順

  1. Function Compute アプリケーションセンターにワークフローと関数をデプロイします。

    1. ETLDataProcessing にアクセスします。

    2. 「開発とエクスペリエンス」セクションの [デプロイ] をクリックして Function Compute アプリケーションセンターに移動し、アプリケーションをデプロイします。image

    3. [アプリケーションの作成] ページで、パラメータを設定し、[デフォルト環境の作成とデプロイ] をクリックします。

      次の表は、設定する必要がある主要なパラメータについて説明しています。その他のパラメータにはデフォルト値を使用します。

      パラメータ

      説明

      基本設定

      デプロイタイプ

      デプロイタイプ。[直接デプロイ] を選択します。

      ロール名

      • Alibaba Cloud アカウントを使用して初めてアプリケーションセンターでアプリケーションを作成する場合は、[今すぐ承認] をクリックして [ロールテンプレート] ページに移動し、AliyunFCServerlessDevsRole という名前のサービスリンクロールを作成してから、[承認ポリシーの確認] をクリックします。

        image.png

      • RAM ユーザーを使用している場合は、画面の指示に従って承認リンクを Alibaba Cloud アカウントにコピーして承認します。承認が完了したら、[承認済み] をクリックします。

        image.png

        説明

        [ロールの取得に失敗しました] というメッセージが表示された場合は、対応する Alibaba Cloud アカウントに連絡して、AliRAMReadOnlyAccess ポリシーと AliyunFCFullAccess ポリシーを現在の RAM ユーザーにアタッチします。詳細については、「Alibaba Cloud アカウントを使用して RAM ユーザーに権限を付与する」をご参照ください。

      詳細設定

      リージョン

      アプリケーションをデプロイするリージョン。

      ワークフロー実行ロール

      ワークフローの実行に使用されるサービスリンクロール。事前にサービスリンクロールを作成し、AliyunFCInvocationAccess ポリシーをサービスリンクロールにアタッチします。

      関数サービスロール

      Function Compute が他のクラウドサービスにアクセスするために使用するサービスリンクロール。特別な要件がない場合は、Function Compute によって提供されるデフォルトのサービスリンクロール AliyunFCDefaultRole を使用することをお勧めします。

      オブジェクトストレージバケット名

      デプロイするワークフローと関数と同じリージョンにある OSS バケットの名前。

      アプリケーションのデプロイが完了するまで 1 ~ 2 分待ちます。システムは、etl-data-processing-2q1i という名前の 3 つの関数とワークフローを自動的に作成します。Function Compute コンソールCloudFlow コンソール にログインして、作成結果を確認できます。

      • shards-spliter: データソースからデータを読み取り、特定のルールに基づいてソースデータをシャードに分割し、シャードをワークフローに返します。

      • mapper: MapReduce フレームワークのマップ関数。この関数は、シャードデータをフィルタリング、クレンジング、および計算します。ほとんどの場合、処理速度を向上させるために、データ処理ワークフロー内のシャードの数に基づいて複数の関数インスタンスが並列に生成されます。mapper() 関数によって各シャードで返される結果は、特定の OSS ディレクトリに保存されます。

      • reducer: MapReduce フレームワークのリデュース関数。この関数は、mapper() 関数によって返された結果を統合およびマージし、最終結果を OSS にプッシュします。

      すべてのサンプルコードは、Function Compute アプリケーションセンター と CloudFlow コンソールから取得できます。

  2. 結果を確認します。

    1. CloudFlow コンソール にログインします。トップナビゲーションバーで、リージョンを選択します。

    2. [ワークフロー] ページで、etl-data-processing-2q1i ワークフローをクリックします。[ワークフローの詳細] ページで、[実行レコード] タブをクリックし、[実行開始] をクリックします。

      実行が完了したら、ワークフローの入力と出力 を確認します。

    3. OSS コンソール にログインして、シャードデータの内容とマージ結果を確認します。

      image