Azure HDInsight クラスターで Azure Storage を使用するUse Azure storage with Azure HDInsight clusters

HDInsight クラスターでデータを分析するには、そのデータを Azure StorageAzure Data Lake Storage Gen 1/Azure Data Lake Storage Gen 2 のいずれか、またはその組み合わせに格納できます。To analyze data in HDInsight cluster, you can store the data either in Azure Storage, Azure Data Lake Storage Gen 1/Azure Data Lake Storage Gen 2, or a combination. いずれのストレージ オプションでも、計算に使用される HDInsight クラスターを安全に削除できます。このとき、ユーザー データは失われません。These storage options enable you to safely delete HDInsight clusters that are used for computation without losing user data.

Apache Hadoop は、既定のファイル システムの概念をサポートしています。Apache Hadoop supports a notion of the default file system. 既定のファイル システムは、既定のスキームとオーソリティを意味します。The default file system implies a default scheme and authority. これは相対パスの解決に使用することもできます。It can also be used to resolve relative paths. HDInsight クラスターの作成プロセス中に、Azure Storage 内の BLOB コンテナーを既定のファイル システムとして指定できます。または、HDInsight 3.6 では、Azure Storage または Azure Data Lake Storage Gen 1/Azure Data Lake Store Gen 2 のどちらかを既定のファイル システムとして選択できます (いくつかの例外があります)。During the HDInsight cluster creation process, you can specify a blob container in Azure Storage as the default file system, or with HDInsight 3.6, you can select either Azure Storage or Azure Data Lake Storage Gen 1/ Azure Data Lake Storage Gen 2 as the default files system with a few exceptions. Data Lake Storage Gen 1 を既定のストレージとリンクされたストレージの両方として使用することのサポート可能性については、「 HDInsight クラスターの利用可能性」を参照してください。For the supportability of using Data Lake Storage Gen 1 as both the default and linked storage, see Availability for HDInsight cluster.

この記事では、HDInsight クラスターでの Azure Storage の動作について説明します。In this article, you learn how Azure Storage works with HDInsight clusters. HDInsight クラスターでの Data Lake Storage Gen 1 の動作については、「Azure HDInsight クラスターで Azure Data Lake Storage を使用する」を参照してください。To learn how Data Lake Storage Gen 1 works with HDInsight clusters, see Use Azure Data Lake Storage with Azure HDInsight clusters. HDInsight クラスターの作成について詳しくは、HDInsight での Apache Hadoop クラスターの作成に関するページを参照してください。For more information about creating an HDInsight cluster, see Create Apache Hadoop clusters in HDInsight.

Azure Storage は、堅牢な汎用ストレージ ソリューションであり、HDInsight とシームレスに統合されます。Azure storage is a robust, general-purpose storage solution that integrates seamlessly with HDInsight. HDInsight は、クラスターの既定のファイル システムとして Azure Storage 内の BLOB コンテナーを使用できます。HDInsight can use a blob container in Azure Storage as the default file system for the cluster. HDInsight のすべてのコンポーネントは、Hadoop 分散ファイル システム (HDFS) のインターフェイスを利用して、BLOB として格納された構造化データまたは非構造化データを直接操作できます。Through a Hadoop distributed file system (HDFS) interface, the full set of components in HDInsight can operate directly on structured or unstructured data stored as blobs.

警告

ストレージ アカウントの種類 BlobStorage は、HDInsight クラスターのセカンダリ ストレージとしてのみ使用できます。Storage account kind BlobStorage can only be used as secondary storage for HDInsight clusters.

Storage アカウントの種類Storage account kind サポートされているサービスSupported services サポートされているパフォーマンス レベルSupported performance tiers サポートされているアクセス層Supported access tiers
StorageV2 (汎用 v2)StorageV2 (general-purpose v2) BlobBlob StandardStandard ホット、クール、アーカイブ*Hot, Cool, Archive*
Storage (汎用 V1)Storage (general-purpose v1) BlobBlob StandardStandard 該当なしN/A
BlobStorageBlobStorage BlobBlob StandardStandard ホット、クール、アーカイブ*Hot, Cool, Archive*

