JindoFS のキャッシュモードは、データを Object Storage Service (OSS) にオブジェクトとして保存し、頻繁にアクセスされるファイルをローカルの E-MapReduce (EMR) クラスターのディスクにキャッシュします。これにより、データの移行やファイル形式の変換を行うことなく、ローカルディスクの速度で OSS データの読み書きが可能になります。
キャッシュモードの仕組み
キャッシュモードは、3 段階のライフサイクルに従います:
ロード:JindoFS は、OSS から頻繁にアクセスされるファイルを読み取り、ローカルディスクにキャッシュします。
管理:JindoFS は、キャッシュされたファイルのうちどれがホットデータであるかを自動的に追跡します。ローカルディスクの領域は、設定可能な上限および下限のウォーターマークによって制御されます。
エビクション:ディスク使用率が上限ウォーターマークを超えると、JindoFS は使用率が下限ウォーターマークに達するまでコールドデータを削除 (エビクション) します。
デフォルトでは、ローカルキャッシュは無効になっており、すべての読み取りは直接 OSS に送られます。読み取り負荷の高いワークロードでより低いレイテンシーが必要な場合に有効にしてください。
アクセススキームの選択
キャッシュモードは、OSS にアクセスするための 2 つの方法をサポートしています:
| OSS スキーム | JFS スキーム | |
|---|---|---|
| URI フォーマット | oss://<bucket>/<path> | jfs://<namespace>/<path> |
| 必要な設定 | なし — クラスター作成後すぐに機能します | SmartData での名前空間の設定が必要です |
| OSS クライアントの互換性 | 完全 — 既存のジョブは変更なしで実行されます | URI の更新が必要です |
| 使用するケース | ほとんどのワークロードにおけるデフォルトの選択肢です | 名前空間レベルのアクセス制御や複数のストレージバックエンドが必要な場合 |
JFS スキームを使用する特別な理由がない限り、OSS スキームを使用してください。
OSS スキームでの OSS へのアクセス
追加の設定は不要です。EMR クラスターを作成した後、直接 OSS にアクセスします:
oss://<bucket_name>/<path_of_your_file>この URI フォーマットをすでに使用している既存のジョブは、変更なしで引き続き機能します。
JFS スキームの設定
前提条件
開始する前に、以下を確認してください:
SmartData サービスが有効になっている EMR クラスター
名前空間の設定
Alibaba Cloud E-MapReduce コンソールにログインします。
上部のナビゲーションバーで、クラスターが存在するリージョンを選択します。必要に応じてリソースグループを選択します。
[クラスター管理] タブをクリックします。対象のクラスターを見つけ、[アクション] 列の [詳細] をクリックします。
左側のナビゲーションウィンドウで、[クラスターサービス] > [SmartData] をクリックします。
[設定] タブをクリックします。[サービス設定] セクションで、[bigboot] タブをクリックします。

jfs.namespacesをtestに設定します。JindoFS は複数の名前空間をサポートしています。複数の名前空間名はカンマで区切ります。このトピックでは、
testという名前の名前空間を使用します。[カスタム設定] をクリックします。[設定項目の追加] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 例 jfs.namespaces.test.oss.uritest名前空間の OSS ストレージバックエンド。これを特定のディレクトリまたは OSS バケットのルートディレクトリに設定します。oss://<oss_bucket>/<oss_dir>/jfs.namespaces.test.modeストレージモード。キャッシュモードの場合は cacheに設定します。cache[サービス設定] セクションの右上隅にある [保存] をクリックします。
右上隅の [アクション] ドロップダウンリストから、[Jindo Namespace Service の再起動] を選択します。
サービスが再起動したら、JFS スキームを使用してファイルにアクセスします:
jfs://test/<path_to_your_file>JindoFS は jfs.namespaces.test.oss.uri に基づいて JFS パスを OSS パスにマッピングします。たとえば、jfs://test/hello.txt は oss://<oss_bucket>/<oss_dir>/hello.txt にマッピングされます。
ローカルキャッシュの有効化
デフォルトでは、EMR は OSS から直接データを読み取ります。ローカルキャッシュを有効にすると、ホットデータブロックがローカルディスクに保存され、繰り返し読み取りが高速化されます。
左側のナビゲーションウィンドウで、[クラスターサービス] > [SmartData] をクリックします。[SMARTDATA] ページで、[設定] タブをクリックします。[サービス設定] セクションで、[client] タブをクリックします。
jfs.cache.data-cache.enableを1に設定します。
この変更はクライアント側で即座に有効になります。SmartData サービスを再起動する必要はありません。
ローカルキャッシュを有効にすると、JindoFS は「ディスク領域使用量の制御」で説明されている上限および下限のウォーターマークを使用して、キャッシュデータを自動的に管理します。
ディスク領域使用量の制御
JindoFS は、ローカルディスクの使用率が高い場合にコールドデータを自動的にエビクションします。2 つのパラメーターがエビクションのしきい値を制御します:
| パラメーター | 説明 | デフォルト |
|---|---|---|
storage.watermark.high.ratio | JindoFS データのディスク使用率の上限。使用率がこの比率を超えると、JindoFS はデータのエビクションを開始します。 | 0.4 |
storage.watermark.low.ratio | 下限。JindoFS は、ディスク使用率がこの比率に低下するまでデータのエビクションを続けます。 | 0.2 |
両方のパラメーターは 0 から 1 までの 10 進数を受け入れます。上限の比率は下限の比率よりも大きい必要があります。
ウォーターマーク設定を更新するには:
SmartData の [サービス設定] セクションで、[storage] タブをクリックします。

