Azure HDInsight と Azure ストレージ


このポストは、3 月 21 日に投稿された Azure HDInsight and Azure Storage の翻訳です。

前回のブログ記事では、Windows Azure 上の HDInsight サービスの更新内容を概説しました。HDInsight シリーズ (全 5 回) の第 3 回として、今回の記事では HDInsight と Azure ストレージに注目します。

Windows Azure 上の HDInsight サービスの中で、他にはない、関心の高い機能の 1 つとして、データを保存する場所を選択できるという機能があります。計算ノードのローカルにあるネイティブ HDFS ファイル システムにデータを保管できるだけでなく、Azure BLOB ストア コンテナーを、データを保管する HDFS ファイル システムとして使用することができます。実際、HDInsight クラスターをプロビジョニングするときに既定の設定では、Azure BLOB ストア コンテナーが既定の HDFS ファイル システムとしてストレージ アカウントに作成されます。

また、カスタム作成オプションを使ってクラスターを作成すれば、既存の Azure BLOB ストア コンテナーを既定の HDFS ファイル システムとして選択することもできます。たとえば、次のスクリーンショットでは、「netflix」という名前の BLOB ストア コンテナーを既定のファイル システムとして指定しています。

指定するコンテナーは、HDInsight HDFS ファイル システムとして事前にプロビジョニングしておく場合もありますが、分析したいデータを保管している任意の Azure BLOB ストア コンテナーをその場で選択することもできます。

この例では、netflix コンテナーには、以下のようにフォルダーの命名規則を使用する 3 つの BLOB が格納されています。

Azure ストレージ コンテナーを使用するメリット

ストレージ コンテナーは計算ノードにとってローカルではないので、計算処理と記憶域を同一の場所に配置するという Hadoop の規範に反するように見えますが、データを Azure BLOB ストア コンテナーに保存することにはいくつかのメリットがあります。

- データの再利用と共有: 計算ノード内のデータは、HDFS API の背後に "ロック" されます。つまり、HDFS を認識し、計算クラスターへのアクセスを持つアプリケーションのみがデータを使用できるということです。Azure ストレージ コンテナー内のデータは、HDFS API と Azure BLOB ストア REST API のどちらからでもアクセス可能です。したがって、より多くのアプリケーションやツールでデータを生成し、使用することができます。また、さまざまなアプリケーションでデータを生成し、別のアプリケーションでそのデータを使用することもできます。

- データの保持: 計算ノード内のデータは HDInsight クラスターがプロビジョニングされている期間のみ有効なので、計算終了後もクラスターを有効なままにしておくか、計算を実行するクラスターをプロビジョニングするたびにデータを再読み込みする必要があります。Azure ストレージ コンテナーでは、必要な期間データを保管し続けることができます。

- データ ストレージのコスト: 有効な HDInsight クラスターの中に長期間データを保管しようとすると、Azure ストレージ コンテナーにデータを保管する場合よりも大幅にコストがかかります。計算クラスターのコストは、Azure BLOB ストア コンテナーのコストよりも割高だからです。また、計算クラスターを生成するたびにデータを読み込み直す必要がないので、データの読み込みにかかるコストも削減できます。

- 柔軟なスケールアウト: HDInsight クラスターはスケールアウトされたファイル システムを提供しますが、スケールアウトの規模はクラスター用にプロビジョニングするノードの個数によって決まります。このような場合、規模の変更は複雑な処理になります。Azure ストレージ コンテナーを使用すれば、Azure BLOB ストアの柔軟なスケーリング機能が自動的に適用されるので複雑さは軽減されます。

- ジオレプリケーション: Azure BLOB ストア コンテナーは Azure ポータルを通じてジオレプリケーションがサポートされます。この機能により、離れた場所での復旧やデータの冗長性を実現できます。ただし、ジオレプリケーション先へのフェールオーバーはパフォーマンスに大きな影響を及ぼします。また、コストが増大する可能性もあります。このため、ジオレプリケーションを行うかどうかは慎重に判断することをお勧めします。データにコストの増大に見合うだけの価値がある場合のみ検討してください。また、計算処理と記憶域を同一の場所に配置しないことによるパフォーマンスへの影響はある程度避けられませんが、実際の影響は、Azure データセンター内で計算クラスターがストレージ アカウント リソースの近くにプロビジョニングされることにより軽減されます。Azure データセンターでは、高速ネットワークを通じて計算ノードが ASV 内のデータに効率的にアクセスできます。一般的な負荷、計算処理、アクセスのパターンでは、これまでわずかなパフォーマンス低下しか確認されていません。多くの場合はより速いアクセスが実現されています。さらに、HDInsight クラスターをプロビジョニングするたびにファイル システムにデータを読み込む必要はないという点も忘れないでください。データを読み込む時間は必要なく、データの移動にかかる料金も発生しません。

Azure ストレージの使用方法

上記で既定のファイル システムとして指定した Azure BLOB ストア コンテナーを使用して、簡単な例を紹介します。ファイル システムのコンテンツは JavaScript コンソールから標準の HDFS ファイル システム コマンドを使って確認できます。 

追加のディレクトリが数個作成されていますが、このファイル システムは他の HDFS ファイル システムと同様です。もちろん、Azure BLOB ストア コンテナーのアドレスを指定するために設計されている明示的な URI スキーマを使ってアドレスを指定することもできます。 

上記のように SSL ありの asvs スキーマを任意で使用できます。SSL なしの場合は、「#lsr asv://netflix@mryshadoop.blob.core.windows.net/movie」のようにコマンドを指定します。ディレクトリの作成日付は、BLOB の名前からわかるだけであり、現在は 1970-01-01 00:00 と表示されています。これは、今後変更されるでしょう。

これで、Hive テーブルを作成して Hive クエリを実行したり、他の Mapreduce ジョブをデータに対して実行したりすることができます。

詳細情報

このブログでは、Azure BLOB ストレージと HDInsight の使用方法、およびこれらを使用することによるメリットを少しだけ紹介しました。より詳しいチュートリアルを、この後、間もなく提供する予定です。HDInsight についての詳しい情報は、入門ページ (英語) を参照してください。

HDInsight が皆さまにとって価値ある新サービスとなることを期待しています。またフィードバックもお待ちしております。

このシリーズ (全 5 回) の次回は、HDInsight の開発者エクスペリエンスを取り上げます。引き続きご注目ください。

Comments (0)

Skip to main content