ビジネス データの格納には、既定の BLOB コンテナーを使用しないことをお勧めします。We do not recommend that you use the default blob container for storing business data. ストレージ コストを削減するために、既定の BLOB コンテナーの使用後、コンテナーを毎回削除することをお勧めします。Deleting the default blob container after each use to reduce storage cost is a good practice. 既定のコンテナーには、アプリケーション ログとシステム ログが格納されます。The default container contains application and system logs. コンテナーを削除する前に、ログを取り出してください。Make sure to retrieve the logs before deleting the container.

1 つの BLOB コンテナーを複数のクラスターの既定のファイル システムとして共有することはサポートされていません。Sharing one blob container as the default file system for multiple clusters is not supported.

注意

アーカイブ アクセス層はオフライン層であり、取得の際に数時間の待ち時間があるので、HDInsight での使用は推奨されません。The Archive access tier is an offline tier that has a several hour retrieval latency and is not recommended for use with HDInsight. 詳しくは、「アーカイブ アクセス層」をご覧ください。For more information, see Archive access tier.

[選択されたネットワーク][ファイアウォールと仮想ネットワーク] に関する制限を使用してストレージ アカウントをセキュリティで保護する場合、 [信頼された Microsoft サービスによる ... を許可します] の例外を有効にして、HDInsight ストレージ アカウントにアクセスできるようにしてください。If you choose to secure your storage account with the Firewalls and virtual networks restrictions on Selected networks, be sure to enable the exception Allow trusted Microsoft services... so that HDInsight can access your storage account.

HDInsight のストレージ アーキテクチャHDInsight storage architecture

次の図は、Azure Storage を使う HDInsight のストレージ アーキテクチャを示しています。The following diagram provides an abstract view of the HDInsight storage architecture of using Azure Storage:

Hadoop クラスターは、HDFS API を使用して、BLOB ストレージの構造化データおよび非構造化データへのアクセスと保存を実行します。Hadoop clusters use the HDFS API to access and store structured and unstructured data in Blob storage.

HDInsight では、それぞれのコンピューティング ノードにローカルに割り当てられている分散ファイル システムにアクセスします。HDInsight provides access to the distributed file system that is locally attached to the compute nodes. このファイル システムには、完全修飾 URI を使用してアクセスできます。次に例を示します。This file system can be accessed by using the fully qualified URI, for example:

hdfs://<namenodehost>/<path>

さらに、HDInsight では、Azure Storage に格納されたデータにアクセスすることもできます。In addition, HDInsight allows you to access data that is stored in Azure Storage. の構文は次のとおりです。The syntax is:

wasb://<containername>@<accountname>.blob.core.windows.net/<path>

HDInsight クラスターで Azure ストレージ アカウントを使用するときの考慮事項を次に示します。Here are some considerations when using Azure Storage account with HDInsight clusters.

  • クラスターに接続されているストレージ アカウント内のコンテナー: アカウントの名前とキーは作成中にクラスターと関連付けられるため、これらのコンテナー内の BLOB に対するフル アクセス許可が与えられます。Containers in the storage accounts that are connected to a cluster: Because the account name and key are associated with the cluster during creation, you have full access to the blobs in those containers.

  • クラスターに接続されていないストレージ アカウント内のパブリック コンテナーまたはパブリック BLOB: コンテナー内の BLOB に対する読み取り専用のアクセス許可が与えられます。Public containers or public blobs in storage accounts that are NOT connected to a cluster: You have read-only permission to the blobs in the containers.

注意