必要に応じて
storage.watermark.high.ratioとstorage.watermark.low.ratioを更新します。[サービス設定] セクションの右上隅にある [保存] をクリックします。[変更の確認] ダイアログボックスで、説明を入力し、[設定の自動更新] をオンにして、[OK] をクリックします。
右上隅の [アクション] ドロップダウンリストから、[Jindo Storage Service の再起動] を選択します。[クラスターアクティビティ] ダイアログボックスで、必要なパラメーターを指定して [OK] をクリックします。確認メッセージで [OK] をクリックします。
アカウント間またはリージョン間の OSS バケットへのアクセス
ご利用の EMR クラスターと OSS バケットが同じ Alibaba Cloud アカウントと同じリージョンにある場合、AccessKey の設定は不要です。
それ以外の場合 (異なるアカウントまたは異なるリージョン) は、AccessKey ペアとエンドポイントを明示的に設定してください。
OSS スキーム
左側のナビゲーションウィンドウで、[クラスターサービス] > [SmartData] をクリックします。[SMARTDATA] ページで、[設定] タブをクリックします。[サービス設定] セクションで、[smartdata-site] タブをクリックします。
[カスタム設定] をクリックします。[設定項目の追加] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 fs.jfs.cache.oss-accessKeyIdOSS バケットの AccessKey ID。 fs.jfs.cache.oss-accessKeySecretOSS バケットの AccessKey Secret。 fs.jfs.cache.oss-endpointOSS バケットのエンドポイント。
JFS スキーム
左側のナビゲーションウィンドウで、[クラスターサービス] > [SmartData] をクリックします。[SMARTDATA] ページで、[設定] タブをクリックします。[サービス設定] セクションで、[bigboot] タブをクリックします。
jfs.namespacesをtestに設定します。[カスタム設定] をクリックします。[設定項目の追加] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 jfs.namespaces.test.oss.uriOSS ストレージバックエンドの URI。URI にエンドポイントを含めます。例: oss://<oss_bucket.endpoint>/<oss_dir>。jfs.namespaces.test.oss.access.keyOSS バケットの AccessKey ID。 jfs.namespaces.test.oss.access.secretOSS バケットの AccessKey Secret。
詳細設定
以下のパラメーターは、キャッシュのパフォーマンスを調整します。変更はクライアント側で即座に有効になり、サービスの再起動は不要です。
クライアント タブ([サービス設定] セクション内):
| パラメーター | 説明 | デフォルト |
|---|---|---|
client.oss.upload.threads | データ書き込みストリームあたりの OSS アップロードスレッド数。 | 4 |
client.oss.upload.max.parallelism | プロセスあたりの最大同時 OSS アップロードスレッド数。この上限により、アップロードスレッドが過剰な帯域幅とメモリを消費するのを防ぎます。 | 16 |
[smartdata-site] タブ ([サービス設定] セクション内):
| パラメーター | 説明 | デフォルト |
|---|---|---|
fs.jfs.cache.copy.simple.max.byte | 名前の変更操作のファイルサイズのしきい値。この値より小さいファイルは共通のコピーインターフェイスを使用し、大きいファイルはパフォーマンス向上のためにマルチパートコピーを使用します。OSS 高速コピーが有効な場合は、-1 に設定してすべてのファイルに共通のコピーインターフェイスを使用し、最適な名前変更パフォーマンスを得ます。 | — |
fs.jfs.cache.write.buffer.size | データ書き込みストリームのバッファーサイズ (バイト単位)。2 のべき乗である必要があります。最大値:8388608 (8 MB)。書き込みストリームがメモリを過剰に消費する場合は、この値を減らしてください。 | 1048576 |
fs.oss.committer.magic.enabled | Jindo Job Committer を有効にします。これにより、名前の変更操作なしでジョブをコミットし、コミットパフォーマンスを向上させます。キャッシュモードでは、OSS の名前変更パフォーマンスが標準より低いため、Jindo Job Committer が推奨されるコミッターです。 | true |