大規模な抽出、変換、および読み込み (ETL)Extract, transform, and load (ETL) at scale

抽出、変換、および読み込み (ETL) は、データがさまざまなソースから取得され、標準の場所に収集され、クリーニングと処理が行われ、最終的にクエリが可能なデータ ストアに読み込まれるプロセスです。Extract, transform, and load (ETL) is the process by which data is acquired from various sources, collected in a standard location, cleaned and processed, and ultimately loaded into a datastore from which it can be queried. 従来の ETL プロセスは、データをインポートし、所定の場所でクリーニングした後、リレーショナル データ エンジンに格納します。Legacy ETL processes import data, clean it in place, and then store it in a relational data engine. HDInsight 上では、さまざまな Apache Hadoop エコシステム コンポーネントで、大規模な ETL の実行がサポートされます。With HDInsight, a wide variety of Apache Hadoop ecosystem components support performing ETL at scale.

ETL プロセスでの HDInsight の使用は、次のパイプラインにまとめることができます。The use of HDInsight in the ETL process can be summarized by this pipeline:

大規模な HDInsight ETL の概要

次のセクションで、ETL の各フェーズとその関連コンポーネントについて説明します。The following sections explore each of the ETL phases and their associated components.

オーケストレーションOrchestration

オーケストレーションは、ETL パイプラインのすべてのフェーズにまたがります。Orchestration spans across all phases of the ETL pipeline. HDInsight の ETL ジョブには、多くの場合、相互に連携して動作する複数の異なる製品が含まれます。ETL jobs in HDInsight often involve several different products working in conjunction with each other. Hive を使用してデータの一部がクリーニングされ、Pig を使用して別の部分がクリーンアップされることがあります。You might use Hive to clean some portion of the data, while Pig cleans another portion. Azure Data Factory を使用して、Azure Data Lake Store から Azure SQL Database にデータを読み込むことがあります。You might use Azure Data Factory to load data into Azure SQL Database from Azure Data Lake Store.

オーケストレーションは、適切なタイミングで適切なジョブを実行するために必要です。Orchestration is needed to run the appropriate job at the appropriate time.

Apache OozieApache Oozie

Apache Oozie は、Hadoop ジョブを管理するワークフロー調整システムです。Apache Oozie is a workflow coordination system that manages Hadoop jobs. Oozie は HDInsight クラスター内で実行され、Hadoop スタックと統合されます。Oozie runs within an HDInsight cluster and is integrated with the Hadoop stack. Oozie は、Apache Hadoop MapReduce、Apache Pig、Apache Hive、および Apache Sqoop の Hadoop ジョブをサポートします。Oozie supports Hadoop jobs for Apache Hadoop MapReduce, Apache Pig, Apache Hive, and Apache Sqoop. Oozie は、Java プログラムやシェル スクリプトのような、システム特有のジョブのスケジュールを設定するのに使用することもできます。Oozie can also be used to schedule jobs that are specific to a system, such as Java programs or shell scripts.

詳細については、HDInsight で Apache Oozie と Apache Hadoop を使用してワークフローを定義して実行する方法に関するページを参照してください。Oozie を使用してエンド ツー エンドのパイプラインを動作させる方法について、さらに詳しい情報については、データ パイプラインの運用化に関するページを参照してください。For more information, see Use Apache Oozie with Apache Hadoop to define and run a workflow on HDInsight For a deep dive showing how to use Oozie to drive an end-to-end pipeline, see Operationalize the Data Pipeline.

Azure Data FactoryAzure Data Factory

Azure Data Factory では、オーケストレーション機能をサービスとしてのプラットフォームの形で提供します。Azure Data Factory provides orchestration capabilities in the form of platform-as-a-service. クラウドベースのデータ統合サービスを通じて、データの移動と変換を制御して自動化するデータ主導型のワークフローをクラウドに作成することができます。It is a cloud-based data integration service that allows you to create data-driven workflows in the cloud for orchestrating and automating data movement and data transformation.

Azure Data Factory を使用して、以下を実行できます。Using Azure Data Factory, you can:

  1. 各種のデータ ストアからデータを取り込むデータ主導型のワークフロー (パイプライン) を作成し、スケジュールを設定する。Create and schedule data-driven workflows (called pipelines) that ingest data from disparate data stores.
  2. Azure HDInsight Hadoop、Spark、Azure Data Lake Analytics、Azure Batch、Azure Machine Learning などのコンピューティング サービスを使用して、データの処理と変換を行う。Process and transform the data using compute services such as Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics, Azure Batch, and Azure Machine Learning.
  3. ビジネス インテリジェンス (BI) アプリケーションから利用できるよう、Azure SQL Data Warehouse などのデータ ストアに出力データを公開する。Publish output data to data stores such as Azure SQL Data Warehouse for business intelligence (BI) applications to consume.