パブリック コンテナーの場合、そのコンテナー内に配置されているすべての BLOB のリストとコンテナー メタデータを取得できます。Public containers allow you to get a list of all blobs that are available in that container and get container metadata. パブリック BLOB の場合、正確な URL がわかっているときのみ、その BLOB にアクセスできます。Public blobs allow you to access the blobs only if you know the exact URL. 詳細については、コンテナーと BLOB に対するアクセスの管理に関するページを参照してください。For more information, see Manage access to containers and blobs.

  • クラスターに接続されていないストレージ アカウント内のプライベート コンテナー: WebHCat ジョブを送信するときにストレージ アカウントを定義しない限り、コンテナー内の BLOB にはアクセスできません。Private containers in storage accounts that are NOT connected to a cluster: You can't access the blobs in the containers unless you define the storage account when you submit WebHCat jobs. 詳しくは、この記事の後半で説明します。This is explained later in this article.

作成プロセスで定義されたストレージ アカウントとそれぞれのキーは、クラスター ノードの %HADOOP_HOME%/conf/core-site.xml に格納されます。The storage accounts that are defined in the creation process and their keys are stored in %HADOOP_HOME%/conf/core-site.xml on the cluster nodes. HDInsight の既定の動作では、core-site.xml ファイルに定義されたストレージ アカウントが使用されます。The default behavior of HDInsight is to use the storage accounts defined in the core-site.xml file. この設定は、Apache Ambari を使用して変更できます。You can modify this setting using Apache Ambari.

Apache Hive、MapReduce、Apache Hadoop ストリーミング、Apache Pig など、複数の WebHCat ジョブを利用して、ストレージ アカウントの説明とそのメタデータを伝達できます。Multiple WebHCat jobs, including Apache Hive, MapReduce, Apache Hadoop streaming, and Apache Pig, can carry a description of storage accounts and metadata with them. (現在、ストレージ アカウントについては Pig が対応していますが、メタデータについては対応していません)。詳細については、「 Using an HDInsight Cluster with Alternate Storage Accounts and Metastores (代替のストレージ アカウントおよびメタストアでの HDInsight クラスターの使用)」を参照してください。(This currently works for Pig with storage accounts, but not for metadata.) For more information, see Using an HDInsight Cluster with Alternate Storage Accounts and Metastores.

BLOB は、構造化データと非構造化データに使用できます。Blobs can be used for structured and unstructured data. BLOB コンテナーには、"キーと値のペア" としてデータが格納されます。ディレクトリ階層はありません。Blob containers store data as key/value pairs, and there is no directory hierarchy. ただし、キー名でスラッシュ (/) を使用すれば、ファイルがディレクトリ階層に保存されているように見せかけることができます。However the slash character ( / ) can be used within the key name to make it appear as if a file is stored within a directory structure. たとえば、BLOB のキー名を「 input/log1.txt」とします。For example, a blob's key may be input/log1.txt. この場合、input ディレクトリは実際に存在しませんが、キー名でスラッシュが使用されているのでファイル パスのように見えます。No actual input directory exists, but due to the presence of the slash character in the key name, it has the appearance of a file path.

Azure Storage の利点Benefits of Azure Storage

コンピューティング クラスターとストレージ リソースを同じ場所で併置しないとなるとパフォーマンスの低下が懸念されますが、これは、Azure リージョン内のストレージ アカウント リソースの近くにコンピューティング クラスターを作成することで軽減されます。高速ネットワークが整備されているので、コンピューティング ノードは Azure Storage 内のデータに効率的にアクセスできます。The implied performance cost of not colocating compute clusters and storage resources is mitigated by the way the compute clusters are created close to the storage account resources inside the Azure region, where the high-speed network makes it efficient for the compute nodes to access the data inside Azure storage.

