Azure HDInsight クラスターで Azure Storage を使用する
データは、Azure Blob Storage または Azure Data Lake Storage Gen2 に格納できます。 または、これらのオプションを組み合わせることができます。 いずれのストレージ オプションでも、計算に使用される HDInsight クラスターを安全に削除できます。このとき、ユーザー データは失われません。
Apache Hadoop は、既定のファイル システムの概念をサポートしています。 既定のファイル システムは、既定のスキームとオーソリティを意味します。 これは相対パスの解決に使用することもできます。 HDInsight クラスターの作成プロセス時に、既定のファイル システムとして Azure Storage 内の BLOB コンテナーを指定できます。 または、HDInsight 3.6 では、いくつかの例外を除き、Azure Blob Storage または Azure Data Lake Storage Gen2 のいずれかを既定のファイル システムとして選択できます。
この記事では、HDInsight クラスターでの Azure Storage の動作について説明します。
- HDInsight クラスターでの Data Lake Storage Gen2 の動作については、「Azure HDInsight クラスターで Azure Data Lake Storage Gen2 を使用する」を参照してください。
- HDInsight クラスターの作成について詳しくは、HDInsight での Apache Hadoop クラスターの作成に関するページを参照してください。
重要
ストレージ アカウントの種類 BlobStorage は、HDInsight クラスターのセカンダリ ストレージとしてのみ使用できます。
Storage アカウントの種類 | サポートされているサービス | サポートされているパフォーマンス レベル | サポートされていないパフォーマンス レベル | サポートされているアクセス層 |
---|---|---|---|---|
StorageV2 (汎用 v2) | BLOB | Standard | Premium | ホット、クール、アーカイブ * |
Storage (汎用 V1) | BLOB | Standard | Premium | 該当なし |
BlobStorage | BLOB | Standard | Premium | ホット、クール、アーカイブ * |
ビジネス データを格納するために既定の BLOB コンテナーを使用することはお勧めできません。 ストレージ コストを削減するために、既定の BLOB コンテナーの使用後、コンテナーを毎回削除することをお勧めします。 既定のコンテナーには、アプリケーション ログとシステム ログが格納されます。 コンテナーを削除する前に、ログを取り出してください。
1 つの BLOB コンテナーを複数のクラスターの既定のファイル システムとして共有することはサポートされていません。
注意
アーカイブ アクセス層はオフライン層であり、取得の際に数時間の待ち時間があるので、HDInsight での使用は推奨されません。 詳しくは、「アーカイブ アクセス層」をご覧ください。
クラスター内からファイルにアクセスする
Note
Azure Storage チームは WASB のすべての積極的な開発を中止し、すべてのお客様に ABFS ドライバーを使用して BLOB と ADLS gen2 を操作するようお勧めしています。 詳細については、「Azure BLOB ファイルシステム ドライバー (ABFS): Hadoop 専用の Azure Storage ドライバー」を参照してください。
完全修飾名の使用。 この方法により、アクセスするファイルへの完全パスを指定します。
wasb://<containername>@<accountname>.blob.core.windows.net/<file.path>/ wasbs://<containername>@<accountname>.blob.core.windows.net/<file.path>/
短縮されたパスの使用。 この方法により、クラスター ルートへのパスを次に置き換えます。
wasb:///<file.path>/ wasbs:///<file.path>/
相対パスの使用。 この方法により、アクセスするファイルへの相対パスのみを指定します。
/<file.path>/
データ アクセスの例
例は、クラスターのヘッド ノードへの ssh 接続に基づいています。 この例では、3 つの URI スキームがすべて使用されています。 CONTAINERNAME
と STORAGEACCOUNT
を関連する値に置き換えます。
いくつかの hdfs コマンド
ローカル ストレージにファイルを作成します。
touch testFile.txt
クラスター ストレージにディレクトリを作成します。
hdfs dfs -mkdir wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/ hdfs dfs -mkdir wasbs:///sampledata2/ hdfs dfs -mkdir /sampledata3/
ローカル ストレージからクラスター ストレージにデータをコピーします。
hdfs dfs -copyFromLocal testFile.txt wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/ hdfs dfs -copyFromLocal testFile.txt wasbs:///sampledata2/ hdfs dfs -copyFromLocal testFile.txt /sampledata3/
クラスター ストレージのディレクトリの内容を一覧表示します。
hdfs dfs -ls wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/ hdfs dfs -ls wasbs:///sampledata2/ hdfs dfs -ls /sampledata3/
注意
HDInsight の外部から BLOB を操作する場合、ほとんどのユーティリティで WASB 形式が認識されず、代わりに example/jars/hadoop-mapreduce-examples.jar
などの基本的なパス形式が要求されます。
Hive テーブルの作成
3 つのファイルの場所は説明目的で提示されています。 実際の実行では、LOCATION
エントリを 1 つだけ使用します。
DROP TABLE myTable;
CREATE EXTERNAL TABLE myTable (
t1 string,
t2 string,
t3 string,
t4 string,
t5 string,
t6 string,
t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE
LOCATION 'wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/example/data/';
LOCATION 'wasbs:///example/data/';
LOCATION '/example/data/';
クラスターの外側からファイルにアクセスする
Microsoft では、Azure Storage を操作する次のツールを提供しています。
ツール | Linux | OS X | Windows |
---|---|---|---|
Azure Portal | ✔ | ✔ | ✔ |
Azure CLI | ✔ | ✔ | ✔ |
Azure PowerShell | ✔ | ||
AzCopy | ✔ | ✔ |
Ambari からストレージ パスを特定する
構成済みの既定ストアへの完全パスを特定するには、
[HDFS]>[構成] の順に移動し、フィルター入力ボックスに「
fs.defaultFS
」と入力します。Wasb ストアがセカンダリ ストレージとして構成されているかどうかを確認するには、
[HDFS]>[構成] の順に移動し、フィルター入力ボックスに「
blob.core.windows.net
」と入力します。
Ambari REST API を使用してパスを取得する方法については、「 既定値のストレージの取得」をご参照ください。
BLOB コンテナー
BLOB を使用するには、まず、Azure ストレージ アカウントを作成します。 この手順の一環として、ストレージ アカウントを作成する Azure リージョンを指定します。 クラスターとストレージ アカウントは、同じリージョンに置く必要があります。 Hive メタストア SQL Server データベースと Apache Oozie メタストア SQL Server データベースは同じリージョンに配置する必要があります。
作成される各 BLOB は、どこにあるとしても、Azure ストレージ アカウント内のコンテナーに属します。 このコンテナーは、HDInsight の外部で作成された既存の BLOB であっても、 HDInsight クラスター用に作成されたコンテナーであってもかまいません。
既定の BLOB コンテナーには、ジョブ履歴やログなどのクラスター固有の情報が格納されます。 既定の BLOB コンテナーと複数の HDInsight クラスターを共有しないでください。 この操作により、ジョブ履歴が破損する場合があります。 各クラスターで別のコンテナーを使用することをお勧めします。 既定のストレージ アカウントではなく、関連するすべてのクラスターに指定された、リンクされているストレージ アカウントに共有データを格納します。 リンクされているストレージ アカウントの構成の詳細については、HDInsight クラスターの作成に関するページを参照してください。 ただし、元の HDInsight クラスターを削除した後でも既定のストレージ コンテナーを再利用できます。 HBase クラスターでは、削除された HBase クラスターで使用される既定の BLOB コンテナーを使用して、新しい HBase クラスターを作成することで、HBase テーブルのスキーマとデータを実際に保持できます。
注意
セキュリティで保護された転送を必要とする機能では、アカウントへのすべての要求が安全な接続を経由することが強制されます。 この機能は、HDInsight クラスター バージョン 3.6 以降でのみサポートされます。 詳しくは、「Azure HDInsight の安全な転送のストレージ アカウントで Apache Hadoop クラスターを作成する」をご覧ください。
追加ストレージ アカウントの使用
HDInsight クラスターを作成しているときに、そのクラスターに関連付ける Azure ストレージ アカウントを指定します。 また、作成プロセス時またはクラスターが作成された後に、同じ Azure サブスクリプションか別の Azure サブスクリプションに属するストレージ アカウントをさらに追加することもできます。 ストレージ アカウントをさらに追加する手順については、HDInsight クラスターの作成に関するページをご覧ください。
警告
HDInsight クラスター以外の場所での追加のストレージ アカウントの使用はサポートされていません。
次のステップ
この記事では、HDInsight で HDFS と互換性のある Azure Storage を使う方法について説明しました。 このストレージにより、収集したデータを長期にわたって格納できる適応性に優れたソリューションを構築できます。さらに HDInsight を使用すると、格納されている構造化データと非構造化データから有益な情報を得ることができます。
詳細については、次を参照してください。