Azure Data Factory の詳細については、こちらのドキュメントを参照してください。For more information on Azure Data Factory, see the documentation.

ファイル ストレージと結果ストレージの取り込みIngest file storage and result storage

ソース データ ファイルは、通常、Azure Storage または Azure Data Lake Storage 内の場所に読み込まれます。Source data files are typically loaded into a location in Azure Storage or Azure Data Lake Storage. 任意の形式のファイルを使用できますが、通常は CSV などのフラット ファイルが使用されます。Files can be in any format, but typically they are flat files like CSVs.

Azure StorageAzure Storage

Azure Storage には、固有のスケーラビリティ ターゲットがあります。Azure Storage has specific scalability targets. 大半の分析ノードでは、Azure Storage は、多数の小さなファイルを処理する場合に最善のスケーリングを行います。For most analytic nodes, Azure Storage scales best when dealing with many smaller files. Azure Storage は、ファイルの数やサイズが制限内である限り、数やサイズに関係なく、同等のパフォーマンスを保証します。Azure Storage guarantees the same performance, no matter how many files or how large the files (as long as you are within your limits). つまり、テラバイトのデータを格納し、そのデータのサブセットを使用する場合でもすべてを使用する場合でも、一貫性のあるパフォーマンスを得ることができます。This means that you can store terabytes of data and still get consistent performance, whether you are using a subset of the data or all of the data.

Azure Storage には、さまざまな種類の BLOB があります。Azure Storage has several different types of blobs. "追加 BLOB" は、Web ログやセンサー データを格納するための優れたオプションです。An append blob is a great option for storing web logs or sensor data.

アクセスをスケールアウトするために複数の BLOB を多数のサーバーに分散させることができますが、1 台のサーバーが処理できるのは 1 つの BLOB のみです。Multiple blobs can be distributed across many servers to scale out access to them, but a single blob can only be served by a single server. BLOB は BLOB コンテナーに論理的にグループ化できますが、このグループ化によってパーティション分割は影響を受けません。While blobs can be logically grouped in blob containers, there are no partitioning implications from this grouping.

Azure Storage には、BLOB ストレージ用の WebHDFS API レイヤーもあります。Azure Storage also has a WebHDFS API layer for the blob storage. HDInsight のすべてのサービスは、Hadoop 分散ファイル システム (HDFS) の使用方法に類似する方法で、Azure Blob Storage 内のファイルにアクセスして、データのクリーニングとデータ処理を実行できます。All the services in HDInsight can access files in Azure Blob Storage for data cleaning and data processing, similarly to how those services would use Hadoop Distributed Files System (HDFS).

データは、通常は、PowerShell、Azure Storage SDK、または AZCopy を使用して Azure Storage に取り込まれます。Data is typically ingested into Azure Storage using either PowerShell, the Azure Storage SDK, or AZCopy.

Azure Data Lake StorageAzure Data Lake Storage

Azure Data Lake Storage (ADLS) は、HDFS と互換性がある、分析データ用のハイパースケールのマネージド リポジトリです。Azure Data Lake Storage (ADLS) is a managed, hyperscale repository for analytics data that is compatible with HDFS. ADLS で使用されている設計パラダイムは HDFS に類似しており、容量の合計と個々のファイルのサイズの点で無制限のスケーラビリティを提供します。ADLS uses a design paradigm that is similar to HDFS, and offers unlimited scalability in terms of total capacity and the size of individual files. ADLS は大きなファイルの操作で優れた機能を発揮しますが、これは大きなファイルを複数のノードに格納できるためです。ADLS is very good when working with large files, since a large file can be stored across multiple nodes. ADLS でのデータのパーティション分割は、バックグラウンドで行われます。Partitioning data in ADLS is done behind the scenes. 数百のテラバイトのデータに対する読み取りと書き込みを効率的に行う数千の同時実行される Executor によって、分析ジョブの実行で非常に高いスループットを得ることができます。You get massive throughput to run analytic jobs with thousands of concurrent executors that efficiently read and write hundreds of terabytes of data.

