すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:EMR HiveまたはSparkでOSS-HDFSを使用する

最終更新日:Jan 11, 2025

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. 手順 1:OSS-HDFSを有効にする
  2. 手順 2:OSS-HDFSのバケットドメイン名を取得する
  3. 手順 3:EMRクラスターでOSS-HDFSを使用する

手順 1:OSS-HDFSを有効にする

OSS-HDFSを有効にし、OSS-HDFSにアクセスするための権限を取得します。 詳細については、「OSS-HDFSを有効にする」をご参照ください。

手順 2:OSS-HDFSのバケットドメイン名を取得する

OSSコンソールのバケットの [概要] ページで、OSS-HDFSのバケットドメイン名を取得します。 バケットドメイン名は、手順 3:EMRクラスターでOSS-HDFSを使用する でHiveテーブルを作成するときに必要です。 HDFS Endpoint

手順 3:EMRクラスターでOSS-HDFSを使用する

説明 このセクションでは、EMR HiveでOSS-HDFSを使用する方法について説明します。 このトピックの手順に従って、EMR SparkでOSS-HDFSを使用することもできます。
  1. EMRクラスターにログオンします。 詳細については、「クラスターへのログオン」をご参照ください。
  2. OSS-HDFSのディレクトリにHiveテーブルを作成します。
    1. 次のコマンドを実行して、Hive CLIを開きます。
      hive
    2. 次のコマンドを実行して、OSS-HDFSのディレクトリにデータベースを作成します。
      CREATE DATABASE if not exists dw LOCATION 'oss://<yourBucketName>.<yourBucketEndpoint>/<path>';
      説明
    3. 次のコマンドを実行して、新しいデータベースを使用します。
      use dw;
    4. 次のコマンドを実行して、新しいデータベースにHiveテーブルを作成します。
      CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String)
      COMMENT 'Employee details'; //従業員の詳細
    5. 次のコマンドを実行して、テーブルに関する情報をクエリします。
      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
  3. Hiveテーブルにデータを挿入します。
    次のSQLステートメントを実行して、Hiveテーブルにデータを書き込みます。 EMRジョブが生成されます。
    INSERT INTO employee(eid, name, salary, destination) values(1, 'liu hua', '100.0', '');
  4. 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 権限が含まれています。