OSS-HDFS(JindoFS)は、キャッシュベースのアクセラレーションとRanger認証をサポートするストレージサービスです。 OSS-HDFSは、次のバージョンのクラスターで使用できます。E-MapReduce(EMR) V3.42以降のマイナーバージョン、およびEMR V5.8.0以降のマイナーバージョン。 OSS-HDFSをバックエンドストレージとして使用するクラスターは、ビッグデータの抽出、変換、ロード(ETL)シナリオでより優れたパフォーマンスを提供し、HDFSからOSS-HDFSへのスムーズなデータ移行を可能にします。 このトピックでは、EMR HiveまたはSparkでOSS-HDFSを使用する方法について説明します。
背景情報
OSS-HDFSは、クラウドネイティブのデータレイクストレージサービスです。 OSS-HDFSは、統合されたメタデータ管理機能を提供し、HDFS APIと完全に互換性があります。 OSS-HDFSは、Portable Operating System Interface(POSIX)もサポートしています。 OSS-HDFSを使用すると、ビッグデータおよびAI分野のさまざまなデータレイクベースのコンピューティングシナリオでデータを管理できます。 詳細については、「OSS-HDFSとは」をご参照ください。
前提条件
EMRクラスターが作成されていること。 詳細については、「クラスターの作成」をご参照ください。
手順
手順 1:OSS-HDFSを有効にする
OSS-HDFSを有効にし、OSS-HDFSにアクセスするための権限を取得します。 詳細については、「OSS-HDFSを有効にする」をご参照ください。
手順 2:OSS-HDFSのバケットドメイン名を取得する

手順 3:EMRクラスターでOSS-HDFSを使用する
- EMRクラスターにログオンします。 詳細については、「クラスターへのログオン」をご参照ください。
- OSS-HDFSのディレクトリにHiveテーブルを作成します。
- 次のコマンドを実行して、Hive CLIを開きます。
hive - 次のコマンドを実行して、OSS-HDFSのディレクトリにデータベースを作成します。
CREATE DATABASE if not exists dw LOCATION 'oss://<yourBucketName>.<yourBucketEndpoint>/<path>';説明- コマンドでは、
dwはデータベース名、<path>はランダムなパスを指定し、<yourBucketName>.<yourBucketEndpoint>は 手順 2:OSS-HDFSのバケットドメイン名を取得する で取得したOSS-HDFSのバケットドメイン名を指定します。 - この例では、OSS-HDFSのバケットドメイン名がパスのプレフィックスとして使用されています。 バケット名のみを使用してOSS-HDFSのディレクトリを指す場合は、バケットレベルのエンドポイントまたはグローバルエンドポイントを指定できます。 詳細については、「付録 1:OSS-HDFSのエンドポイントを設定するために使用されるその他の方法」をご参照ください。
- コマンドでは、
- 次のコマンドを実行して、新しいデータベースを使用します。
use dw; - 次のコマンドを実行して、新しいデータベースにHiveテーブルを作成します。
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details'; //従業員の詳細 - 次のコマンドを実行して、テーブルに関する情報をクエリします。
desc formatted employee;次の情報が返されます。Locationパラメーターの値は、HiveテーブルがOSS-HDFSのディレクトリに作成されていることを示しています。# col_name data_type comment eid int name string salary string destination string # Detailed Table Information //詳細なテーブル情報 Database: dw Owner: root CreateTime: Fri May 06 16:40:06 CST 2022 LastAccessTime: UNKNOWN Retention: 0 Location: oss://****.cn-hangzhou.oss-dls.aliyuncs.com/dw/employee Table Type: MANAGED_TABLE
- 次のコマンドを実行して、Hive CLIを開きます。
- Hiveテーブルにデータを挿入します。 次のSQLステートメントを実行して、Hiveテーブルにデータを書き込みます。 EMRジョブが生成されます。
INSERT INTO employee(eid, name, salary, destination) values(1, 'liu hua', '100.0', ''); - Hiveテーブルのデータを確認します。
SELECT * FROM employee WHERE eid = 1;返された情報には、挿入されたデータが含まれています。OK 1 liu hua 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)
EMRクラスターへのアクセス権限の付与
デフォルトロール AliyunECSInstanceForEMRRole がEMRクラスターで使用されていない場合は、EMRクラスターにOSS-HDFSへのアクセス権限を付与する必要があります。
デフォルトロール AliyunECSInstanceForEMRRole がEMRクラスターで使用されている場合は、EMRクラスターにOSS-HDFSへのアクセス権限を付与する必要はありません。 デフォルトでは、ポリシー AliyunECSInstanceForEMRRolePolicy がロールにアタッチされており、ポリシーには oss:PostDataLakeStorageFileOperation 権限が含まれています。