HDFS ではなく、Azure Storage にデータを格納することにはいくつかの利点があります。There are several benefits associated with storing the data in Azure storage instead of HDFS:

  • データの再使用と共有: HDFS のデータはコンピューティング クラスター内に配置されます。Data reuse and sharing: The data in HDFS is located inside the compute cluster. HDFS API を使用してデータを操作できるのは、コンピューティング クラスターへのアクセスが許可されているアプリケーションだけです。Only the applications that have access to the compute cluster can use the data by using HDFS APIs. Azure ストレージ内のデータには、HDFS API または Blob Storage REST API のどちらかを使用してアクセスできます。The data in Azure storage can be accessed either through the HDFS APIs or through the Blob Storage REST APIs. したがって、さまざまなアプリケーション (その他の HDInsight クラスターを含む) やツールを使用してデータの生成と利用ができます。Thus, a larger set of applications (including other HDInsight clusters) and tools can be used to produce and consume the data.

  • データのアーカイブ: Azure Storage にデータを格納した場合、計算で使用する HDInsight クラスターを削除してもユーザー データは失われません。Data archiving: Storing data in Azure storage enables the HDInsight clusters used for computation to be safely deleted without losing user data.

  • データ ストレージ コスト: コンピューティング クラスターは Azure Storage よりコストがかかるため、DFS に長期間データを格納すると、Azure Storage にデータを格納した場合よりコストが高くなります。Data storage cost: Storing data in DFS for the long term is more costly than storing the data in Azure storage because the cost of a compute cluster is higher than the cost of Azure storage. さらに、コンピューティング クラスターを生成するたびにデータを読み込む必要がないので、データの読み込みコストも節約できます。In addition, because the data does not have to be reloaded for every compute cluster generation, you are also saving data loading costs.

  • 柔軟なスケールアウト: HDFS は大規模なファイル システムを提供しますが、規模を拡張するにはクラスターに対して作成するノードの数を増やさなければならないので、作業が複雑になります。Elastic scale-out: Although HDFS provides you with a scaled-out file system, the scale is determined by the number of nodes that you create for your cluster. 一方、Azure Storage には柔軟なスケール機能がもともと備わっています。Changing the scale can become a more complicated process than relying on the elastic scaling capabilities that you get automatically in Azure storage.

  • geo レプリケーション: Azure Storage は、別の拠点に geo レプリケートできます。Geo-replication: Your Azure storage can be geo-replicated. 災害発生時には別の拠点でデータを回復でき、データの冗長性が高まりますが、geo レプリケートした別拠点へのフェールオーバーはパフォーマンスに大きな影響を与え、追加コストが発生する可能性もあります。Although this gives you geographic recovery and data redundancy, a failover to the geo-replicated location severely impacts your performance, and it may incur additional costs. geo レプリケーションを利用するときは、追加コストがかかっても保護する価値のあるデータかどうかを十分に考慮してください。So our recommendation is to choose the geo-replication wisely and only if the value of the data is worth the additional cost.

MapReduce の一部のジョブやパッケージでは中間結果が生成されますが、Azure Storage には保存したくない場合もあります。Certain MapReduce jobs and packages may create intermediate results that you don't really want to store in Azure storage. このような場合、中間結果データをローカルの HDFS に保存できます。In that case, you can elect to store the data in the local HDFS. 実際、HDInsight では、Hive ジョブやその他のプロセスで生成される中間結果の一部が DFS に格納されます。In fact, HDInsight uses DFS for several of these intermediate results in Hive jobs and other processes.

注意

ほとんどの HDFS コマンド (lscopyFromLocalmkdir など) は通常と同じように機能します。Most HDFS commands (for example, ls, copyFromLocal and mkdir) still work as expected. ただし、fschkdfsadmin など、HDFS ネイティブ実装 (DFS) に固有のコマンドについては、Azure Storage 上で実行した場合に動作が異なります。Only the commands that are specific to the native HDFS implementation (which is referred to as DFS), such as fschk and dfsadmin, show different behavior in Azure storage.

Azure Storage 内のファイルの指定Address files in Azure storage

HDInsight から Azure Storage 内のファイルにアクセスするための URI スキームは次のとおりです。The URI scheme for accessing files in Azure storage from HDInsight is:

wasb://<BlobStorageContainerName>@<StorageAccountName>.blob.core.windows.net/<path>

