Azure HDInsight クラスターで Azure Data Lake Storage Gen2 を使用する
Azure Data Lake Storage Gen2 は、ビッグ データ分析専用のクラウド ストレージ サービスで、Azure Blob Storage 上に構築されています。 その結果、このサービスでは、Azure Data Lake Storage に由来するファイル システム セマンティクス、ディレクトリ レベルとファイル レベルのセキュリティ、スケーラビリティなどの機能が提供されます。 さらに、Azure Blob Storage から、低コスト、階層型ストレージ、高可用性、ディザスター リカバリー機能を利用できます。
Data Lake Storage Gen2 を使用したクラスター作成オプションの詳細な比較については、「Azure HDInsight クラスターで使用するストレージ オプションを比較する」を参照してください。
警告
HDInsight クラスターの料金は、そのクラスターを使用しているかどうかに関係なく、分単位で課金されます。 使用後は、クラスターを必ず削除してください。 「HDInsight クラスターを削除する方法」をご覧ください。
Data Lake Storage Gen2 の可用性
Data Lake Storage Gen2 は、ほぼすべての Azure HDInsight クラスターの種類のストレージ オプションとして、既定のストレージ アカウントと追加のストレージ アカウントの両方で使用できます。 ただし、HBase では、Data Lake Storage Gen2 のアカウントを 1 つだけ持つことができます。
注意
プライマリ ストレージの種類として Data Lake Storage Gen2 を選択すると、追加のストレージとして Data Lake Storage Gen1 を選択できなくなります。
Data Lake Storage Gen2 で HDInsight クラスターを作成する
Data Lake Storage Gen2 にアクセスできる HDInsight クラスターを作成する方法の詳しい手順については、以下のリンクを参照してください。
- ポータルの使用
- Azure CLI の使用
- Azure Data Lake Storage Gen2 を使用する HDInsight クラスターを作成するための PowerShell の使用は、現在サポートされていません。
HDInsight での Data Lake Storage Gen2 のアクセス制御
Data Lake Storage Gen2 をサポートするアクセス許可の種類
Data Lake Storage Gen2 では、Azure ロールベースのアクセス制御 (Azure RBAC) と POSIX のようなアクセス制御リスト (ACL) の両方をサポートするアクセス制御モデルが使用されています。
Azure RBAC では、ロールの割り当てを使用して、Azure リソースのユーザー、グループ、サービス プリンシパルにアクセス許可のセットを効果的に適用します。 通常、これらの Azure リソースは、最上位のリソース (例: Azure Blob Storage アカウント) に制約されます。 Azure Blob Storage と Data Lake Storage Gen2 では、このメカニズムがファイル システムのリソースにまで拡張されています。
Azure RBAC を使用したファイルのアクセス許可の詳細については、「Azure のロールベースのアクセス制御 (Azure RBAC)」を参照してください。
ACL を使用したファイルのアクセス許可の詳細については、「ファイルとディレクトリのアクセス制御リスト」を参照してください。
Data Lake Storage Gen2 で自分のデータへのアクセスを制御する方法
Data Lake Storage Gen2 で HDInsight クラスターがファイルにアクセスする機能は、マネージド ID によって制御されます。 マネージド ID とは、資格情報が Azure によって管理されている Microsoft Entra に登録されている ID です。 マネージド ID を使用すると、Microsoft Entra ID 内でサービス プリンシパルを登録する必要はありません。 または、証明書などの資格情報を保持します。
Azure サービスには、システム割り当てとユーザー割り当ての 2 種類のマネージド ID があります。 HDInsight は、ユーザー割り当てマネージド ID を使用して Data Lake Storage Gen2 にアクセスします。 user-assigned managed identity
はスタンドアロンの Azure リソースとして作成されます。 作成プロセスで、使用されているサブスクリプションによって信頼されている Microsoft Entra テナントに、Azure が ID を作成します。 作成された ID は、1 つまたは複数の Azure サービス インスタンスに割り当てることができます。
ユーザー割り当て ID のライフサイクルは、その ID が割り当てられている Azure サービス インスタンスのライフサイクルとは個別に管理されます。 マネージド ID の詳細については、「Azure リソースのマネージド ID とは」を参照してください。
Hive またはその他のサービスを使用して Data Lake Storage Gen2 でデータをクエリするためのアクセス許可を Microsoft Entra ユーザーに設定するにはどうすればよいですか。
データをクエリするためのアクセス許可をユーザーに設定するには、ACL で割り当て済みのプリンシパルとして Microsoft Entra セキュリティ グループを使用します。 個々のユーザーまたはサービス プリンシパルにファイルのアクセス許可を直接割り当てないでください。 アクセス許可のフローを制御する Microsoft Entra セキュリティ グループを使用すると、ACL をディレクトリ構造全体に再適用することなく、ユーザーまたはサービス プリンシパルを追加および削除できます。 適切な Microsoft Entra セキュリティ グループからユーザーまたはサービス プリンシパルを追加または削除するだけです。 ACL は継承されないため、ACL を再適用するには、すべてのファイルとサブディレクトリで ACL を更新する必要があります。
クラスターからファイルにアクセスする
複数の方法で、HDInsight クラスターから Data Lake Storage Gen2 のファイルにアクセスできます。
完全修飾名の使用。 この方法により、アクセスするファイルへの完全パスを指定します。
abfs://<containername>@<accountname>.dfs.core.windows.net/<file.path>/
短縮されたパスの使用。 この方法により、クラスター ルートへのパスを次に置き換えます。
abfs:///<file.path>/
相対パスの使用。 この方法により、アクセスするファイルへの相対パスのみを指定します。
/<file.path>/
データ アクセスの例
例は、クラスターのヘッド ノードへの ssh 接続に基づいています。 この例では、3 つの URI スキームがすべて使用されています。 CONTAINERNAME
と STORAGEACCOUNT
を関連する値に置き換えます。
いくつかの hdfs コマンド
ローカル ストレージにファイルを作成します。
touch testFile.txt
クラスター ストレージにディレクトリを作成します。
hdfs dfs -mkdir abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/ hdfs dfs -mkdir abfs:///sampledata2/ hdfs dfs -mkdir /sampledata3/
ローカル ストレージからクラスター ストレージにデータをコピーします。
hdfs dfs -copyFromLocal testFile.txt abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/ hdfs dfs -copyFromLocal testFile.txt abfs:///sampledata2/ hdfs dfs -copyFromLocal testFile.txt /sampledata3/
クラスター ストレージのディレクトリの内容を一覧表示します。
hdfs dfs -ls abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/ hdfs dfs -ls abfs:///sampledata2/ hdfs dfs -ls /sampledata3/
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 'abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/example/data/';
LOCATION 'abfs:///example/data/';
LOCATION '/example/data/';