JindoFS は、オブジェクトストレージサービス(OSS)とローカルストレージの利点を組み合わせたクラウドネイティブのファイルシステムです。 JindoFS はまた、E-MapReduce(EMR)のクラウドコンピューティングに効率的で信頼性の高いストレージサービスを提供する次世代ストレージシステムでもあります。 このトピックでは、JindoFS の構成方法と使用方法、およびその使用シナリオについて説明します。
概要
JindoFS は、ブロックストレージモードとキャッシュモードをサポートしています。
JindoFS は、異種マルチバックアップメカニズムを採用しています。 ストレージサービスはデータストレージ機能を提供します。 データは OSS に保存され、高い信頼性が確保されます。 冗長バックアップはローカルクラスターに保存され、読み取り操作が高速化されます。 Namespace Service は JindoFS のメタデータを管理します。 この場合、メタデータは OSS ではなく Namespace Service から照会されるため、クエリのパフォーマンスが向上します。 この JindoFS のクエリ方法は、Hadoop 分散ファイルシステム(HDFS)のクエリ方法に似ています。
- EMR V3.20.0 以降では、JindoFS がサポートされています。 JindoFS を使用するには、EMR クラスターの作成時に関連サービスを選択します。
- このトピックでは、EMR V3.22.0 以降での JindoFS の使用方法について説明します。 EMR V3.20.0~V3.22.0(V3.22.0 を除く)での JindoFS の使用方法の詳細については、「EMR V3.20.0~V3.22.0(V3.22.0 を除く)での JindoFS の使用」をご参照ください。

環境の準備
- EMR クラスターの作成
EMR V3.22.0 以降のバージョンを選択します。 オプションサービスから [smartdata] を選択します。 EMR クラスターの作成方法の詳細については、「クラスターの作成」をご参照ください。

- JindoFS の構成 SmartData が提供する JindoFS は、ストレージバックエンドとして OSS を使用します。 したがって、JindoFS を使用する前に、OSS に関連するパラメーターを構成する必要があります。 EMR は、次の 2 つの構成方法を提供します。 1. EMR クラスターの作成後に Bigboot に関連するパラメーターを変更し、SmartData を再起動して構成を有効にします。 2. EMR クラスターの作成時にカスタム構成を追加します。 この場合、EMR クラスターの作成後、関連サービスはカスタムパラメーターに基づいて再起動されます。
- EMR クラスターの作成後にパラメーターを初期化する
次の図に示すように、Bigboot ですべての 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 説明 JindoFS は、ブロックストレージモードとキャッシュモードをサポートしています。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 のすべてのコンポーネントを再起動します。