この URI スキームは、暗号化なしのアクセス (wasb: プレフィックス) と SSL で暗号化されたアクセス (wasbs) に対応しています。The URI scheme provides unencrypted access (with the wasb: prefix) and SSL encrypted access (with wasbs). 同じ Azure リージョン内のデータにアクセスする場合でも、できる限り wasbs を使用することをお勧めします。We recommend using wasbs wherever possible, even when accessing data that lives inside the same region in Azure.

<BlobStorageContainerName> では、Azure Storage 内の BLOB コンテナーの名前を指定します。The <BlobStorageContainerName> identifies the name of the blob container in Azure storage. <StorageAccountName>には、Azure Storage アカウント名を指定します。The <StorageAccountName> identifies the Azure Storage account name. 完全修飾ドメイン名 (FQDN) を指定する必要があります。A fully qualified domain name (FQDN) is required.

<BlobStorageContainerName><StorageAccountName> のいずれの値も指定されていない場合、既定のファイルシステムが使用されます。If neither <BlobStorageContainerName> nor <StorageAccountName> has been specified, the default file system is used. 既定のファイル システム上にあるファイルに関しては、相対パスか絶対パスを使用できます。For the files on the default file system, you can use a relative path or an absolute path. たとえば、HDInsight クラスターに付属している hadoop-mapreduce-examples.jar ファイルは、次のどちらかを使用して確認できます。For example, the hadoop-mapreduce-examples.jar file that comes with HDInsight clusters can be referred to by using one of the following:

wasb://mycontainer@myaccount.blob.core.windows.net/example/jars/hadoop-mapreduce-examples.jar
wasb:///example/jars/hadoop-mapreduce-examples.jar
/example/jars/hadoop-mapreduce-examples.jar

注意

HDInsight バージョン 2.1 クラスターと 1.6 クラスターでは、ファイル名は hadoop-examples.jar です。The file name is hadoop-examples.jar in HDInsight versions 2.1 and 1.6 clusters.

PATH は、ファイルまたはディレクトリの HDFS パス名です。The path is the file or directory HDFS path name. Azure Storage のコンテナーにはキーと値のペアが格納されるため、階層ファイル システムは存在しません。Because containers in Azure storage are key-value stores, there is no true hierarchical file system. ただし、BLOB キー内でスラッシュ (/) を使用すると、ディレクトリの区切りと見なされます。A slash character ( / ) inside a blob key is interpreted as a directory separator. たとえば、 hadoop-mapreduce-examples.jar に対応する BLOB 名は、次のとおりです。For example, the blob name for hadoop-mapreduce-examples.jar is:

example/jars/hadoop-mapreduce-examples.jar

注意

HDInsight の外部から BLOB を操作する場合、ほとんどのユーティリティで WASB 形式が認識されず、代わりに example/jars/hadoop-mapreduce-examples.jar などの基本的なパス形式が要求されます。When working with blobs outside of HDInsight, most utilities do not recognize the WASB format and instead expect a basic path format, such as example/jars/hadoop-mapreduce-examples.jar.

BLOB コンテナーBlob containers

BLOB を使用するには、まず、Azure ストレージ アカウントを作成します。To use blobs, you first create an Azure Storage account. その一環として、ストレージ アカウントを作成する Azure リージョンを指定します。As part of this, you specify an Azure region where the storage account is created. クラスターとストレージ アカウントは、同じリージョンに置く必要があります。The cluster and the storage account must be hosted in the same region. Hive メタストア SQL Server データベースと Apache Oozie メタストア SQL Server データベースも、同じリージョンに配置する必要があります。The Hive metastore SQL Server database and Apache Oozie metastore SQL Server database must also be located in the same region.

作成される各 BLOB は、どこにあるとしても、Azure ストレージ アカウント内のコンテナーに属します。Wherever it lives, each blob you create belongs to a container in your Azure Storage account. このコンテナーは、HDInsight の外部で作成された既存の BLOB ストレージ コンテナーか、HDInsight クラスター用に作成されたコンテナーであってもかまいません。This container may be an existing blob that was created outside of HDInsight, or it may be a container that is created for an HDInsight cluster.

