このトピックでは、JindoCache の透過キャッシュ機能を使用して OSS-HDFS へのアクセスを高速化する方法について説明します。E-MapReduce(EMR)クラスターのストレージリソースは、OSS-HDFS オブジェクトをキャッシュするために使用されます。
前提条件
EMR クラスターが作成され、クラスターの作成時に JindoCache が選択されています。詳細については、「クラスターの作成」をご参照ください。
OSS-HDFS が有効になっており、OSS-HDFS へのアクセス権限が許可されています。詳細については、「OSS-HDFS の有効化」をご参照ください。
手順
キャッシュポリシーを選択します。
JindoCache は、CacheSet を使用してさまざまなキャッシュポリシーを管理します。ビジネス要件に基づいて、異なるパスに保存されているデータに対して異なるキャッシュポリシーを選択できます。 JindoCache は、1 つ以上の CacheSet をサポートしています。
クラスターにログオンします。詳細については、「クラスターへのログオン」をご参照ください。
cacheset.xmlファイルを追加します。この例では、
cacheset.xmlファイルは/pathディレクトリに保存されています。<?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>パラメーター
説明
例
name
CacheSet の名前。名前は一意である必要があります。 CacheSet が既に存在する場合、既存の設定は上書きされます。
name1
path
CacheSet を保存する親パス。 CacheSet によって管理されるポリシーは、この親パス以下のサブパス内のデータに使用されます。
oss://emr-test/dir1
cacheStrategy
キャッシュポリシー。有効な値:DISTRIBUTED および DHT。 DHT は Distributed Hash Table の略です。 DHT キャッシュポリシーは、サイズの小さい読み取り専用ファイルへのアクセスを高速化するために使用されます。
ビジネス要件に基づいてポリシーを選択できます。
DISTRIBUTED
metaPolicy
メタデータキャッシュポリシー。有効な値:
ALWAYS:メタデータはキャッシュされず、リモートストレージから読み取られます。
ONCE:メタデータはキャッシュされます。メタデータは、最初にリモートストレージから読み取られた後、常にローカルストレージから読み取られます。
ビジネス要件に基づいてポリシーを選択できます。
説明cacheStrategy パラメーターが DHT に設定されている場合、このパラメーターは ONCE に設定する必要があります。
ALWAYS
readPolicy
ファイルを読み取るためのポリシー。このパラメーターは CACHE_ASIDE のみに設定できます。これは、ファイルが優先的にキャッシュから読み取られることを示します。
CACHE_ASIDE
writePolicy
ファイル書き込みポリシー。有効な値:
WRITE_AROUND:ファイルをリモートストレージに書き込みます。
CACHE_ONLY:ファイルをキャッシュに書き込みます。
説明このパラメーターを CACHE_ONLY に設定する場合、metaPolicy パラメーターを ONCE に設定する必要があります。
WRITE_THROUGH:キャッシュとリモートストレージの両方にファイルを書き込みます。
WRITE_AROUND
次のコマンドを実行して、JindoCache の CacheSet を更新します。
jindocache -refreshCacheSet -path /path/cacheset.xml実行が成功すると、出力には
Successfully refresh cacheset !!!情報が含まれます。 JindoCache 関連コマンドの詳細については、「JindoCache CLI 使用上の注意」をご参照ください。次のコマンドを実行して、システム内の CacheSet に関する情報を表示します。
jindocache -listCacheSet
JindoSDK を設定します。
Hadoop-Common で JindoCache の OSS-HDFS 実装クラスを設定します。 EMR コンソールの [ Hadoop-common ] サービスページの [ 設定 ] タブにある [ Core-site.xml ] タブに移動し、次の表に記載されている設定項目を変更します。詳細については、「設定項目の管理」をご参照ください。
設定項目
説明
fs.xengine
値は jindocache に固定されています。
この設定項目を空のままにすると、クライアントはデータをキャッシュしなくなり、バックエンドと直接通信します。
説明この手順では、設定項目はクライアントで設定されます。設定は、JindoCache を再起動する必要なく有効になります。
上記の設定が完了すると、キャッシュ機能を使用してジョブを実行し、OSS-HDFS にアクセスできます。 JindoCache の透過キャッシュ機能により、ジョブ設定を変更することなく OSS-HDFS にアクセスできます。ジョブを実行して OSS-HDFS からデータを読み取ると、データは自動的に JindoCache にキャッシュされます。その後、同じデータにアクセスすると、キャッシュがヒットし、データ読み取りパフォーマンスが向上します。
FAQ
OSS-HDFS へのアクセスに使用する AccessKey ペアをどのように設定しますか??
JindoCache を使用すると、パスワードなしモードで OSS-HDFS にアクセスできます。アカウント間で OSS-HDFS にアクセスする場合は、AccessKey ID、AccessKey Secret、エンドポイントなどの認証情報を設定する必要があります。
JindoCache サービスページの [ 設定 ] タブにある [ Common ] タブに移動します。
EMR コンソール にログオンします。左側のナビゲーションペインで、[ ECS 上の EMR ] をクリックします。
上部のナビゲーションバーで、クラスターが存在するリージョンとリソースグループをビジネス要件に基づいて選択します。
[ ECS 上の EMR ] ページで、目的のクラスターを見つけ、[ 操作 ] 列の [ サービス ] をクリックします。
[ サービス ] タブで、JindoCache サービスを見つけ、[ 設定 ] をクリックします。
[ 設定 ] タブで、[ Common ] タブをクリックします。
設定項目を追加し、設定を有効にします。
[ common ] タブで、[ 設定項目の追加 ] をクリックします。
構成アイテムを追加 ダイアログボックスで、次の表に記載されている設定項目を追加します。
設定項目を追加して設定を有効にする方法の詳細については、「設定項目の管理」をご参照ください。
説明YYYは、OSS-HDFS が有効になっているバケットの名前を指定します。設定項目
説明
jindocache.oss.bucket.YYY.accessKeyId
OSS-HDFS へのアクセスに使用する AccessKey ID。
jindocache.oss.bucket.YYY.accessKeySecret
OSS-HDFS へのアクセスに使用する AccessKey Secret。
jindocache.oss.bucket.YYY.endpoint
OSS-HDFS のエンドポイント。例: cn-hangzhou.oss-dls.aliyuncs.com。
jindocache.oss.bucket.YYY.data.lake.storage.enable
値は true に固定されています。