JindoFS の Namespace Service は、さまざまなメタデータストレージバックエンドをサポートしています。デフォルトでは、RocksDB が使用されます。このトピックでは、RocksDB をメタデータストレージバックエンドとして構成する方法について説明します。
背景情報
RocksDB は高可用性モードで構成できません。メタデータストレージバックエンドを高可用性モードで構成する必要がある場合は、Raft インスタンスを使用することをお勧めします。詳細については、「Raft-RocksDB-Tablestore を使用してメタデータを保存する」をご参照ください。次の図は、Namespace Service の単一の RocksDB インスタンスの構造を示しています。

RocksDB をメタデータストレージバックエンドとして構成する
- SmartData サービスに移動します。
- Alibaba Cloud EMR コンソール にログインします。
- 上部のナビゲーションバーで、クラスターが存在するリージョンを選択します。必要に応じてリソースグループを選択します。デフォルトでは、アカウントのすべてのリソースが表示されます。
- [クラスター管理] タブをクリックします。
- 表示される [クラスター管理] ページで、ターゲットクラスターを見つけ、[アクション] 列の [詳細] をクリックします。
- 左側のナビゲーションペインで、[クラスターサービス] をクリックし、次に [smartdata] をクリックします。
- Alibaba Cloud EMR コンソール にログインします。
- SmartData サービスの [namespace] タブに移動します。
- [構成] タブをクリックします。
- [サービス構成] セクションの [namespace] タブをクリックします。