既定の BLOB コンテナーには、ジョブ履歴やログなどのクラスター固有の情報が格納されます。The default Blob container stores cluster-specific information such as job history and logs. 既定の BLOB コンテナーと複数の HDInsight クラスターを共有しないでください。Don't share a default Blob container with multiple HDInsight clusters. ジョブ履歴が破損する場合があります。This might corrupt job history. 各クラスターで別のコンテナーを使用し、既定のストレージ アカウントではなく、関連するすべてのクラスターのデプロイメントで指定された、リンクされているストレージ アカウントに共有データを格納することをお勧めします。It is recommended to use a different container for each cluster and put shared data on a linked storage account specified in deployment of all relevant clusters rather than the default storage account. リンクされているストレージ アカウントの構成の詳細については、HDInsight クラスターの作成に関するページを参照してください。For more information on configuring linked storage accounts, see Create HDInsight clusters. ただし、元の HDInsight クラスターを削除した後でも既定のストレージ コンテナーを再利用できます。However you can reuse a default storage container after the original HDInsight cluster has been deleted. HBase クラスターでは、削除された HBase クラスターで使用される既定の BLOB コンテナーを使用して、新しい HBase クラスターを作成することで、HBase テーブルのスキーマとデータを実際に保持できます。For HBase clusters, you can actually retain the HBase table schema and data by creating a new HBase cluster using the default blob container that is used by an HBase cluster that has been deleted.

注意

セキュリティで保護された転送を必要とする機能では、アカウントへのすべての要求が安全な接続を経由することが強制されます。The feature that requires secure transfer enforces all requests to your account through a secure connection. この機能は、HDInsight クラスター バージョン 3.6 以降でのみサポートされます。Only HDInsight cluster version 3.6 or newer supports this feature. 詳しくは、「Azure HDInsight の安全な転送のストレージ アカウントで Apache Hadoop クラスターを作成する」をご覧ください。For more information, see Create Apache Hadoop cluster with secure transfer storage accounts in Azure HDInsight.

Azure マシンとの対話Interacting with Azure storage

Microsoft では、Azure Storage を操作する次のツールを提供しています。Microsoft provides the following tools to work with Azure Storage:

ツールTool LinuxLinux OS XOS X WindowsWindows
Azure PortalAzure portal
Azure CLIAzure CLI
Azure PowerShellAzure PowerShell
AzCopyAzCopy

追加ストレージ アカウントの使用Use additional storage accounts

HDInsight クラスターを作成しているときに、そのクラスターに関連付ける Azure ストレージ アカウントを指定します。While creating an HDInsight cluster, you specify the Azure Storage account you want to associate with it. 作成プロセス時またはクラスターが作成された後に、このストレージ アカウントに加えて、同じ Azure サブスクリプションか、別の Azure サブスクリプションに属するストレージ アカウントをさらに追加することもできます。In addition to this storage account, you can add additional storage accounts from the same Azure subscription or different Azure subscriptions during the creation process or after a cluster has been created. ストレージ アカウントをさらに追加する手順については、HDInsight クラスターの作成に関するページをご覧ください。For instructions about adding additional storage accounts, see Create HDInsight clusters.

警告

HDInsight クラスター以外の場所で追加のストレージ アカウントを使用することはできません。Using an additional storage account in a different location than the HDInsight cluster is not supported.

次の手順Next steps

この記事では、HDInsight で HDFS と互換性のある Azure Storage を使う方法について説明しました。In this article, you learned how to use HDFS-compatible Azure storage with HDInsight. これにより、収集したデータを長期にわたって格納できるスケーラブルなソリューションを構築できます。さらに HDInsight を使用すると、格納されている構造化データと非構造化データから有益な情報を得ることができます。This allows you to build scalable, long-term, archiving data acquisition solutions and use HDInsight to unlock the information inside the stored structured and unstructured data.

詳細については、次を参照してください。For more information, see: