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

E-MapReduce:JindoCache を用いた OSS-HDFS の透過キャッシュ高速化

最終更新日:Mar 27, 2026

OSS-HDFS からの繰り返し読み取りは、アクセスごとにリモート I/O を発生させるため、ジョブのレイテンシーが増加します。JindoCache は OSS-HDFS オブジェクトを EMR クラスターのストレージ上に保存し、以降の読み取りをローカルキャッシュから提供します。初回読み取り後にデータが自動的にキャッシュされるため、Hadoop ジョブは設定変更なしで OSS-HDFS にアクセスできます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

キャッシュの仕組み

JindoCache では、特定の OSS パスにキャッシュポリシーを適用するために CacheSets を使用します。各 CacheSet は親パスを対象とし、そのパス配下のすべてのデータについてメタデータ、読み取り、書き込みの処理方法を制御します。データセットごとのアクセスパターンに応じて、異なるポリシーを持つ 1 つ以上の CacheSet を定義できます。

CacheSet を定義し、JindoSDK を構成した後は、キャッシュ処理が完全に透過的になります。Hadoop ジョブは通常通り OSS-HDFS にアクセスし、JindoCache がキャッシュの登録および検索を自動的に処理します。

手順 1:キャッシュポリシーの定義

cacheset.xml の作成

CacheSet を cacheset.xml ファイルに定義します。以下の例では、異なる OSS パスに対して 2 つの CacheSet を構成しています。

<?xml version="1.0" encoding="UTF-8"?>
<cachesets>
    <cacheset>
        <name>name1</name>
        <path>oss://emr-test/dir1</path>
        <cacheStrategy>DISTRIBUTED</cacheStrategy>
        <metaPolicy>
            <type>ALWAYS</type>
        </metaPolicy>
        <readPolicy>CACHE_ASIDE</readPolicy>
        <writePolicy>WRITE_AROUND</writePolicy>
    </cacheset>
    <cacheset>
        <name>name2</name>
        <path>oss://emr-test/dir2</path>
        <cacheStrategy>DHT</cacheStrategy>
        <metaPolicy>
            <type>ONCE</type>
        </metaPolicy>
        <readPolicy>CACHE_ASIDE</readPolicy>
        <writePolicy>WRITE_AROUND</writePolicy>
    </cacheset>
</cachesets>

各 CacheSet は親パスと一連のポリシーをマッピングします。以下の表に、すべてのパラメーターを示します。

パラメーター説明
nameCacheSet の一意の名前です。同名の CacheSet が既に存在する場合、その構成は上書きされます。name1
path親 OSS パスです。このパス以下のすべてのデータに対してポリシーが適用されます。oss://emr-test/dir1
cacheStrategyキャッシュポリシーです。有効な値は DISTRIBUTED および DHT です。DHT は「distributed hash table(分散ハッシュテーブル)」の略称であり、小規模・読み取り専用ファイルへのアクセスを高速化するために使用されます。DISTRIBUTED
metaPolicyファイルメタデータをローカル記憶域にキャッシュするかどうかを指定します。ALWAYS:メタデータはキャッシュされず、常にリモートストレージから読み込まれます。ONCE:メタデータは一度だけリモートストレージから読み込まれ、その後は常にローカル記憶域から読み込まれます。cacheStrategyDHT の場合は、この値を ONCE に設定してください。ALWAYS
readPolicyファイルの読み取り方法です。CACHE_ASIDE のみが有効です:ファイルは優先的にキャッシュから読み込まれます。CACHE_ASIDE
writePolicy書き込み先を指定します。WRITE_AROUND:ファイルをリモートストレージにのみ書き込みます。WRITE_THROUGH:ファイルをキャッシュとリモートストレージの両方に書き込みます。CACHE_ONLY:ファイルをキャッシュのみに書き込みます。この設定を使用するには、metaPolicyONCE に設定する必要があります。WRITE_AROUND

CacheSet 構成の適用

  1. ご利用のクラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  2. cacheset.xml をクラスター上の任意のディレクトリに保存します。本例では、ファイルのパスは /path/cacheset.xml です。

  3. 以下のコマンドを実行して、CacheSet 構成を JindoCache に読み込みます。

    jindocache -refreshCacheSet -path /path/cacheset.xml

    正常終了時には以下のように表示されます。

    Successfully refresh cacheset !!!

    JindoCache CLI の利用可能なすべてのコマンドについては、「JindoCache CLI 使用ガイド」をご参照ください。

  4. 以下のコマンドを実行して、CacheSet が正しく読み込まれていることを確認します。

    jindocache -listCacheSet

手順 2:JindoSDK の構成

Hadoop-Common 内で OSS-HDFS 実装クラスを設定し、クライアントがトラフィックを JindoCache 経由でルーティングするようにします。EMR コンソールで、core-site.xml タブを開き、Hadoop-Common サービスページの [構成] タブから、以下の構成項目を追加します。詳細については、「設定項目の管理」をご参照ください。

設定項目デフォルト動作
fs.xenginejindocache空欄のままの場合、クライアントはキャッシュを経由せず、OSS-HDFS に直接通信します。

この構成はクライアントレベルで適用され、JindoCache の再起動を伴わずに有効になります。

構成を保存すると、OSS-HDFS から読み取るジョブは初回読み取り時に自動的にキャッシュを登録します。同一データの以降の読み取りは、キャッシュから提供されます。

よくある質問

OSS-HDFS へのクロスアカウントアクセスを構成するには?

デフォルトでは、JindoCache は明示的な認証情報を使用せずに OSS-HDFS にアクセスします(パスワードレスモード)。クロスアカウントアクセスを有効化するには、JindoCache サービスページの common タブに以下の設定項目を追加します。

構成タブを開く手順:

  1. EMR コンソール にログインします。左側ナビゲーションウィンドウで、ECS 上の EMR をクリックします。

  2. 上部ナビゲーションバーで、ご利用のクラスターが配置されているリージョンおよびリソースグループを選択します。

  3. ECS 上の EMR ページで、対象のクラスターを見つけ、[操作] 列の サービス をクリックします。

  4. JindoCache を見つけ、構成 をクリックします。

  5. common タブをクリックします。

設定項目の追加:

設定項目の追加 をクリックし、以下の項目を追加します。YYY は、OSS-HDFS が有効化された OSS バケット名に置き換えてください。構成変更の適用方法については、「設定項目の管理」をご参照ください。

設定項目説明
jindocache.oss.bucket.YYY.accessKeyIdOSS-HDFS へのアクセスに使用する AccessKey ID です。
jindocache.oss.bucket.YYY.accessKeySecretOSS-HDFS へのアクセスに使用する AccessKey Secret です。
jindocache.oss.bucket.YYY.endpointOSS-HDFS のエンドポイントです。例: cn-hangzhou.oss-dls.aliyuncs.com
jindocache.oss.bucket.YYY.data.lake.storage.enabletrue に設定します。