このトピックでは、JindoFS のブロックストレージモードとその使用シナリオについて説明します。
概要
ブロックストレージは、データの読み取りと書き込み、およびメタデータのクエリを実行する最も効率的なモードです。さらに、データローカリティに関連する Hadoop Distributed File System(HDFS)セマンティクスをサポートしています。 JindoFS は、E-MapReduce(EMR)クラスターの外部から JindoFS にアクセスできるように、外部クライアントも提供しています。
JindoFS は、ストレージバックエンドとして Object Storage Service(OSS)を使用します。ブロックストレージモードでは、JindoFS はデータをブロックとして OSS に格納し、Namespace Service を使用してメタデータを管理します。これにより、データの読み取りと書き込み、またはメタデータのクエリを実行する際の高いパフォーマンスが保証されます。
シナリオ
EMR には、EMR OssFileSystem、EMR HDFS、EMR JindoFS の 3 つのストレージシステムがあります。これらのうち、OssFileSystem と JindoFS はデータをクラウドに保存します。次の表は、3 つの EMR ストレージシステムの機能と、Alibaba Cloud OSS の Hadoop サポートを比較したものです。
| 機能 | Alibaba Cloud OSS の Hadoop サポート | E-MapReduce OssFileSystem | E-MapReduce HDFS | E-MapReduce JindoFS |
| ストレージ容量 | 膨大 | 膨大 | EMR クラスターの規模に依存 | 膨大 |
| 信頼性 | 高 | 高 | 高 | 高 |
| スループットに影響を与える要因 | サーバー | EMR クラスターのディスク上のキャッシュの I/O パフォーマンス | EMR クラスターのディスクの I/O パフォーマンス | EMR クラスターのディスクの I/O パフォーマンス |
| メタデータクエリ効率 | 低 | 中 | 高 | 高 |
| スケールアウト操作 | 容易 | 容易 | 容易 | 容易 |
| スケールイン操作 | 容易 | 容易 | ノードの廃止が必要 | 容易 |
| データローカリティ | なし | 弱い | 強い | 中 |
JindoFS のブロックストレージモードには、次の機能があります。
- JindoFS は、OSS をストレージバックエンドとして使用することにより、膨大でスケーラブルなストレージ容量を提供します。ストレージ容量は、EMR クラスターの規模とは無関係です。ローカルクラスターは、必要に応じてスケールインまたはスケールアウトできます。
- JindoFS は、読み取り操作を高速化するために、ローカルクラスターにいくつかのバックアップデータを保存します。これにより、限られたローカルストレージ容量を使用することでスループットが向上します。特に Write Once Read Many(WORM)ソリューションに適しています。
- JindoFS は、HDFS と同様の効率的なメタデータクエリを提供します。 OssFileSystem と比較して、JindoFS はメタデータクエリにかかる時間を大幅に節約します。さらに、JindoFS は、データとメタデータに頻繁にアクセスする場合のシステムの不安定さを回避します。
- JindoFS は、EMR クラスターでジョブが実行されるときに、最大のデータローカリティを保証します。これにより、ネットワーク転送の負荷が軽減され、読み取りパフォーマンスが向上します。
JindoFS の構成
JindoFS に関連するすべてのパラメーターは、次の図に示すように、Bigboot で設定できます。


- 前の図で赤枠で囲まれたパラメーターは必須です。
- JindoFS は複数の名前空間をサポートしています。このトピックでは、test という名前空間を使用します。
| パラメーター | 説明 | 例 |
| jfs.namespaces | JindoFS でサポートされている名前空間。複数の名前空間はコンマ(,)で区切ります。 | test |
| jfs.namespaces.test.uri | test 名前空間のストレージバックエンド。 | oss://oss-bucket/oss-dir
説明 値を OSS バケット内のディレクトリに設定できます。この場合、このディレクトリはルートディレクトリとして機能し、test 名前空間はそこでデータの読み取りと書き込みを行います。 |
| jfs.namespaces.test.mode | test 名前空間のストレージモード。 | block |
| jfs.namespaces.test.oss.access.key | ストレージバックエンドとして機能する OSS バケットにアクセスするために使用される AccessKey ID。 | xxxx
説明 EMR クラスターと同じリージョンおよび同じアカウントにある OSS バケットにデータを保存することをお勧めします。これにより、高パフォーマンスと安定性が確保されます。この場合、OSS バケットは EMR クラスターからのパスワードなしアクセスを許可するため、AccessKey ID と AccessKey シークレットを構成する必要はありません。 |
| jfs.namespaces.test.oss.access.secret | ストレージバックエンドとして機能する OSS バケットにアクセスするために使用される AccessKey シークレット。 |
JindoFS 構成を保存してデプロイします。 JindoFS を使用するには、SmartData で Namespace Service を再起動します。

ストレージポリシーの構成
JindoFS は、さまざまなストレージニーズに対応するために、複数のストレージポリシーを提供しています。次の表に、ディレクトリで使用可能な 4 つのストレージポリシーを示します。
| ポリシー | 説明 |
| COLD | データは OSS にバックアップされますが、ローカルクラスターにはバックアップされません。このポリシーは、コールドデータの保存に適しています。 |
| WARM |
デフォルトのストレージポリシー。 データは OSS にバックアップされ、ローカルクラスターにもバックアップされます。ローカルバックアップにより、読み取り操作が高速化されます。 |
| HOT | データは OSS にバックアップされ、ローカルクラスターには複数のバックアップが作成されます。ローカルバックアップにより、ホットデータの読み取り操作が高速化されます。 |
| TEMP | データはローカルクラスターにバックアップされますが、OSS にはバックアップされません。このポリシーは、一時データの保存に適しています。ローカルバックアップにより、一時データの読み取りおよび書き込み操作が高速化されます。ただし、データの信頼性が低下する可能性があります。 |
JindoFS は、ディレクトリのストレージポリシーを構成するためのコマンドラインツール Admin を提供します。デフォルトのストレージポリシーは WARM です。新しいファイルは、親ディレクトリに構成されているストレージポリシーに基づいて保存されます。ストレージポリシーを構成するには、次のコマンドを実行します。
jindo dfsadmin -R -setStoragePolicy [path] [policy]
ディレクトリに構成されているストレージポリシーを取得するには、次のコマンドを実行します。
jindo dfsadmin -getStoragePolicy [path]
Admin ツールは、コールドデータをアーカイブするための archive コマンドを提供します。
このコマンドを使用すると、ローカルブロックを明示的にエビクトできます。 Hive がテーブルを日ごとにパーティション分割しているとします。パーティション分割されたテーブルで 1 週間前に生成されたデータにアクセスする頻度が低い場合は、定期的に archive コマンドをそのデータを保存するディレクトリで実行できます。その後、ローカルクラスターに保存されているバックアップはエビクトされますが、OSS のバックアップは保持されます。
次の archive コマンドを実行します。
jindo dfsadmin -archive [path]