- EMR クラスターの作成時にカスタム構成を追加する EMR クラスターの作成時にカスタム構成を追加できます。 AccessKey ペアを使用せずに OSS にアクセスするために、OSS バケットと同じリージョンに EMR クラスターを作成するとします。 次の図に示すように、[カスタムソフトウェア設定] をオンにします。 test 名前空間のパラメーターをカスタマイズするには、次の構成を [詳細設定] セクションのフィールドに追加します。
[ { "ServiceName":"BIGBOOT", // サービス名は BIGBOOT です "FileName":"bigboot", // ファイル名は bigboot です "ConfigKey":"jfs.namespaces","ConfigValue":"test" // 名前空間を test に設定します },{ "ServiceName":"BIGBOOT", // サービス名は BIGBOOT です "FileName":"bigboot", // ファイル名は bigboot です "ConfigKey":"jfs.namespaces.test.uri", "ConfigValue":"oss://oss-bucket/oss-dir" // 名前空間 test の OSS パスを構成します },{ "ServiceName":"BIGBOOT", // サービス名は BIGBOOT です "FileName":"bigboot", // ファイル名は bigboot です "ConfigKey":"jfs.namespaces.test.mode", "ConfigValue":"block" // 名前空間 test のストレージモードを block に設定します } ]
- EMR クラスターの作成後にパラメーターを初期化する
JindoFS の使用
JindoFS の使用方法は HDFS と似ています。 JindoFS もプレフィックスを提供します。 JindoFS を使用するには、hdfs プレフィックスを jfs プレフィックスに置き換えるだけです。
JindoFS は、Hadoop、Hive、Spark、Flink、Presto、Impala など、EMR クラスターのほとんどのコンピューティングコンポーネントをサポートしています。
例:
- シェルコマンドの実行
hadoop fs -ls jfs://your-namespace/ // your-namespace を使用する名前空間に置き換えます hadoop fs -mkdir jfs://your-namespace/test-dir // your-namespace を使用する名前空間に置き換えます hadoop fs -put test.log jfs://your-namespace/test-dir/ // your-namespace を使用する名前空間に置き換えます hadoop fs -get jfs://your-namespace/test-dir/test.log . / // your-namespace を使用する名前空間に置き換えます - MapReduce ジョブの実行
hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar teragen -Dmapred.map.tasks=1000 10737418240 jfs://your-namespace/terasort/input // your-namespace を使用する名前空間に置き換えます hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar terasort -Dmapred.reduce.tasks=1000 jfs://your-namespace/terasort/input jfs://your-namespace/terasort/output // your-namespace を使用する名前空間に置き換えます - Spark SQL テストの実行
CREATE EXTERNAL TABLE IF NOT EXISTS src_jfs (key INT, value STRING) location 'jfs://your-namespace/Spark_sql_test/'; // your-namespace を使用する名前空間に置き換えます
ディスク容量の使用量の制御
JindoFS はデータストレージバックエンドとして OSS を使用するため、大量のデータを保存できます。 ただし、ローカルディスクの容量は限られています。 JindoFS は、ローカルディスクのコールドデータを自動的に削除します。 Alibaba Cloud は、node.data-dirs.watermark.high.ratio パラメーターと node.data-dirs.watermark.low.ratio パラメーターを使用して、ローカルディスクの容量使用量を調整します。 両方のパラメーターの値は 0~1 の範囲で、容量使用率を示します。 JindoFS は、デフォルトですべてのデータディスクの合計ストレージ容量を使用します。 node.data-dirs.watermark.high.ratio パラメーターは、各ディスクの容量使用量の上限を指定します。 JindoFS によって使用される容量が上限に達すると、ディスクに保存されているアクセス頻度の低いデータが解放されます。 node.data-dirs.watermark.low.ratio パラメーターは、各ディスクの容量使用量の下限を指定します。 ディスクの容量使用量が上限に達した後、ディスクの容量使用量が下限に達するまで、アクセス頻度の低いデータが解放されます。 上限と下限を構成して、ディスク容量を調整し、JindoFS に割り当てることができます。 上限が下限よりも大きいことを確認してください。
ストレージポリシーの構成
JindoFS は、さまざまなストレージニーズに対応するために複数のストレージポリシーを提供します。 次の表に、ディレクトリで使用可能な 4 つのストレージポリシーを示します。
| ポリシー | 説明 |
| COLD | データは OSS にのみバックアップがあり、ローカルクラスターにはバックアップがありません。 このポリシーは、コールドデータの保存に適しています。 |
| WARM | デフォルトのストレージポリシー。 データは OSS にバックアップとローカルクラスターにバックアップがあります。 ローカルバックアップは読み取り操作を高速化できます。 |
| HOT | データは OSS にバックアップとローカルクラスターに複数のバックアップがあります。 ローカルバックアップはホットデータの読み取り操作を高速化できます。 |
| TEMP | データはローカルクラスターにのみバックアップがあります。 このポリシーは、一時データの保存に適しています。 ローカルバックアップは、一時データの読み取りおよび書き込み操作を高速化できます。 ただし、これによりデータの信頼性が低下する可能性があります。 |
JindoFS は、ディレクトリのストレージポリシーを構成するためのコマンドラインツール Admin を提供します。 デフォルトのストレージポリシーは WARM です。 新しいファイルは、親ディレクトリに構成されているストレージポリシーに基づいて保存されます。 ストレージポリシーを構成するには、次のコマンドを実行します:
jindo dfsadmin -R -setStoragePolicy [path] [policy] // [path] はディレクトリを指定し、[policy] はストレージポリシーを指定します。 -R オプションは、ディレクトリのすべてのサブディレクトリに同じストレージポリシーを構成するために再帰操作を実行することを指定します。ディレクトリに構成されているストレージポリシーを取得するには、次のコマンドを実行します:
jindo dfsadmin -getStoragePolicy [path] // [path] はディレクトリを指定します。Admin ツールの使用
Admin ツールは、コールドデータをアーカイブするための archive コマンドを提供します。
このコマンドを使用すると、ローカルブロックを明示的にエビクトできます。 Hive がテーブルを日単位でパーティション分割するとします。 パーティション分割されたテーブルで 1 週間前に生成されたデータにアクセスする頻度が低い場合は、定期的にそのデータが保存されているディレクトリで archive コマンドを実行できます。 その後、ローカルクラスターに保存されているバックアップはエビクトされますが、OSS のバックアップは保持されます。
次の archive コマンドを実行します。
jindo dfsadmin -archive [path] // [path] はアーカイブするデータが保存されているディレクトリを指定します。説明 [path] パラメーターは、データをアーカイブするディレクトリを指定します。Admin ツールは、Namespace Service の JindoFS のメタデータを管理するための jindo コマンドを提供します。
jindo dfsadmin [-options] // -options はオプションを指定します。説明jindo dfsadmin --helpコマンドを実行して、ヘルプ情報を取得できます。
- diff コマンドは、ローカルクラスターに保存されているデータと OSS に保存されているデータの違いを表示するために使用されます。
jindo dfsadmin -R -diff [path] // [path] はディレクトリを指定します。 -R オプションは、ディレクトリのすべてのサブディレクトリで再帰操作を実行することを指定します。説明 デフォルトでは、diff コマンドを使用して、ローカルクラスターに保存されているメタデータと[path]パラメーターで指定されたディレクトリのサブディレクトリに保存されているメタデータとの違いを表示できます。-Rオプションは、ローカルクラスターに保存されているメタデータと[path]パラメーターで指定されたディレクトリのすべてのサブディレクトリに保存されているメタデータとを比較するために再帰操作を実行することを指定します。 - sync コマンドは、ローカルクラスターと OSS 間のメタデータを同期するために使用されます。
jindo dfsadmin -R -sync [path] // [path] はメタデータを同期するディレクトリを指定します。 -R オプションは、ディレクトリのすべてのサブディレクトリで再帰操作を実行することを指定します。説明[path]パラメーターは、メタデータを同期するディレクトリを指定します。 デフォルトでは、sync コマンドを使用して、[path]パラメーターで指定されたディレクトリのサブディレクトリのメタデータをローカルクラスターに同期できます。-Rオプションは、[path]パラメーターで指定されたディレクトリのすべてのサブディレクトリのメタデータを同期するために再帰操作を実行することを指定します。