- [namespace.backend.type] を [rocksdb] に設定します。
- 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
- 右上隅にある Jindo Namespace Serviceの再起動[アクション] ドロップダウンリストから を選択します。
- オプション:Tablestore インスタンスをリモート非同期ストレージバックエンドとして構成します。
EMR クラスターを Tablestore インスタンスにバインドし、Tablestore インスタンスを JindoFS の Namespace Service の追加ストレージメディアとして使用できます。EMR は、ローカルの RocksDB から Tablestore インスタンスにメタデータをリアルタイムで非同期的にアップロードします。
[namespace] タブで、次の表に示すパラメーターを構成します。パラメーター 説明 例 [namespace.ots.instance] Tablestore インスタンスの名前。 emr-jfs [namespace.ots.accesskey] Tablestore インスタンスへのアクセスに使用される AccessKey ID。 kkkkkk [namespace.ots.accesssecret] Tablestore インスタンスへのアクセスに使用される AccessKey シークレット。 XXXXXX [namespace.ots.endpoint] Tablestore インスタンスのエンドポイント。VPC エンドポイントを使用することをお勧めします。 http://emr-jfs.cn-hangzhou.vpc.tablestore.aliyuncs.com [namespace.backend.rocksdb.async.ots.enabled] Tablestore への非同期アップロードを有効にするかどうかを指定します。有効な値: - true
- false
このパラメーターを true に設定します。SmartData サービスの初期化が完了していないことを確認してください。説明 初期化が完了している場合、メタデータがローカルの RocksDB に既に生成されているため、設定は有効になりません。true - 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
- 右上隅にある すべてのコンポーネントを開始 ドロップダウンリストから を選択します。
Tablestore インスタンスからメタデータをリカバリする
EMR クラスターのリモート非同期ストレージバックエンドとして Tablestore インスタンスを構成した場合、JindoFS メタデータの完全なレプリカが Tablestore インスタンスに保存されます。EMR クラスターを停止またはリリースした後、Tablestore インスタンスから新しい EMR クラスターに JindoFS メタデータをリカバリできます。このようにして、新しい EMR クラスターから元のファイルにアクセスできます。
- リカバリの準備をします。
- オプション:元の EMR クラスターのメタデータ統計を収集します。メタデータ統計は、ファイルとフォルダーの数を示します。
次のような情報が返されます:hadoop fs -count jfs://test/1596 1482809 25 jfs://test/フォルダー数は 1596 で、ファイル数は 1,482,809 です。
- 元の EMR クラスターで実行されているジョブを停止します。EMR がクラスターのすべてのメタデータを Tablestore インスタンスに同期するまで、30 ~ 120 秒待つ必要がある場合があります。次のコマンドを実行して、メタデータの状態を表示します。コマンド出力に
_synced=1が含まれている場合、最新のメタデータは Tablestore インスタンスに同期されています。
次の図に示すような情報が返されます。jindo jfs -metaStatus
- 元の EMR クラスターを停止またはリリースし、Tablestore インスタンスにアクセスしているクラスターがないことを確認します。
- オプション:元の EMR クラスターのメタデータ統計を収集します。メタデータ統計は、ファイルとフォルダーの数を示します。
- EMR クラスターを作成します。Tablestore インスタンスと同じリージョンに存在する EMR クラスターを作成します。すべての SmartData コンポーネントを一時停止します。
- メタデータリカバリのパラメーターを構成します。[namespace] タブで、次の表に示すパラメーターを構成します。
パラメーター 説明 必須値 [namespace.backend.rocksdb.async.ots.enabled] Tablestore への非同期アップロードを有効にするかどうかを指定します。有効な値: - true
- false
false [namespace.backend.rocksdb.recovery.mode] Tablestore からのメタデータリカバリを有効にするかどうかを指定します。有効な値: - true
- false
true - 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
- 右上隅にある すべてのコンポーネントを開始 ドロップダウンリストから を選択します。
- 新しい EMR クラスターの SmartData サービスがアクティブ化されると、EMR は Tablestore インスタンスからローカルの Raft-RocksDB にメタデータを自動的にリカバリします。次のコマンドを実行して、リカバリの進捗状況を表示できます。
jindo jfs -metaStatus状態が FINISH の場合、リカバリは完了です。次の図を参照してください。
- オプション:新しい EMR クラスターのファイルとフォルダーの数が、元の EMR クラスターの数と一致するかどうかを確認します。新しい EMR クラスターはリカバリモードであり、読み取り専用です。
# 新しい EMR クラスターのファイルとフォルダーの数をカウントします。結果は元の EMR クラスターの結果と一致します。 [hadoop@emr-header-1 ~]$ hadoop fs -count jfs://test/ 1596 1482809 25 jfs://test/ # CAT または GET コマンドを使用して、ファイルからデータを読み取ります。 [hadoop@emr-header-1 ~]$ hadoop fs -cat jfs://test/testfile this is a test file # ファイルディレクトリを表示します。 [hadoop@emr-header-1 ~]$ hadoop fs -ls jfs://test/ Found 3 items drwxrwxr-x - root root 0 2020-03-25 14:54 jfs://test/emr-header-1.cluster-50087 -rw-r----- 1 hadoop hadoop 5 2020-03-25 14:50 jfs://test/haha-12096RANDOM.txt -rw-r----- 1 hadoop hadoop 20 2020-03-25 15:07 jfs://test/testfile # ファイルを削除します。読み取り専用エラーが返されます。 [hadoop@emr-header-1 ~]$ hadoop fs -rm jfs://test/testfile java.io.IOException: ErrorCode : 25021 , ErrorMsg: Namespace is under recovery mode, and is read-only. - Tablestore への非同期アップロードを有効にし、Tablestore からのリカバリを無効にします。[namespace] タブで、次の表に示すパラメーターを構成します。
パラメーター 説明 必須値 [namespace.backend.rocksdb.async.ots.enabled] Tablestore への非同期アップロードを有効にするかどうかを指定します。有効な値: - true
- false
true [namespace.backend.rocksdb.recovery.mode] Tablestore からのメタデータリカバリを有効にするかどうかを指定します。有効な値: - true
- false
false - 新しい EMR クラスターを再起動します。
- [クラスター管理] タブをクリックします。
- [クラスター管理] ページで、クラスターを見つけます。このクラスターの [アクション] 列で、[詳細] をクリックし、 を選択します。
- [クラスター管理] タブをクリックします。