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

環境の準備
-
クラスターの作成
EMR 3.22.0 以降を選択し、オプションサービスで SmartData を選択します。詳細については、「クラスターの作成」をご参照ください。
-
クラスターの設定
JindoFS は OSS をストレージバックエンドとして使用します。JindoFS を使用する前に、OSS 関連のパラメーターを設定する必要があります。これには 2 つの方法があります。1 つ目の方法は、クラスター作成後に Bigboot のパラメーターを変更する方法です。この変更を有効にするには、SmartData サービスを再起動する必要があります。2 つ目の方法は、クラスター作成時にカスタム設定を追加する方法で、これによりクラスターの準備が完了するとすぐにカスタムパラメーターでサービスを開始できます。
-
クラスター作成後のパラメーターの初期化
次の図に示すように、Bigboot で JindoFS に関連するすべてのパラメーターを設定できます。
-
Service Configuration ページで、[bigboot] タブをクリックします。
jfs.namespaces の値を
testに設定します。 -
Custom Configuration をクリックします。[設定項目の追加] ダイアログボックスで、次の設定項目を追加します。
jfs.namespaces.test.uriをoss://oss-bucket/oss-dirに設定し、jfs.namespaces.test.modeをblockに設定し、対応する OSS の AccessKey ID と AccessKey Secret を設定してから、[OK] をクリックします。
説明-
記載されているパラメーターは必須です。
-
JindoFS は複数の名前空間をサポートしています。このトピックでは、
testを名前空間の例として使用します。
パラメーター
説明
例
jfs.namespaces
現在の JindoFS インスタンスでサポートされている名前空間。複数の名前空間はカンマで区切ります。
test
jfs.namespaces.test.uri
test名前空間のストレージバックエンドの URI。oss://oss-bucket/oss-dir
説明これを OSS バケット内の特定のディレクトリに設定できます。名前空間はこのディレクトリを読み書き操作のルートディレクトリとして使用します。
jfs.namespaces.test.mode
test名前空間のストレージモード。block
説明JindoFS は
blockとcacheのストレージモードをサポートしています。jfs.namespaces.test.oss.access.key
OSS の AccessKey ID。
xxxx
説明最適なパフォーマンスと安定性を得るために、EMR クラスターと同じアカウント、同じリージョンにある OSS バケットを使用することを推奨します。これにより、クラスターは OSS へのパスワードなしのアクセスが可能になり、AccessKey ID と AccessKey Secret を設定する必要がなくなります。
jfs.namespaces.test.oss.access.secret
OSS の AccessKey Secret。
JindoFS の設定を保存してデプロイします。SmartData のすべてのコンポーネントを再起動して JindoFS を使用します。
-
-
クラスター作成時のカスタム設定の追加
EMR クラスターの作成時にカスタム設定を追加できます。たとえば、同じリージョン内の OSS バケットへのパスワードなしのアクセスを有効にするには、ソフトウェアのカスタム設定 を選択し、
test名前空間に次の設定を追加します。[ { "ServiceName":"BIGBOOT", "FileName":"bigboot", "ConfigKey":"jfs.namespaces","ConfigValue":"test" },{ "ServiceName":"BIGBOOT", "FileName":"bigboot", "ConfigKey":"jfs.namespaces.test.uri", "ConfigValue":"oss://oss-bucket/oss-dir" },{ "ServiceName":"BIGBOOT", "FileName":"bigboot", "ConfigKey":"jfs.namespaces.test.mode", "ConfigValue":"block" } ]
-
JindoFS の使用
JindoFS の使用は HDFS の使用と同様です。 JindoFS にはプレフィックスも用意されています。 JindoFS を使用するには、hdfs プレフィックスを jfs プレフィックスに置換するだけです。
JindoFS は、Hadoop、Hive、Spark、Flink、Presto、Impala など、EMR クラスター内のほとんどのコンピューティングコンポーネントをサポートしています。
例:
-
シェルコマンド
hadoop fs -ls jfs://your-namespace/ hadoop fs -mkdir jfs://your-namespace/test-dir hadoop fs -put test.log jfs://your-namespace/test-dir/ hadoop fs -get jfs://your-namespace/test-dir/test.log ./ -
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 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 -
Spark SQL
CREATE EXTERNAL TABLE IF NOT EXISTS src_jfs (key INT, value STRING) location 'jfs://your-namespace/Spark_sql_test/';
ディスク領域のウォーターマーク制御
JindoFS はバックエンドとして OSS を使用して大容量のストレージを提供しますが、ローカルディスク領域は限られています。ローカルディスクの使用率を管理するために、JindoFS は 2 つのウォーターマークパラメーターに基づいてコールドデータのバックアップを自動的に退避させます:node.data-dirs.watermark.high.ratio と node.data-dirs.watermark.low.ratio です。どちらのパラメーターも、総ディスク容量に対する比率 (0 から 1 までの小数) として設定されます。ディスク使用率が高ウォーターマークに達すると、JindoFS は使用レベルが低ウォーターマークに下がるまでデータを退避させます。低ウォーターマークの値は、高ウォーターマークよりも低く設定する必要があります。
ストレージポリシーの設定
JindoFS では、さまざまなストレージのニーズを満たすよう複数のストレージポリシーが提供されています。 次の表は、ディレクトリに使用可能な 4 つのストレージポリシーの一覧です。
|
ポリシー |
説明 |
|
COLD |
データは OSS に 1 つのバックアップのみを持ち、ローカルバックアップはありません。このポリシーはコールドデータの保存に適しています。 |
|
WARM |
デフォルトのストレージポリシー。 データは OSS に 1 つ、ローカルストレージに 1 つのバックアップを持ちます。ローカルバックアップは、後続の読み取り操作を効果的に高速化できます。 |
|
HOT |
データは OSS に 1 つ、ローカルストレージに複数のバックアップを持ちます。このポリシーは、最も頻繁にアクセスされるデータに対してさらなる高速化を提供します。 |
|
TEMP |
データはローカルバックアップを 1 つだけ持ちます。このポリシーは、一時データに対して高性能な読み書きを提供しますが、データの信頼性は低下します。一時データの保存とアクセスに適しています。 |
JindoFS は、ディレクトリのストレージポリシーを設定するためのコマンドラインツール Admin を提供します。デフォルトのストレージポリシーは WARM です。新しいファイルは、親ディレクトリに設定されたストレージポリシーに基づいて保存されます。次のコマンドを実行して、ストレージポリシーを設定します:
jindo dfsadmin -R -setStoragePolicy [path] [policy]
次のコマンドを実行して、ディレクトリに設定されているストレージポリシーを取得します。
jindo dfsadmin -getStoragePolicy [path]
ここで、[path] はポリシーを設定するパスを指定し、-R は指定されたパス配下のすべてのサブディレクトリにポリシーを再帰的に適用することを指定します。
Admin ツールの使用
JindoFS Admin ツールは、archive コマンドと jindo コマンドを提供します。
-
Admin ツールには、コールドデータをアーカイブするためのアーカイブコマンドが用意されています。
このコマンドを使用すると、ローカルブロックを明示的に退避させることができます。Hive がテーブルを日単位でパーティション分割していると仮定します。1 週間前に生成されたパーティションテーブルのデータへのアクセス頻度が低い場合、そのようなデータを保存するディレクトリに対して定期的に archive コマンドを実行できます。すると、ローカルクラスターに保存されているバックアップは退避されますが、OSS のバックアップは保持されます。
次のアーカイブコマンドを実行します。
jindo dfsadmin -archive [path]説明[path] パラメーターは、アーカイブするファイルのディレクトリパスを指定します。
-
Admin ツールは、Namespace Service の JindoFS のメタデータを管理するための jindo コマンドを提供します。
jindo dfsadmin [-options]説明jindo dfsadmin --helpコマンドを実行して、ヘルプ情報を取得できます。
Admin ツールは、キャッシュモード用の diff コマンドと sync コマンドも提供します。
-
diff コマンドは、主にローカルデータとバックエンドストレージシステムのデータとの差分を表示するために使用されます。
jindo dfsadmin -R -diff [path]説明デフォルトでは、このコマンドは指定された
[path]内の直下のサブディレクトリのメタデータを比較します。-Rオプションは、指定された[path]配下のすべてのパスを再帰的に比較します。 -
syncコマンドは、ローカルとバックエンドストレージ間のメタデータを同期します。jindo dfsadmin -R -sync [path]説明[path]パラメーターは同期するパスを指定します。デフォルトでは、[path]の直下のサブディレクトリのメタデータのみが同期されます。-Rオプションは、指定された[path]配下のすべてのパスを再帰的に同期します。