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 へのアクセス権限が RAM ロールに付与されている必要があります。詳細については、「OSS-HDFS の有効化とアクセス権限の付与」をご参照ください。
Alibaba Cloud アカウント (root ユーザー) は、デフォルトで EMR クラスターを OSS-HDFS に接続し、OSS-HDFS 関連の一般的な操作を実行する権限を持っています。必要な権限が付与された RAM ユーザーが作成されています。RAM ユーザーを使用して EMR クラスターを OSS-HDFS に接続する場合は、その RAM ユーザーに必要な権限が付与されている必要があります。詳細については、「RAM ユーザーに EMR クラスターを OSS-HDFS に接続する権限を付与する」をご参照ください。
背景情報
OSS-HDFSは、クラウドネイティブのデータレイクストレージサービスです。 OSS-HDFSは、統合されたメタデータ管理機能を提供し、HDFS APIと完全に互換性があります。 OSS-HDFSは、Portable Operating System Interface(POSIX)もサポートしています。 OSS-HDFSを使用すると、ビッグデータおよびAI分野のさまざまなデータレイクベースのコンピューティングシナリオでデータを管理できます。 詳細については、「OSS-HDFSとは」をご参照ください。
操作手順
- EMRクラスターにログオンします。 詳細については、「クラスターへのログオン」をご参照ください。
-
OSS-HDFS を参照する Hive テーブルを作成します。
- 次のコマンドを実行して、Hive CLIを開きます。
hive -
次のコマンドを実行して、OSS-HDFS を参照するデータベースを作成します。
CREATE DATABASE if not exists dw LOCATION 'oss://{yourHdfsBucketDomain}/{path}';パラメーターの説明:
-
dw:データベース名。この名前はカスタマイズできます。 -
{path}:データベースを保存する OSS-HDFS 内のパス。このパスはカスタマイズできます。 -
{yourHdfsBucketDomain}:OSS-HDFS サービスのバケットドメイン名。-
エンドポイントを取得するには、OSS コンソールにログインします。 ターゲットバケットに移動します。概要タブのアクセスポートセクションで、OSS-HDFS の完全なバケットエンドポイントをコピーします。
-
説明この例では、パスのプレフィックスとして OSS-HDFS ドメイン名を使用しています。バケット名のみで OSS-HDFS を参照する場合は、バケットレベルのエンドポイントまたはグローバルエンドポイントを設定できます。詳細については、「付録 1: エンドポイントを設定するその他の方法」をご参照ください。
-
- 次のコマンドを実行して、新しいデータベースを使用します。
use dw; - 次のコマンドを実行して、新しいデータベースにHiveテーブルを作成します。
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details'; //従業員の詳細
- 次のコマンドを実行して、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)