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

E-MapReduce:分散 P2P キャッシュ機能を使用したデータのダウンロード

最終更新日:Jan 11, 2025

JindoFSx クライアントのピアツーピア (P2P) キャッシュは、ローカルキャッシュの一種とみなすことができます。元のローカルキャッシュ機能と比較して、P2P キャッシュでは他のクライアントからデータを読み取ることができます。クライアントがローカルキャッシュからデータブロックを要求すると、クライアントは必要なデータを含む他のクライアントから必要なデータをプルします。クライアントが他のクライアントからデータをプルするためのリクエストを送信できない場合、必要なデータはリモートサーバーから、または Security Token Service (STS) トークンを使用して読み取られます。このトピックでは、分散 P2P キャッシュ機能を使用してデータをダウンロードする方法について説明します。

前提条件

EMR V3.42.0 以降のマイナーバージョンのクラスタ、または EMR V5.6.0 以降のマイナーバージョンのクラスタが EMR コンソールで作成され、クラスタの作成時にオプションサービスから JindoData サービスが選択されています。詳細については、「クラスタの作成」をご参照ください。

手順

説明 このトピックでは、EMR V3.42.0 クラスタを使用します。
  1. 手順 1:サーバーの構成
  2. 手順 2:JindoSDK の構成
  3. 手順 3:分散 P2P キャッシュ機能の使用

手順 1:サーバーの構成

  1. JindoData サービスの [共通] タブに移動します。

    1. 上部のナビゲーションバーで、クラスタが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します

    2. [EMR On ECS] ページで、管理するクラスタを見つけ、[アクション] 列の [サービス] をクリックします。

    3. JindoData セクションで [構成] をクリックします。

    4. [共通] タブをクリックします。

  2. 構成項目を追加します。
    1. [共通] タブで、[構成項目の追加] をクリックします。
    2. [構成項目の追加] ダイアログボックスで、次の表に示す構成項目を追加します。

      構成項目を追加する方法の詳細については、「構成項目の追加」トピックの「構成項目の追加」セクションをご参照ください。

      カテゴリパラメータ説明
      サーバーjindofsx.p2p.tracker.thread.numberコーディネーターノードが使用できるスレッドの数。ほとんどの場合、このパラメーターは 1 に設定されます。クライアント数が 1,000 を超える場合は、より大きな値を指定できます。値が 1 未満の場合、分散 P2P キャッシュ機能は無効になります。
      jindofsx.p2p.file.prefixP2P キャッシュ機能を使用してファイルをダウンロードするパスのプレフィックス。複数のファイルパスが含まれている場合は、パスをカンマ (,) で区切ります。ファイルは、パスがプレフィックスのいずれかと一致する場合にのみ、P2P キャッシュ機能を使用してダウンロードされます。アプリケーション層で統合名前空間を使用して JindoFSx にマウントされたパスを使用してデータをダウンロードする場合は、このパラメーターをオブジェクトの実際のパスに設定します。例:oss://bucket1/data-dir1/,oss://bucket2/data-dir2/
      クライアントfs.jindofsx.p2p.cache.capacity.limit分散 P2P キャッシュ機能を使用して実行されるダウンロードが占有できるメモリの最大サイズ。単位:バイト。デフォルトサイズは 5 GB、最小サイズは 1 GB です。
      fs.jindofsx.p2p.download.parallelism.per.fileP2P キャッシュ機能を使用して単一のファイルをダウンロードするときの同時ダウンロード数。たとえば、このパラメーターを 5 に設定できます。
      fs.jindofsx.p2p.download.thread.pool.sizeP2P キャッシュ機能を使用して実行されるダウンロードで使用されるスレッドプールの合計サイズ。たとえば、このパラメーターを 5 に設定できます。
    3. [OK] をクリックします。
    4. [保存] ダイアログボックスで、[実行理由] パラメーターを構成し、[保存] をクリックします。
  3. JindoData サービスを再起動します。

    1. JindoData サービスの [サービス] タブで、[詳細] > [再起動] を選択します。

    2. [JINDODATA サービスの再起動] ダイアログボックスで、実行理由を指定し、[OK] をクリックします。

    3. [確認] メッセージで、[OK] をクリックします。

手順 2:JindoSDK の構成

重要

この手順では、クライアントを構成します。この手順を完了した後、JindoData サービスを再起動する必要はありません。

  1. [構成] タブに移動します。
    1. 上部のナビゲーションバーで、クラスタが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します

    2. [EMR On ECS] ページで、管理するクラスタを見つけ、サービス[アクション] 列の をクリックします。

    3. [サービス] タブで、HADOOP-COMMON セクションの [構成] をクリックします。

    4. [core-site.xml] タブをクリックします。

  2. [core-site.xml] タブで、次の構成項目を変更します。

    構成項目を追加する方法の詳細については、「構成項目の追加」トピックの「構成項目の追加」セクションをご参照ください。構成項目を変更する方法の詳細については、「構成項目の変更」トピックの「構成項目の変更」セクションをご参照ください。

    項目パラメータ説明
    Object Storage Service (OSS) の実装クラスを構成するfs.AbstractFileSystem.oss.impl値を com.aliyun.jindodata.oss.OSS に設定します。
    fs.oss.impl値を com.aliyun.jindodata.oss.JindoOssFileSystem に設定します。
    エンジンの種類を指定するfs.xengine値を jindofsx に設定します。
    JindoFSx 名前空間サービスのエンドポイントを構成するfs.jindofsx.namespace.rpc.address${headerhost}:8101 形式で値を指定します。例:master-1-1:8101。
    説明

    高可用性モードでの名前空間サービスの構成と使用方法の詳細については、「JindoFSx 名前空間サービスを高可用性モードで構成および使用する」をご参照ください。

    クエリ高速化のためのデータキャッシュを構成する
    説明 この機能を有効にすると、ホットデータブロックがローカルディスクにキャッシュされます。デフォルトでは、この機能は無効になっており、OSS/OSS-HDFS からデータを読み取ることができます。
    fs.jindofsx.data.cache.enableクエリ高速化のためのデータキャッシュを有効にするかどうかを指定します。有効な値:
    • false:機能を無効にします。これはデフォルト値です。
    • true:機能を有効にします。
  3. 変更を保存します。
    1. [構成] タブで、[保存] をクリックします。
    2. [保存] ダイアログボックスで、[実行理由] パラメーターを構成し、[構成を自動的に更新] をオンにして、[保存] をクリックします。

手順 3:分散 P2P キャッシュ機能の使用

上記の構成を完了した後、読み取るファイルのパスが jindofsx.p2p.file.prefix パラメーターで指定されたプレフィックスのいずれかと一致する場合、他の API 操作を呼び出すことなく、すべての読み取りリクエストは分散 P2P キャッシュ機能を使用して処理されます。たとえば、Hadoop シェルコマンドを実行して、オンプレミスマシンにファイルをダウンロードできます。ファイルのパスが指定されたプレフィックスのいずれかと一致する場合、分散 P2P キャッシュ機能は自動的に有効になります。

特定のファイルの読み取りリクエストが分散 P2P キャッシュ機能を使用して処理されているかどうかを確認する場合は、ログをクエリして確認できます。プログラムがクライアントで INFO レベルのログを出力する場合、分散 P2P キャッシュ機能を使用して処理される読み取りリクエストに対して次の情報が返されます:
P2P record for path: // パスに対する P2P レコード

上記の情報が存在する場合、ファイルの読み取りリクエストは分散 P2P キャッシュ機能を使用して処理されます。