データは、通常は Azure Data Factory、ADLS SDK、AdlCopy Service、Apache DistCp、または Apache Sqoop を使用して ADLS に取り込まれます。Data is typically ingested into ADLS using Azure Data Factory, ADLS SDKs, AdlCopy Service, Apache DistCp, or Apache Sqoop. どのサービスを使用するかは、データの場所に大きく依存します。Which of these services to use largely depends on where the data is. 現在データが既存の Hadoop クラスターにある場合は、Apache DistCp、AdlCopy Service、または Azure Data Factory を使用します。If the data is currently in an existing Hadoop cluster, you might use Apache DistCp, AdlCopy Service, or Azure Data Factory. Azure Blob Storage にある場合は、Azure Data Lake Storage .NET SDK、Azure PowerShell、または Azure Data Factory を使用します。If it's in Azure Blob Storage, you might use Azure Data Lake Storage .NET SDK, Azure PowerShell, or Azure Data Factory.

ADLS は、Azure Event Hub または Apache Storm を使用したイベントの取り込み用にも最適化されています。ADLS is also optimized for event ingestion using Azure Event Hub or Apache Storm.

両方のストレージ オプションに関する考慮事項Considerations for both storage options

テラ バイトの範囲のデータセットのアップロードでは、ネットワークの待機時間が大きな問題になる可能性があります。これはデータがオンプレミスの場所から送信される場合に特に当てはまります。For uploading datasets in the terabyte range, network latency can be a major problem, particularly if the data is coming from an on-premises location. このような場合は、次のオプションを使用できます。In such cases, you can use the options below:

  • Azure ExpressRoute:Azure ExpressRoute を使用すると、Azure データセンターとオンプレミスのインフラストラクチャ間のプライベート接続を作成できます。Azure ExpressRoute: Azure ExpressRoute lets you create private connections between Azure datacenters and your on-premises infrastructure. これらの接続により、大量のデータを転送するための信頼性の高いオプションが提供されます。These connections provide a reliable option for transferring large amounts of data. 詳細については、 Azure ExpressRoute のドキュメントをご覧ください。For more information, see Azure ExpressRoute documentation.

  • データの "オフライン" アップロード。"Offline" upload of data. Azure Import/Export サービスを使用して、データが格納されたハード ディスク ドライブを Azure データ センターに発送できます。You can use Azure Import/Export service to ship hard disk drives with your data to an Azure data center. データはまず Azure Storage BLOB にアップロードされます。Your data is first uploaded to Azure Storage Blobs. その後、Azure Data Factory または AdlCopy ツールを使用して、Azure Storage BLOB から Data Lake Storage にデータをコピーできます。You can then use Azure Data Factory or the AdlCopy tool to copy data from Azure Storage blobs to Data Lake Storage.

Azure SQL Data WarehouseAzure SQL Data Warehouse

Azure SQL DW は、今後の分析用にクリーニングされ、使用する準備ができた結果を格納するための最適の選択肢です。Azure SQL DW is a great choice to store cleaned and prepared results for future analytics. Azure HDInsight を使用して、Azure SQL DW 用のサービスを実行できます。Azure HDInsight can be used to perform those services for Azure SQL DW.

Azure SQL Data Warehouse (SQL DW) は、分析ワークロード用に最適化されたリレーショナル データベース ストアです。Azure SQL Data Warehouse (SQL DW) is a relational database store optimized for analytic workloads. Azure SQL DW は、パーティション分割されたテーブルに基づいてスケーリングを行います。Azure SQL DW scales based on partitioned tables. テーブルは、複数のノードにパーティション分割できます。Tables can be partitioned across multiple nodes. Azure SQL DW ノードは作成時に選択されます。Azure SQL DW nodes are selected at the time of creation. それらは後でスケーリングできますが、データ移動が必要になるのはアクティブ プロセスです。They can scale after the fact, but that's an active process that might require data movement. 詳細については、Azure SQL Data Warehouse のコンピューティング管理 に関する記事を参照してください。See SQL Data Warehouse - Manage Compute for more information.

Apache HBaseApache HBase

Apache HBase は、Azure HDInsight で利用可能なキー値ストアです。Apache HBase is a key-value store available in Azure HDInsight. Apache HBase は、オープン ソースの NoSQL データベースで、Hadoop 上に構築され、Google BigTable を模範にしています。Apache HBase is an open-source, NoSQL database that is built on Hadoop and modeled after Google BigTable. HBase は、大量の非構造化データと半構造化データに対する効率の良いランダム アクセスと強力な一貫性を、列ファミリで整理されたスキーマなしのデータベースで実現します。HBase provides performant random access and strong consistency for large amounts of unstructured and semistructured data in a schemaless database organized by column families.

データはテーブルの行内に格納され、行内のデータは列ファミリによってグループ化されます。Data is stored in the rows of a table, and data within a row is grouped by column family. HBase は、列や列内に格納されるデータの型を使用前に定義する必要がないという意味で、スキーマレス データベースです。HBase is a schemaless database in the sense that neither the columns nor the type of data stored in them need to be defined before using them. オープン ソース コードは、直線的な拡張により何千ものノード上でペタバイト級のデータを扱うことができます。The open-source code scales linearly to handle petabytes of data on thousands of nodes. HBase は、Hadoop エコシステム内の分散アプリケーションの利点であるデータの冗長性やバッチ処理などの機能を利用できます。HBase can rely on data redundancy, batch processing, and other features that are provided by distributed applications in the Hadoop ecosystem.

HBase は、今後の分析のためにセンサー データとログ データを格納するための優れた宛先です。HBase is an excellent destination for sensor and log data for future analysis.

HBase のスケーラビリティは、HDInsight クラスター内のノードの数に依存します。HBase scalability is dependent on the number of nodes in the HDInsight cluster.

Azure SQL Database と Azure DatabaseAzure SQL Database and Azure Database

Azure では、サービスとしてのプラットフォーム (PAAS) として、次の 3 つの異なるリレーショナル データベースを用意しています。Azure offers three different relational databases as platform-as-a-service (PAAS).

これらの製品はスケールアップされます。つまり、 CPU とメモリの追加によってスケーリングされます。These products scale up, which means that they are scaled by adding more CPU and memory. I/O パフォーマンスを向上させるため、製品と共にプレミアム ディスクを使用することも選択できます。You can also choose to use premium disks with the products for better I/O performance.

Azure Analysis ServicesAzure Analysis Services

Azure Analysis Services (AAS) は、意思決定支援とビジネス分析で使用される分析データ エンジンであり、ビジネス レポート用の分析データ、Power BI、Excel、Reporting Services レポートなどのクライアント アプリケーション、およびその他の視覚化ツールを提供します。Azure Analysis Services (AAS) is an analytical data engine used in decision support and business analytics, providing the analytical data for business reports and client applications such as Power BI, Excel, Reporting Services reports, and other data visualization tools.

分析キューブは、個別のキューブの階層を変更することによって拡張できます。Analysis cubes can scale by changing tiers for each individual cube. 詳しくは、「Azure Analysis Services の価格」をご覧ください。For more information, see Azure Analysis Services Pricing.

抽出と読み込みExtract and Load

Azure 内にデータが存在すれば、多数のサービスを使用してデータを抽出し、他の製品に読み込むことができます。Once the data exists in Azure, you can use many services to extract and load it into other products. HDInsight では、Sqoop と Flume をサポートします。HDInsight supports Sqoop and Flume.

Apache SqoopApache Sqoop

Apache Sqoop は、構造化データ ソース、半構造化データ ソース、および非構造化データ ソース間でデータを効率的に転送するように設計されたツールです。Apache Sqoop is a tool designed for efficiently transferring data between structured, semi-structured, and unstructured data sources.

Sqoop では、MapReduce を使用してデータのインポートとエクスポートを実行し、並列操作とフォールト トレランスを提供しています。Sqoop uses MapReduce to import and export the data, to provide parallel operation and fault tolerance.

Apache FlumeApache Flume

Apache Flume は、大量のログ データを効率的に収集、集計、および移動するために使用できる信頼性の高い分散サービスです。Apache Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. Flume には、データ フローのストリーミングに基づくシンプルで柔軟性のあるアーキテクチャがあります。Flume has a simple and flexible architecture based on streaming data flows. Flume は、堅牢でフォールト トレラントであり、チューニング可能な信頼性メカニズムと多数のフェールオーバーと回復メカニズムを備えています。Flume is robust and fault-tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. Flume は、オンライン分析アプリケーションで使用できるシンプルな拡張可能データ モデルを使用しています。Flume uses a simple extensible data model that allows for online analytic application.

Apache Flume は、Azure HDInsight では使用できません。Apache Flume cannot be used with Azure HDInsight. オンプレミスの Hadoop インストールでは、Flume を使用して、Azure Storage Blob または Azure Data Lake Storage にデータを送信できます。An on-premises Hadoop installation can use Flume to send data to either Azure Storage Blobs or Azure Data Lake Storage. 詳細については、HDInsight での Apache Flume の使用に関する記事を参照してください。For more information, see Using Apache Flume with HDInsight.

変換Transform

選択した場所にデータが存在すれば、データのクリーニング、結合、または特定の使用パターンに合わせた準備を行う必要があります。Once data exists in the chosen location, you need to clean it, combine it, or prepare it for a specific usage pattern. Hive、Pig、および Spark SQL は、すべてがその種の作業を行うための適切な選択肢です。Hive, Pig, and Spark SQL are all good choices for that kind of work. それらは、すべて HDInsight でサポートされています。They are all supported on HDInsight.

次の手順Next steps